Strange numbers: Difference between revisions
Content added Content deleted
(Added Sidef) |
|||
Line 1,104: | Line 1,104: | ||
0.014545 seconds (139 allocations: 13.298 MiB, 29.39% gc time) |
0.014545 seconds (139 allocations: 13.298 MiB, 29.39% gc time) |
||
</pre> |
</pre> |
||
=={{header|Kotlin}}== |
|||
{{trans|Java}} |
|||
<lang scala>import kotlin.math.abs |
|||
fun digits(n: Int): List<Int> { |
|||
var nn = n |
|||
val result = mutableListOf<Int>() |
|||
while (nn > 0) { |
|||
val rem = nn % 10 |
|||
result.add(0, rem) |
|||
nn /= 10 |
|||
} |
|||
return result |
|||
} |
|||
fun isStrange(n: Int): Boolean { |
|||
val test = { a: Int, b: Int -> |
|||
val abs = abs(a - b) |
|||
abs == 2 || abs == 3 || abs == 5 || abs == 7 |
|||
} |
|||
val xs = digits(n) |
|||
for (i in 1 until xs.size) { |
|||
if (!test(xs[i - 1], xs[i])) { |
|||
return false |
|||
} |
|||
} |
|||
return true |
|||
} |
|||
fun main() { |
|||
val xs = (100 until 500) |
|||
.filter(::isStrange) |
|||
.toList() |
|||
println("Strange numbers in range [100..500]") |
|||
println("(Total: ${xs.size})") |
|||
println() |
|||
for (i in xs.indices) { |
|||
val x = xs[i] |
|||
print(x) |
|||
if ((i + 1) % 10 == 0) { |
|||
println() |
|||
} else { |
|||
print(' ') |
|||
} |
|||
} |
|||
println() |
|||
}</lang> |
|||
{{out}} |
|||
<pre>Strange numbers in range [100..500] |
|||
(Total: 87) |
|||
130 131 135 136 138 141 142 146 147 149 |
|||
161 163 164 168 169 181 183 185 186 202 |
|||
203 205 207 241 242 246 247 249 250 252 |
|||
253 257 258 270 272 274 275 279 292 294 |
|||
296 297 302 303 305 307 313 314 316 318 |
|||
350 352 353 357 358 361 363 364 368 369 |
|||
381 383 385 386 413 414 416 418 420 424 |
|||
425 427 429 461 463 464 468 469 470 472 |
|||
474 475 479 492 494 496 497 </pre> |
|||
=={{header|MAD}}== |
=={{header|MAD}}== |