Strange numbers: Difference between revisions
Content added Content deleted
(added Raku programming solution) |
|||
Line 2: | Line 2: | ||
n is a '''strange number''' if every adjacent digit differs from its neighbour by prime number. |
n is a '''strange number''' if every adjacent digit differs from its neighbour by prime number. |
||
<br> Let 100<n<500 |
<br> Let 100<n<500 |
||
=={{header|Raku}}== |
|||
<lang perl6># 20210222 Raku programming solution |
|||
sub infix:<′>(\x,\y) { abs(x -y) ∈ [2, 3, 5, 7] ?? True !! False } |
|||
for (101..499) { .say if so all .comb.rotor(2 => -1).map: { @_[0] ′ @_[1] } }</lang> |
|||
{{out}} |
|||
<pre>./strange.raku | wc |
|||
87 87 348</pre> |
|||
=={{header|Ring}}== |
=={{header|Ring}}== |
Revision as of 16:56, 22 February 2021
Strange numbers is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.
n is a strange number if every adjacent digit differs from its neighbour by prime number.
Let 100<n<500
Raku
<lang perl6># 20210222 Raku programming solution
sub infix:<′>(\x,\y) { abs(x -y) ∈ [2, 3, 5, 7] ?? True !! False }
for (101..499) { .say if so all .comb.rotor(2 => -1).map: { @_[0] ′ @_[1] } }</lang>
- Output:
./strange.raku | wc 87 87 348
Ring
<lang ring> load "stdlib.ring"
row = 0 see "Strange numbers are:"
for n = 100 to 500
flag = 1 str = string(n) for m = 1 to len(str)-1 num1 = number(str[m]) num2 = number(str[m+1]) pr = fabs(num1-num2) if not isprime(pr) flag = 0 exit ok next if flag = 1 row = row + 1 if (row-1) % 11 = 0 see nl else see " " + str ok ok
next </lang>
- Output:
Strange numbers are: 131 135 136 138 141 142 146 147 149 161 164 168 169 181 183 185 186 202 203 205 241 242 246 247 249 250 252 253 257 258 272 274 275 279 292 294 296 297 302 303 307 313 314 316 318 350 352 353 357 358 363 364 368 369 381 383 385 386 413 414 418 420 424 425 427 429 461 463 464 468 470 472 474 475 479 492 494 496 497
Wren
<lang ecmascript>var primes = [2, 3, 5, 7] var count = 0 var d = [] System.print("Strange numbers in the open interval (100, 500) are:\n") for (i in 101..499) {
d.clear() var j = i while (j > 0) { d.add(j % 10) j = (j/10).floor } if (primes.contains((d[0] - d[1]).abs) && primes.contains((d[1] - d[2]).abs)) { System.write("%(i) ") count = count + 1 if (count % 10 == 0) System.print() }
} if (count % 10 != 0) System.print() System.print("\n%(count) strange numbers in all.")</lang>
- Output:
Strange numbers in the open interval (100, 500) are: 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 87 strange numbers in all.