Strange numbers: Difference between revisions
Content added Content deleted
Alextretyak (talk | contribs) (Added 11l) |
|||
Line 629: | Line 629: | ||
425 427 429 461 463 464 468 469 470 472 |
425 427 429 461 463 464 468 469 470 472 |
||
474 475 479 492 494 496 497</pre> |
474 475 479 492 494 496 497</pre> |
||
=={{header|Java}}== |
|||
{{trans|Python}} |
|||
<lang Java>import java.util.LinkedList; |
|||
import java.util.List; |
|||
import java.util.function.BiPredicate; |
|||
import java.util.stream.Collectors; |
|||
import java.util.stream.IntStream; |
|||
public class StrangeNumbers { |
|||
private static List<Integer> digits(int n) { |
|||
var result = new LinkedList<Integer>(); |
|||
while (n > 0) { |
|||
var rem = n % 10; |
|||
result.addFirst(rem); |
|||
n /= 10; |
|||
} |
|||
return result; |
|||
} |
|||
private static boolean isStrange(int n) { |
|||
BiPredicate<Integer, Integer> test = (a, b) -> { |
|||
var abs = Math.abs(a - b); |
|||
return abs == 2 || abs == 3 || abs == 5 || abs == 7; |
|||
}; |
|||
var xs = digits(n); |
|||
for (int i = 1; i < xs.size(); i++) { |
|||
if (test.negate().test(xs.get(i - 1), xs.get(i))) { |
|||
return false; |
|||
} |
|||
} |
|||
return true; |
|||
} |
|||
public static void main(String[] args) { |
|||
var xs = IntStream.rangeClosed(100, 500) |
|||
.filter(StrangeNumbers::isStrange) |
|||
.boxed() |
|||
.collect(Collectors.toList()); |
|||
System.out.println("Strange numbers in range [100..500]"); |
|||
System.out.printf("(Total: %d)\n\n", xs.size()); |
|||
for (int i = 0; i < xs.size(); i++) { |
|||
Integer x = xs.get(i); |
|||
System.out.print(x); |
|||
if ((i + 1) % 10 == 0) { |
|||
System.out.println(); |
|||
} else { |
|||
System.out.print(' '); |
|||
} |
|||
} |
|||
} |
|||
}</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|Julia}}== |
=={{header|Julia}}== |