aboutsummaryrefslogtreecommitdiff
path: root/challenge-157
diff options
context:
space:
mode:
authorPaulo Custodio <pauloscustodio@gmail.com>2022-03-25 15:40:41 +0000
committerGitHub <noreply@github.com>2022-03-25 15:40:41 +0000
commit8a2a8fadc9745eee8a1dd1c749f30be1074e58ba (patch)
tree4d502408355459cb3e6059b031fb0cdcf41fba97 /challenge-157
parent9e59d87286797b21859a6451cf082bf89a11425d (diff)
parentc70f7a698bcaba425a069b7c00c92fb51347bdc0 (diff)
downloadperlweeklychallenge-club-8a2a8fadc9745eee8a1dd1c749f30be1074e58ba.tar.gz
perlweeklychallenge-club-8a2a8fadc9745eee8a1dd1c749f30be1074e58ba.tar.bz2
perlweeklychallenge-club-8a2a8fadc9745eee8a1dd1c749f30be1074e58ba.zip
Merge branch 'manwar:master' into master
Diffstat (limited to 'challenge-157')
-rw-r--r--challenge-157/0rir/raku/ch-1.raku27
-rw-r--r--challenge-157/0rir/raku/ch-2.raku98
-rw-r--r--challenge-157/0rir/raku/lib/Odd-Brazilian.rakumod10007
-rw-r--r--challenge-157/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-157/arne-sommer/raku/brazilian-number14
-rwxr-xr-xchallenge-157/arne-sommer/raku/brazilian-number-poly14
-rwxr-xr-xchallenge-157/arne-sommer/raku/brazilian-number-seq17
-rwxr-xr-xchallenge-157/arne-sommer/raku/ch-1.raku12
-rwxr-xr-xchallenge-157/arne-sommer/raku/ch-2.raku14
-rwxr-xr-xchallenge-157/arne-sommer/raku/pythagorean-means12
-rw-r--r--challenge-157/conor-hoekstra/apl/ch-1.apl11
-rw-r--r--challenge-157/conor-hoekstra/bqn/ch-1.bqn11
-rw-r--r--challenge-157/conor-hoekstra/j/ch-1.ijs11
-rw-r--r--challenge-157/dave-jacoby/blog.txt1
-rw-r--r--challenge-157/dave-jacoby/perl/ch-1.pl46
-rw-r--r--challenge-157/dave-jacoby/perl/ch-2.pl61
-rw-r--r--challenge-157/mark-anderson/raku/ch-2.raku42
-rw-r--r--challenge-157/polettix/blog.txt1
-rw-r--r--challenge-157/polettix/blog1.txt1
-rw-r--r--challenge-157/polettix/perl/ch-1.pl20
-rw-r--r--challenge-157/polettix/perl/ch-2.pl39
-rw-r--r--challenge-157/polettix/perl/cpanfile2
-rw-r--r--challenge-157/polettix/perl/cpanfile.snapshot75
-rw-r--r--challenge-157/polettix/raku/ch-1.raku15
-rw-r--r--challenge-157/polettix/raku/ch-2.raku33
-rw-r--r--challenge-157/robert-dicicco/julia/ch-1.jl37
-rw-r--r--challenge-157/robert-dicicco/julia/ch-2.jl42
-rw-r--r--challenge-157/robert-dicicco/python/ch-1.py52
-rw-r--r--challenge-157/robert-dicicco/python/ch-2.py61
-rw-r--r--challenge-157/robert-dicicco/tcl/ch-1.tcl33
-rw-r--r--challenge-157/roger-bell-west/blog.txt1
31 files changed, 10719 insertions, 92 deletions
diff --git a/challenge-157/0rir/raku/ch-1.raku b/challenge-157/0rir/raku/ch-1.raku
new file mode 100644
index 0000000000..2643214740
--- /dev/null
+++ b/challenge-157/0rir/raku/ch-1.raku
@@ -0,0 +1,27 @@
+#!/usr/bin/env raku
+# :vim ft=raku sw=4 expandtabs
+use v6.d;
+use Math::Root;
+
+=begin comment
+TASK #1 › Pythagorean Means
+Arithmetic Mean, Geometric Mean and Harmonic Mean
+Disputing 1st GM value.
+=end comment
+
+constant $scale = 1;
+
+my @input = (1,3,5,6,9), (2,4,6,8,10), (1,2,3,4,5);
+my @exp = "AM = 4.8, GM = 3.8, HM = 2.8", # NOTE: 3.8 not 3.9
+ "AM = 6.0, GM = 5.2, HM = 4.4",
+ "AM = 3.0, GM = 2.6, HM = 2.2";
+
+for @input -> @n {
+ my $n = @n.elems;
+ say 'Input: @n = ', @n.raku;
+ printf "AM = %.{$scale}f, GM = %.{$scale}f, HM = %.{$scale}f\n\n",
+ ([+] @n) / $n,
+ root( abs( [×] @n).Rat, $n),
+ $n ÷ ([+] map { 1 ÷ $_ }, @n);
+}
+
diff --git a/challenge-157/0rir/raku/ch-2.raku b/challenge-157/0rir/raku/ch-2.raku
new file mode 100644
index 0000000000..6e933867fb
--- /dev/null
+++ b/challenge-157/0rir/raku/ch-2.raku
@@ -0,0 +1,98 @@
+#!/usr/bin/env raku
+# :vim ft=raku sw=4 expandtabs
+use v6.d;
+use Test;
+use lib $?FILE.IO.parent(1).add("lib");
+use Odd-Brazilian;
+
+# ~TASK #2 › Brazilian Number
+
+constant TEST = False;
+
+my $EXPLAIN = True; # Justify answers
+my @Justify; # Ephemeral support for explanation
+
+if TEST {
+ $EXPLAIN = False;
+ plan 10 + 2;
+ for 4, 7, 8, 25, 36, 37, 151, 153, 25_611, 1_000_002 -> $n {
+ my $exp = check-brazilian($n);
+ is is-brazilian($n), $exp, "brazilian";
+ }
+ dies-ok { check-brazilian(25_613) }, "Limit of testing";
+ dies-ok { check-brazilian(3) }, "Limit of testing";
+ exit;
+}
+
+sub MAIN( $n where $n > 3 = 25613 ) {
+ $EXPLAIN = True;
+ my $boo = is-brazilian($n);
+ say "Input: \$n = $n\n"
+ ~ "Output: $boo.Int()\n"
+ ~ "\n" ~ _consume-data( $boo);
+}
+
+sub is-brazilian( $n , Bool :$EXPLAIN --> Bool ) {
+ for 2...$n-2 -> $base {
+ if $base < 37 {
+ my $base-num = $n.base( $base);
+ return True if is-repdigit( $n, $base-num, $base);
+ }
+ if $base ≥ 37 {
+ my @base-num;
+ my $balance = $n;
+ while $balance > $base {
+ my $rem = $balance % $base;
+ @base-num.unshift: $rem;
+ $balance = Int($balance / $base);
+ }
+ @base-num.unshift($balance) if $balance > 0;
+ return True if is-repdigit( $n, @base-num, $base);
+ }
+ }
+ return False;
+}
+
+multi sub is-repdigit ( Int $n, Str $base-num, Int $base --> Bool ) {
+ my $f = $base-num.substr( 0, 1);
+ my $ret = Bool($base-num ~~ / ^ $f + $ /);
+ @Justify.push: [ $n, $base-num, $base, $ret] if $EXPLAIN;
+ $ret;
+}
+
+multi sub is-repdigit ( Int $n, @base-num, Int $base --> Bool ) {
+ my $ret = so @base-num.all == @base-num[0];
+ @Justify.push: [ $n, @base-num, $base, $ret] if $EXPLAIN;;
+ $ret;
+}
+
+# TODOable: more is-repdigit w/o storing @Justify; flag or no 1st Int
+
+sub check-brazilian( $n ) {
+ die "Err domain: $n" if $n < 4 or ( $n > $test-limit and not $n %% 2);
+ return True if ( %odd-brazilian{"$n"}:exists )
+ or ( ($n %% 2) and ($n ≥ 8) );
+ return False;
+}
+
+enum Idx ( :num(0), :base-num(1), :base(2), :is-BRA(3) );
+sub _consume-data ( Bool $is-bra --> Str ) {
+ if $is-bra {
+ my $e = @Justify.first: { $_[is-BRA] };
+ return "Since $e[num] in base $e[base] is $e[base-num].gist().";
+ }
+
+ my $ret; # gather???
+ for 0 .. @Justify.end -> $i {
+
+ $ret ~= $i == 0 ?? "Since " !! " " x 6;
+
+ $ret ~= "@Justify[$i][num] in base @Justify[$i][base]"
+ ~ " is @Justify[$i][base-num].gist()";
+
+ $ret ~= ",\n" if $i ≤ @Justify.end -2;
+ $ret ~= " and\n" if $i == @Justify.end -1;
+ $ret ~= ".\n" if $i == @Justify.end;
+ }
+ return $ret;
+}
diff --git a/challenge-157/0rir/raku/lib/Odd-Brazilian.rakumod b/challenge-157/0rir/raku/lib/Odd-Brazilian.rakumod
new file mode 100644
index 0000000000..67505908e3
--- /dev/null
+++ b/challenge-157/0rir/raku/lib/Odd-Brazilian.rakumod
@@ -0,0 +1,10007 @@
+use v6;
+unit module Odd-Brazilian;
+
+our $test-limit is export = 25611;
+our %odd-brazilian is export =
+ 7 => 1,
+ 13 => 1,
+ 15 => 1,
+ 21 => 1,
+ 27 => 1,
+ 31 => 1,
+ 33 => 1,
+ 35 => 1,
+ 39 => 1,
+ 43 => 1,
+ 45 => 1,
+ 51 => 1,
+ 55 => 1,
+ 57 => 1,
+ 63 => 1,
+ 65 => 1,
+ 69 => 1,
+ 73 => 1,
+ 75 => 1,
+ 77 => 1,
+ 81 => 1,
+ 85 => 1,
+ 87 => 1,
+ 91 => 1,
+ 93 => 1,
+ 95 => 1,
+ 99 => 1,
+ 105 => 1,
+ 111 => 1,
+ 115 => 1,
+ 117 => 1,
+ 119 => 1,
+ 121 => 1,
+ 123 => 1,
+ 125 => 1,
+ 127 => 1,
+ 129 => 1,
+ 133 => 1,
+ 135 => 1,
+ 141 => 1,
+ 143 => 1,
+ 145 => 1,
+ 147 => 1,
+ 153 => 1,
+ 155 => 1,
+ 157 => 1,
+ 159 => 1,
+ 161 => 1,
+ 165 => 1,
+ 171 => 1,
+ 175 => 1,
+ 177 => 1,
+ 183 => 1,
+ 185 => 1,
+ 187 => 1,
+ 189 => 1,
+ 195 => 1,
+ 201 => 1,
+ 203 => 1,
+ 205 => 1,
+ 207 => 1,
+ 209 => 1,
+ 211 => 1,
+ 213 => 1,
+ 215 => 1,
+ 217 => 1,
+ 219 => 1,
+ 221 => 1,
+ 225 => 1,
+ 231 => 1,
+ 235 => 1,
+ 237 => 1,
+ 241 => 1,
+ 243 => 1,
+ 245 => 1,
+ 247 => 1,
+ 249 => 1,
+ 253 => 1,
+ 255 => 1,
+ 259 => 1,
+ 261 => 1,
+ 265 => 1,
+ 267 => 1,
+ 273 => 1,
+ 275 => 1,
+ 279 => 1,
+ 285 => 1,
+ 287 => 1,
+ 291 => 1,
+ 295 => 1,
+ 297 => 1,
+ 299 => 1,
+ 301 => 1,
+ 303 => 1,
+ 305 => 1,
+ 307 => 1,
+ 309 => 1,
+ 315 => 1,
+ 319 => 1,
+ 321 => 1,
+ 323 => 1,
+ 325 => 1,
+ 327 => 1,
+ 329 => 1,
+ 333 => 1,
+ 335 => 1,
+ 339 => 1,
+ 341 => 1,
+ 343 => 1,
+ 345 => 1,
+ 351 => 1,
+ 355 => 1,
+ 357 => 1,
+ 363 => 1,
+ 365 => 1,
+ 369 => 1,
+ 371 => 1,
+ 375 => 1,
+ 377 => 1,
+ 381 => 1,
+ 385 => 1,
+ 387 => 1,
+ 391 => 1,
+ 393 => 1,
+ 395 => 1,
+ 399 => 1,
+ 403 => 1,
+ 405 => 1,
+ 407 => 1,
+ 411 => 1,
+ 413 => 1,
+ 415 => 1,
+ 417 => 1,
+ 421 => 1,
+ 423 => 1,
+ 425 => 1,
+ 427 => 1,
+ 429 => 1,
+ 435 => 1,
+ 437 => 1,
+ 441 => 1,
+ 445 => 1,
+ 447 => 1,
+ 451 => 1,
+ 453 => 1,
+ 455 => 1,
+ 459 => 1,
+ 463 => 1,
+ 465 => 1,
+ 469 => 1,
+ 471 => 1,
+ 473 => 1,
+ 475 => 1,
+ 477 => 1,
+ 481 => 1,
+ 483 => 1,
+ 485 => 1,
+ 489 => 1,
+ 493 => 1,
+ 495 => 1,
+ 497 => 1,
+ 501 => 1,
+ 505 => 1,
+ 507 => 1,
+ 511 => 1,
+ 513 => 1,
+ 515 => 1,
+ 517 => 1,
+ 519 => 1,
+ 525 => 1,
+ 527 => 1,
+ 531 => 1,
+ 533 => 1,
+ 535 => 1,
+ 537 => 1,
+ 539 => 1,
+ 543 => 1,
+ 545 => 1,
+ 549 => 1,
+ 551 => 1,
+ 553 => 1,
+ 555 => 1,
+ 559 => 1,
+ 561 => 1,
+ 565 => 1,
+ 567 => 1,
+ 573 => 1,
+ 575 => 1,
+ 579 => 1,
+ 581 => 1,
+ 583 => 1,
+ 585 => 1,
+ 589 => 1,
+ 591 => 1,
+ 595 => 1,
+ 597 => 1,
+ 601 => 1,
+ 603 => 1,
+ 605 => 1,
+ 609 => 1,
+ 611 => 1,
+ 615 => 1,
+ 621 => 1,
+ 623 => 1,
+ 625 => 1,
+ 627 => 1,
+ 629 => 1,
+ 633 => 1,
+ 635 => 1,
+ 637 => 1,
+ 639 => 1,
+ 645 => 1,
+ 649 => 1,
+ 651 => 1,
+ 655 => 1,
+ 657 => 1,
+ 663 => 1,
+ 665 => 1,
+ 667 => 1,
+ 669 => 1,
+ 671 => 1,
+ 675 => 1,
+ 679 => 1,
+ 681 => 1,
+ 685 => 1,
+ 687 => 1,
+ 689 => 1,
+ 693 => 1,
+ 695 => 1,
+ 697 => 1,
+ 699 => 1,
+ 703 => 1,
+ 705 => 1,
+ 707 => 1,
+ 711 => 1,
+ 713 => 1,
+ 715 => 1,
+ 717 => 1,
+ 721 => 1,
+ 723 => 1,
+ 725 => 1,
+ 729 => 1,
+ 731 => 1,
+ 735 => 1,
+ 737 => 1,
+ 741 => 1,
+ 745 => 1,
+ 747 => 1,
+ 749 => 1,
+ 753 => 1,
+ 755 => 1,
+ 757 => 1,
+ 759 => 1,
+ 763 => 1,
+ 765 => 1,
+ 767 => 1,
+ 771 => 1,
+ 775 => 1,
+ 777 => 1,
+ 779 => 1,
+ 781 => 1,
+ 783 => 1,
+ 785 => 1,
+ 789 => 1,
+ 791 => 1,
+ 793 => 1,
+ 795 => 1,
+ 799 => 1,
+ 801 => 1,
+ 803 => 1,
+ 805 => 1,
+ 807 => 1,
+ 813 => 1,
+ 815 => 1,
+ 817 => 1,
+ 819 => 1,
+ 825 => 1,
+ 831 => 1,
+ 833 => 1,
+ 835 => 1,
+ 837 => 1,
+ 843 => 1,
+ 845 => 1,
+ 847 => 1,
+ 849 => 1,
+ 851 => 1,
+ 855 => 1,
+ 861 => 1,
+ 865 => 1,
+ 867 => 1,
+ 869 => 1,
+ 871 => 1,
+ 873 => 1,
+ 875 => 1,
+ 879 => 1,
+ 885 => 1,
+ 889 => 1,
+ 891 => 1,
+ 893 => 1,
+ 895 => 1,
+ 897 => 1,
+ 899 => 1,
+ 901 => 1,
+ 903 => 1,
+ 905 => 1,
+ 909 => 1,
+ 913 => 1,
+ 915 => 1,
+ 917 => 1,
+ 921 => 1,
+ 923 => 1,
+ 925 => 1,
+ 927 => 1,
+ 931 => 1,
+ 933 => 1,
+ 935 => 1,
+ 939 => 1,
+ 943 => 1,
+ 945 => 1,
+ 949 => 1,
+ 951 => 1,
+ 955 => 1,
+ 957 => 1,
+ 959 => 1,
+ 963 => 1,
+ 965 => 1,
+ 969 => 1,
+ 973 => 1,
+ 975 => 1,
+ 979 => 1,
+ 981 => 1,
+ 985 => 1,
+ 987 => 1,
+ 989 => 1,
+ 993 => 1,
+ 995 => 1,
+ 999 => 1,
+ 1001 => 1,
+ 1003 => 1,
+ 1005 => 1,
+ 1007 => 1,
+ 1011 => 1,
+ 1015 => 1,
+ 1017 => 1,
+ 1023 => 1,
+ 1025 => 1,
+ 1027 => 1,
+ 1029 => 1,
+ 1035 => 1,
+ 1037 => 1,
+ 1041 => 1,
+ 1043 => 1,
+ 1045 => 1,
+ 1047 => 1,
+ 1053 => 1,
+ 1055 => 1,
+ 1057 => 1,
+ 1059 => 1,
+ 1065 => 1,
+ 1067 => 1,
+ 1071 => 1,
+ 1073 => 1,
+ 1075 => 1,
+ 1077 => 1,
+ 1079 => 1,
+ 1081 => 1,
+ 1083 => 1,
+ 1085 => 1,
+ 1089 => 1,
+ 1093 => 1,
+ 1095 => 1,
+ 1099 => 1,
+ 1101 => 1,
+ 1105 => 1,
+ 1107 => 1,
+ 1111 => 1,
+ 1113 => 1,
+ 1115 => 1,
+ 1119 => 1,
+ 1121 => 1,
+ 1123 => 1,
+ 1125 => 1,
+ 1127 => 1,
+ 1131 => 1,
+ 1133 => 1,
+ 1135 => 1,
+ 1137 => 1,
+ 1139 => 1,
+ 1141 => 1,
+ 1143 => 1,
+ 1145 => 1,
+ 1147 => 1,
+ 1149 => 1,
+ 1155 => 1,
+ 1157 => 1,
+ 1159 => 1,
+ 1161 => 1,
+ 1165 => 1,
+ 1167 => 1,
+ 1169 => 1,
+ 1173 => 1,
+ 1175 => 1,
+ 1177 => 1,
+ 1179 => 1,
+ 1183 => 1,
+ 1185 => 1,
+ 1189 => 1,
+ 1191 => 1,
+ 1195 => 1,
+ 1197 => 1,
+ 1199 => 1,
+ 1203 => 1,
+ 1205 => 1,
+ 1207 => 1,
+ 1209 => 1,
+ 1211 => 1,
+ 1215 => 1,
+ 1219 => 1,
+ 1221 => 1,
+ 1225 => 1,
+ 1227 => 1,
+ 1233 => 1,
+ 1235 => 1,
+ 1239 => 1,
+ 1241 => 1,
+ 1243 => 1,
+ 1245 => 1,
+ 1247 => 1,
+ 1251 => 1,
+ 1253 => 1,
+ 1255 => 1,
+ 1257 => 1,
+ 1261 => 1,
+ 1263 => 1,
+ 1265 => 1,
+ 1267 => 1,
+ 1269 => 1,
+ 1271 => 1,
+ 1273 => 1,
+ 1275 => 1,
+ 1281 => 1,
+ 1285 => 1,
+ 1287 => 1,
+ 1293 => 1,
+ 1295 => 1,
+ 1299 => 1,
+ 1305 => 1,
+ 1309 => 1,
+ 1311 => 1,
+ 1313 => 1,
+ 1315 => 1,
+ 1317 => 1,
+ 1323 => 1,
+ 1325 => 1,
+ 1329 => 1,
+ 1331 => 1,
+ 1333 => 1,
+ 1335 => 1,
+ 1337 => 1,
+ 1339 => 1,
+ 1341 => 1,
+ 1343 => 1,
+ 1345 => 1,
+ 1347 => 1,
+ 1349 => 1,
+ 1351 => 1,
+ 1353 => 1,
+ 1355 => 1,
+ 1357 => 1,
+ 1359 => 1,
+ 1363 => 1,
+ 1365 => 1,
+ 1371 => 1,
+ 1375 => 1,
+ 1377 => 1,
+ 1379 => 1,
+ 1383 => 1,
+ 1385 => 1,
+ 1387 => 1,
+ 1389 => 1,
+ 1391 => 1,
+ 1393 => 1,
+ 1395 => 1,
+ 1397 => 1,
+ 1401 => 1,
+ 1403 => 1,
+ 1405 => 1,
+ 1407 => 1,
+ 1411 => 1,
+ 1413 => 1,
+ 1415 => 1,
+ 1417 => 1,
+ 1419 => 1,
+ 1421 => 1,
+ 1425 => 1,
+ 1431 => 1,
+ 1435 => 1,
+ 1437 => 1,
+ 1441 => 1,
+ 1443 => 1,
+ 1445 => 1,
+ 1449 => 1,
+ 1455 => 1,
+ 1457 => 1,
+ 1461 => 1,
+ 1463 => 1,
+ 1465 => 1,
+ 1467 => 1,
+ 1469 => 1,
+ 1473 => 1,
+ 1475 => 1,
+ 1477 => 1,
+ 1479 => 1,
+ 1483 => 1,
+ 1485 => 1,
+ 1491 => 1,
+ 1495 => 1,
+ 1497 => 1,
+ 1501 => 1,
+ 1503 => 1,
+ 1505 => 1,
+ 1507 => 1,
+ 1509 => 1,
+ 1513 => 1,
+ 1515 => 1,
+ 1517 => 1,
+ 1519 => 1,
+ 1521 => 1,
+ 1525 => 1,
+ 1527 => 1,
+ 1529 => 1,
+ 1533 => 1,
+ 1535 => 1,
+ 1537 => 1,
+ 1539 => 1,
+ 1541 => 1,
+ 1545 => 1,
+ 1547 => 1,
+ 1551 => 1,
+ 1555 => 1,
+ 1557 => 1,
+ 1561 => 1,
+ 1563 => 1,
+ 1565 => 1,
+ 1569 => 1,
+ 1573 => 1,
+ 1575 => 1,
+ 1577 => 1,
+ 1581 => 1,
+ 1585 => 1,
+ 1587 => 1,
+ 1589 => 1,
+ 1591 => 1,
+ 1593 => 1,
+ 1595 => 1,
+ 1599 => 1,
+ 1603 => 1,
+ 1605 => 1,
+ 1611 => 1,
+ 1615 => 1,
+ 1617 => 1,
+ 1623 => 1,
+ 1625 => 1,
+ 1629 => 1,
+ 1631 => 1,
+ 1633 => 1,
+ 1635 => 1,
+ 1639 => 1,
+ 1641 => 1,
+ 1643 => 1,
+ 1645 => 1,
+ 1647 => 1,
+ 1649 => 1,
+ 1651 => 1,
+ 1653 => 1,
+ 1655 => 1,
+ 1659 => 1,
+ 1661 => 1,
+ 1665 => 1,
+ 1671 => 1,
+ 1673 => 1,
+ 1675 => 1,
+ 1677 => 1,
+ 1679 => 1,
+ 1683 => 1,
+ 1685 => 1,
+ 1687 => 1,
+ 1689 => 1,
+ 1691 => 1,
+ 1695 => 1,
+ 1701 => 1,
+ 1703 => 1,
+ 1705 => 1,
+ 1707 => 1,
+ 1711 => 1,
+ 1713 => 1,
+ 1715 => 1,
+ 1717 => 1,
+ 1719 => 1,
+ 1723 => 1,
+ 1725 => 1,
+ 1727 => 1,
+ 1729 => 1,
+ 1731 => 1,
+ 1735 => 1,
+ 1737 => 1,
+ 1739 => 1,
+ 1743 => 1,
+ 1745 => 1,
+ 1749 => 1,
+ 1751 => 1,
+ 1755 => 1,
+ 1757 => 1,
+ 1761 => 1,
+ 1763 => 1,
+ 1765 => 1,
+ 1767 => 1,
+ 1769 => 1,
+ 1771 => 1,
+ 1773 => 1,
+ 1775 => 1,
+ 1779 => 1,
+ 1781 => 1,
+ 1785 => 1,
+ 1791 => 1,
+ 1793 => 1,
+ 1795 => 1,
+ 1797 => 1,
+ 1799 => 1,
+ 1803 => 1,
+ 1805 => 1,
+ 1807 => 1,
+ 1809 => 1,
+ 1813 => 1,
+ 1815 => 1,
+ 1817 => 1,
+ 1819 => 1,
+ 1821 => 1,
+ 1825 => 1,
+ 1827 => 1,
+ 1829 => 1,
+ 1833 => 1,
+ 1835 => 1,
+ 1837 => 1,
+ 1839 => 1,
+ 1841 => 1,
+ 1843 => 1,
+ 1845 => 1,
+ 1851 => 1,
+ 1853 => 1,
+ 1855 => 1,
+ 1857 => 1,
+ 1859 => 1,
+ 1863 => 1,
+ 1865 => 1,
+ 1869 => 1,
+ 1875 => 1,
+ 1881 => 1,
+ 1883 => 1,
+ 1885 => 1,
+ 1887 => 1,
+ 1891 => 1,
+ 1893 => 1,
+ 1895 => 1,
+ 1897 => 1,
+ 1899 => 1,
+ 1903 => 1,
+ 1905 => 1,
+ 1909 => 1,
+ 1911 => 1,
+ 1915 => 1,
+ 1917 => 1,
+ 1919 => 1,
+ 1921 => 1,
+ 1923 => 1,
+ 1925 => 1,
+ 1927 => 1,
+ 1929 => 1,
+ 1935 => 1,
+ 1937 => 1,
+ 1939 => 1,
+ 1941 => 1,
+ 1943 => 1,
+ 1945 => 1,
+ 1947 => 1,
+ 1953 => 1,
+ 1955 => 1,
+ 1957 => 1,
+ 1959 => 1,
+ 1961 => 1,
+ 1963 => 1,
+ 1965 => 1,
+ 1967 => 1,
+ 1969 => 1,
+ 1971 => 1,
+ 1975 => 1,
+ 1977 => 1,
+ 1981 => 1,
+ 1983 => 1,
+ 1985 => 1,
+ 1989 => 1,
+ 1991 => 1,
+ 1995 => 1,
+ 2001 => 1,
+ 2005 => 1,
+ 2007 => 1,
+ 2009 => 1,
+ 2013 => 1,
+ 2015 => 1,
+ 2019 => 1,
+ 2021 => 1,
+ 2023 => 1,
+ 2025 => 1,
+ 2031 => 1,
+ 2033 => 1,
+ 2035 => 1,
+ 2037 => 1,
+ 2041 => 1,
+ 2043 => 1,
+ 2045 => 1,
+ 2047 => 1,
+ 2049 => 1,
+ 2051 => 1,
+ 2055 => 1,
+ 2057 => 1,
+ 2059 => 1,
+ 2061 => 1,
+ 2065 => 1,
+ 2067 => 1,
+ 2071 => 1,
+ 2073 => 1,
+ 2075 => 1,
+ 2077 => 1,
+ 2079 => 1,
+ 2085 => 1,
+ 2091 => 1,
+ 2093 => 1,
+ 2095 => 1,
+ 2097 => 1,
+ 2101 => 1,
+ 2103 => 1,
+ 2105 => 1,
+ 2107 => 1,
+ 2109 => 1,
+ 2115 => 1,
+ 2117 => 1,
+ 2119 => 1,
+ 2121 => 1,
+ 2123 => 1,
+ 2125 => 1,
+ 2127 => 1,
+ 2133 => 1,
+ 2135 => 1,
+ 2139 => 1,
+ 2145 => 1,
+ 2147 => 1,
+ 2149 => 1,
+ 2151 => 1,
+ 2155 => 1,
+ 2157 => 1,
+ 2159 => 1,
+ 2163 => 1,
+ 2165 => 1,
+ 2167 => 1,
+ 2169 => 1,
+ 2171 => 1,
+ 2173 => 1,
+ 2175 => 1,
+ 2177 => 1,
+ 2181 => 1,
+ 2183 => 1,
+ 2185 => 1,
+ 2187 => 1,
+ 2189 => 1,
+ 2191 => 1,
+ 2193 => 1,
+ 2195 => 1,
+ 2197 => 1,
+ 2199 => 1,
+ 2201 => 1,
+ 2205 => 1,
+ 2211 => 1,
+ 2215 => 1,
+ 2217 => 1,
+ 2219 => 1,
+ 2223 => 1,
+ 2225 => 1,
+ 2227 => 1,
+ 2229 => 1,
+ 2231 => 1,
+ 2233 => 1,
+ 2235 => 1,
+ 2241 => 1,
+ 2245 => 1,
+ 2247 => 1,
+ 2249 => 1,
+ 2253 => 1,
+ 2255 => 1,
+ 2257 => 1,
+ 2259 => 1,
+ 2261 => 1,
+ 2263 => 1,
+ 2265 => 1,
+ 2271 => 1,
+ 2275 => 1,
+ 2277 => 1,
+ 2279 => 1,
+ 2283 => 1,
+ 2285 => 1,
+ 2289 => 1,
+ 2291 => 1,
+ 2295 => 1,
+ 2299 => 1,
+ 2301 => 1,
+ 2303 => 1,
+ 2305 => 1,
+ 2307 => 1,
+ 2313 => 1,
+ 2315 => 1,
+ 2317 => 1,
+ 2319 => 1,
+ 2321 => 1,
+ 2323 => 1,
+ 2325 => 1,
+ 2327 => 1,
+ 2329 => 1,
+ 2331 => 1,
+ 2335 => 1,
+ 2337 => 1,
+ 2343 => 1,
+ 2345 => 1,
+ 2349 => 1,
+ 2353 => 1,
+ 2355 => 1,
+ 2359 => 1,
+ 2361 => 1,
+ 2363 => 1,
+ 2365 => 1,
+ 2367 => 1,
+ 2369 => 1,
+ 2373 => 1,
+ 2375 => 1,
+ 2379 => 1,
+ 2385 => 1,
+ 2387 => 1,
+ 2391 => 1,
+ 2395 => 1,
+ 2397 => 1,
+ 2401 => 1,
+ 2403 => 1,
+ 2405 => 1,
+ 2407 => 1,
+ 2409 => 1,
+ 2413 => 1,
+ 2415 => 1,
+ 2419 => 1,
+ 2421 => 1,
+ 2425 => 1,
+ 2427 => 1,
+ 2429 => 1,
+ 2431 => 1,
+ 2433 => 1,
+ 2435 => 1,
+ 2439 => 1,
+ 2443 => 1,
+ 2445 => 1,
+ 2449 => 1,
+ 2451 => 1,
+ 2453 => 1,
+ 2455 => 1,
+ 2457 => 1,
+ 2461 => 1,
+ 2463 => 1,
+ 2465 => 1,
+ 2469 => 1,
+ 2471 => 1,
+ 2475 => 1,
+ 2479 => 1,
+ 2481 => 1,
+ 2483 => 1,
+ 2485 => 1,
+ 2487 => 1,
+ 2489 => 1,
+ 2491 => 1,
+ 2493 => 1,
+ 2495 => 1,
+ 2497 => 1,
+ 2499 => 1,
+ 2501 => 1,
+ 2505 => 1,
+ 2507 => 1,
+ 2509 => 1,
+ 2511 => 1,
+ 2513 => 1,
+ 2515 => 1,
+ 2517 => 1,
+ 2519 => 1,
+ 2523 => 1,
+ 2525 => 1,
+ 2527 => 1,
+ 2529 => 1,
+ 2533 => 1,
+ 2535 => 1,
+ 2537 => 1,
+ 2541 => 1,
+ 2545 => 1,
+ 2547 => 1,
+ 2551 => 1,
+ 2553 => 1,
+ 2555 => 1,
+ 2559 => 1,
+ 2561 => 1,
+ 2563 => 1,
+ 2565 => 1,
+ 2567 => 1,
+ 2569 => 1,
+ 2571 => 1,
+ 2573 => 1,
+ 2575 => 1,
+ 2577 => 1,
+ 2581 => 1,
+ 2583 => 1,
+ 2585 => 1,
+ 2587 => 1,
+ 2589 => 1,
+ 2595 => 1,
+ 2597 => 1,
+ 2599 => 1,
+ 2601 => 1,
+ 2603 => 1,
+ 2605 => 1,
+ 2607 => 1,
+ 2611 => 1,
+ 2613 => 1,
+ 2615 => 1,
+ 2619 => 1,
+ 2623 => 1,
+ 2625 => 1,
+ 2627 => 1,
+ 2629 => 1,
+ 2631 => 1,
+ 2635 => 1,
+ 2637 => 1,
+ 2639 => 1,
+ 2641 => 1,
+ 2643 => 1,
+ 2645 => 1,
+ 2649 => 1,
+ 2651 => 1,
+ 2653 => 1,