From 6699a62199e5dc264944ee891832f705048b9036 Mon Sep 17 00:00:00 2001 From: Abigail Date: Mon, 24 Jan 2022 15:33:22 +0100 Subject: Week 149, part 1: Tests --- challenge-149/abigail/t/ctest.ini | 8 ++++++++ challenge-149/abigail/t/input-1-1 | 1 + challenge-149/abigail/t/input-1-2 | 3 +++ challenge-149/abigail/t/output-1-1.exp | 1 + challenge-149/abigail/t/output-1-2.exp | 3 +++ 5 files changed, 16 insertions(+) create mode 100644 challenge-149/abigail/t/ctest.ini create mode 100644 challenge-149/abigail/t/input-1-1 create mode 100644 challenge-149/abigail/t/input-1-2 create mode 100644 challenge-149/abigail/t/output-1-1.exp create mode 100644 challenge-149/abigail/t/output-1-2.exp diff --git a/challenge-149/abigail/t/ctest.ini b/challenge-149/abigail/t/ctest.ini new file mode 100644 index 0000000000..5513a21cc4 --- /dev/null +++ b/challenge-149/abigail/t/ctest.ini @@ -0,0 +1,8 @@ +# +# Configuration file for running tests, using ctest. +# See https://github.com/Abigail/Misc/blob/master/ctest +# + +[names] +1-1 = Given Example +1-2 = More Examples diff --git a/challenge-149/abigail/t/input-1-1 b/challenge-149/abigail/t/input-1-1 new file mode 100644 index 0000000000..209e3ef4b6 --- /dev/null +++ b/challenge-149/abigail/t/input-1-1 @@ -0,0 +1 @@ +20 diff --git a/challenge-149/abigail/t/input-1-2 b/challenge-149/abigail/t/input-1-2 new file mode 100644 index 0000000000..ec34aebfec --- /dev/null +++ b/challenge-149/abigail/t/input-1-2 @@ -0,0 +1,3 @@ +50 +100 +150 diff --git a/challenge-149/abigail/t/output-1-1.exp b/challenge-149/abigail/t/output-1-1.exp new file mode 100644 index 0000000000..57b5a1d81c --- /dev/null +++ b/challenge-149/abigail/t/output-1-1.exp @@ -0,0 +1 @@ +0 1 2 3 5 8 10 11 12 14 17 20 21 23 26 30 32 35 41 44 diff --git a/challenge-149/abigail/t/output-1-2.exp b/challenge-149/abigail/t/output-1-2.exp new file mode 100644 index 0000000000..5a1b85732e --- /dev/null +++ b/challenge-149/abigail/t/output-1-2.exp @@ -0,0 +1,3 @@ +0 1 2 3 5 8 10 11 12 14 17 20 21 23 26 30 32 35 41 44 49 50 53 58 62 67 71 76 80 85 94 100 101 102 104 107 110 111 113 116 120 122 125 131 134 139 140 143 148 152 +0 1 2 3 5 8 10 11 12 14 17 20 21 23 26 30 32 35 41 44 49 50 53 58 62 67 71 76 80 85 94 100 101 102 104 107 110 111 113 116 120 122 125 131 134 139 140 143 148 152 157 161 166 170 175 184 193 200 201 203 206 210 212 215 221 224 229 230 233 238 242 247 251 256 260 265 274 283 292 300 302 305 311 314 319 320 323 328 332 337 341 346 350 355 364 373 382 391 399 401 +0 1 2 3 5 8 10 11 12 14 17 20 21 23 26 30 32 35 41 44 49 50 53 58 62 67 71 76 80 85 94 100 101 102 104 107 110 111 113 116 120 122 125 131 134 139 140 143 148 152 157 161 166 170 175 184 193 200 201 203 206 210 212 215 221 224 229 230 233 238 242 247 251 256 260 265 274 283 292 300 302 305 311 314 319 320 323 328 332 337 341 346 350 355 364 373 382 391 399 401 404 409 410 413 418 422 427 431 436 440 445 454 463 472 481 489 490 498 500 503 508 512 517 521 526 530 535 544 553 562 571 579 580 588 597 602 607 611 616 620 625 634 643 652 661 669 670 678 687 696 -- cgit From 711d5679ff878c272bfd421116253630db330fc7 Mon Sep 17 00:00:00 2001 From: Abigail Date: Mon, 24 Jan 2022 15:33:40 +0100 Subject: Week 149, part 1: Perl solution --- challenge-149/abigail/perl/ch-1.pl | 60 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 challenge-149/abigail/perl/ch-1.pl diff --git a/challenge-149/abigail/perl/ch-1.pl b/challenge-149/abigail/perl/ch-1.pl new file mode 100644 index 0000000000..d1a1f7edb5 --- /dev/null +++ b/challenge-149/abigail/perl/ch-1.pl @@ -0,0 +1,60 @@ +#!/opt/perl/bin/perl + +use 5.032; + +use strict; +use warnings; +no warnings 'syntax'; + +use experimental 'signatures'; +use experimental 'lexical_subs'; + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-149 +# + +# +# Run as: perl ch-1.pl < input-file +# + +# +# This is sequence A028840 of the OEIS. The first 10,000 entries can +# be found at https://oeis.org/A028840/b028840.txt +# +# We will make use of the following conjecture: the Nth number is <= 10 * N. +# This holds for the first 10,000 numbers. +# +# Consider that we are asked to generate all the first N numbers (and not +# the Nth number), I doubt we'll be feeding numbers exceeding 10,000 to +# this program. +# +# For the sum of digits, we hark back to challenge 133, part 2. +# + +use List::Util qw [sum]; +sub digitsum ($n) {sum $n =~ /\d/ag} + +while (<>) { + my $N = 0 + $_; + # + # Get an upper bound on the sum of the digits. + # + my $max_fib = 9 * (1 + length $N); + # + # Generate all the Fibonacci numbers up to $max_fib. + # + my %fib = (0 => 1, 1 => 1); + my ($f, $g) = (0, 1); + while ($g < $max_fib) { + ($f, $g) = ($g, $f + $g); + $fib {$g} = 1; + } + + for (my ($c, $k) = (0, 0); $c < $N; $k ++) { + if ($fib {digitsum $k}) { + print "$k "; + $c ++; + } + } + print "\n"; +} -- cgit From d2307ccb4e26f83c41e1d5c1517ae6297ba588a2 Mon Sep 17 00:00:00 2001 From: Abigail Date: Mon, 24 Jan 2022 15:45:55 +0100 Subject: Week 148, part 1: AWK solution --- challenge-149/abigail/awk/ch-1.awk | 41 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 challenge-149/abigail/awk/ch-1.awk diff --git a/challenge-149/abigail/awk/ch-1.awk b/challenge-149/abigail/awk/ch-1.awk new file mode 100644 index 0000000000..392a9bd88a --- /dev/null +++ b/challenge-149/abigail/awk/ch-1.awk @@ -0,0 +1,41 @@ +#!/usr/bin/awk + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-149 +# + +# +# Run as: awk -f ch-1.awk < input-file +# + +function digit_sum (number, sum) { + sum = 0 + while (number > 0) { + sum += number % 10 + number = int (number / 10) + } + return sum +} + +{ + max_fib = 9 * (1 + length ($1)) + f = 0 + g = 1 + fib [f] = 1 + fib [g] = 1 + while (g < max_fib) { + t = f + g + fib [t] = 1 + f = g + g = t + } + + for (c = k = 0; c < $1; k ++) { + if (digit_sum(k) in fib) { + printf ("%d ", k) + c ++ + } + } + + printf ("\n") +} -- cgit From 79a6d39fc08f0d3227e2fcfec823b95251493e21 Mon Sep 17 00:00:00 2001 From: Abigail Date: Mon, 24 Jan 2022 17:43:56 +0100 Subject: Week 149, part 1. Improve Perl and AWK solutions. We don't have to generate Fibonacci numbers up to some arbitrary limit. Instead, we just generate as many as needed. --- challenge-149/abigail/awk/ch-1.awk | 32 ++++++++++++++---------- challenge-149/abigail/perl/ch-1.pl | 50 ++++++++++++++++++++------------------ 2 files changed, 45 insertions(+), 37 deletions(-) diff --git a/challenge-149/abigail/awk/ch-1.awk b/challenge-149/abigail/awk/ch-1.awk index 392a9bd88a..db6182ff4f 100644 --- a/challenge-149/abigail/awk/ch-1.awk +++ b/challenge-149/abigail/awk/ch-1.awk @@ -17,23 +17,29 @@ function digit_sum (number, sum) { return sum } -{ - max_fib = 9 * (1 + length ($1)) - f = 0 - g = 1 +function is_fib (n, t) { + while (g < n) { + t = g + g = f + g + f = t + fib [g] = 1 + } + return n in fib +} + +BEGIN { + f = 0 + g = 1 fib [f] = 1 fib [g] = 1 - while (g < max_fib) { - t = f + g - fib [t] = 1 - f = g - g = t - } +} - for (c = k = 0; c < $1; k ++) { - if (digit_sum(k) in fib) { +{ + N = $1 + for (k = 0; N > 0; k ++) { + if (is_fib(digit_sum(k))) { printf ("%d ", k) - c ++ + N -- } } diff --git a/challenge-149/abigail/perl/ch-1.pl b/challenge-149/abigail/perl/ch-1.pl index d1a1f7edb5..ca72dbefbf 100644 --- a/challenge-149/abigail/perl/ch-1.pl +++ b/challenge-149/abigail/perl/ch-1.pl @@ -21,39 +21,41 @@ use experimental 'lexical_subs'; # This is sequence A028840 of the OEIS. The first 10,000 entries can # be found at https://oeis.org/A028840/b028840.txt # -# We will make use of the following conjecture: the Nth number is <= 10 * N. -# This holds for the first 10,000 numbers. -# -# Consider that we are asked to generate all the first N numbers (and not -# the Nth number), I doubt we'll be feeding numbers exceeding 10,000 to -# this program. -# # For the sum of digits, we hark back to challenge 133, part 2. # use List::Util qw [sum]; + +# +# Return the sum of the digits of its argument +# sub digitsum ($n) {sum $n =~ /\d/ag} -while (<>) { - my $N = 0 + $_; - # - # Get an upper bound on the sum of the digits. - # - my $max_fib = 9 * (1 + length $N); - # - # Generate all the Fibonacci numbers up to $max_fib. - # - my %fib = (0 => 1, 1 => 1); - my ($f, $g) = (0, 1); - while ($g < $max_fib) { - ($f, $g) = ($g, $f + $g); - $fib {$g} = 1; +# +# Return whether the argument is a Fibonacci number. We do this by +# keeping a hash with Fibonacci numbers, and keeping track of the +# last 2 Fibonacci numbers produced. If the argument is larger than +# the last Fibonacci number produced, we keep generating new +# Fibonacci numbers, until we have exceeded the argument. +# +# Then it's a simple lookup. +# +sub is_fib ($n) { + state $fib = {0 => 1, 1 => 1}; + state $f = 0; + state $g = 1; + while ($g < $n) { + ($f, $g) = ($g, $f + $g); + $$fib {$g} = 1; } + $$fib {$n} +} - for (my ($c, $k) = (0, 0); $c < $N; $k ++) { - if ($fib {digitsum $k}) { +while (<>) { + for (my ($k, $N) = (0, 0 + $_); $N > 0; $k ++) { + if (is_fib (digitsum $k)) { print "$k "; - $c ++; + $N --; } } print "\n"; -- cgit From 708e5da6859ee73390a6b309cddfba9f3e89954f Mon Sep 17 00:00:00 2001 From: Abigail Date: Mon, 24 Jan 2022 18:24:22 +0100 Subject: Week 149, part 1: bash solution --- challenge-149/abigail/bash/ch-1.sh | 49 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 challenge-149/abigail/bash/ch-1.sh diff --git a/challenge-149/abigail/bash/ch-1.sh b/challenge-149/abigail/bash/ch-1.sh new file mode 100644 index 0000000000..bd882f735b --- /dev/null +++ b/challenge-149/abigail/bash/ch-1.sh @@ -0,0 +1,49 @@ +#!/bin/sh + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-149 +# + +# +# Run as: bash ch-1.sh < input-file +# + +function digit_sum () { + digit_sum=0 + num=$1 + while ((num > 0)) + do ((digit_sum += num % 10)) + ((num /= 10)) + done +} + +f=0 +g=1 +declare -A fib +fib[$f]=1 +fib[$g]=1 + +function is_fib () { + local n=$1 + while (($g < $n)) + do ((t = g)) + ((g = f + g)) + ((f = t)) + fib[$g]=1 + done + is_fib=${fib[$n]:-0} +} + +set -f + +while read N +do for ((k = 0; N > 0; k ++)) + do digit_sum $k + is_fib $digit_sum + if (($is_fib == 1)) + then printf "%d " $k + ((N --)) + fi + done + echo "" +done -- cgit From 3e870b5344f7c748b1c4279ed0de02749769180a Mon Sep 17 00:00:00 2001 From: Abigail Date: Mon, 24 Jan 2022 19:51:01 +0100 Subject: Week 149: part 2: Tests --- challenge-149/abigail/t/ctest.ini | 11 +++++++++++ challenge-149/abigail/t/input-2-1 | 4 ++++ challenge-149/abigail/t/input-2-2 | 20 ++++++++++++++++++++ challenge-149/abigail/t/input-2-3 | 3 +++ challenge-149/abigail/t/output-2-1.exp | 4 ++++ challenge-149/abigail/t/output-2-2.exp | 20 ++++++++++++++++++++ challenge-149/abigail/t/output-2-3.exp | 3 +++ 7 files changed, 65 insertions(+) create mode 100644 challenge-149/abigail/t/input-2-1 create mode 100644 challenge-149/abigail/t/input-2-2 create mode 100644 challenge-149/abigail/t/input-2-3 create mode 100644 challenge-149/abigail/t/output-2-1.exp create mode 100644 challenge-149/abigail/t/output-2-2.exp create mode 100644 challenge-149/abigail/t/output-2-3.exp diff --git a/challenge-149/abigail/t/ctest.ini b/challenge-149/abigail/t/ctest.ini index 5513a21cc4..c8a2ad68d3 100644 --- a/challenge-149/abigail/t/ctest.ini +++ b/challenge-149/abigail/t/ctest.ini @@ -6,3 +6,14 @@ [names] 1-1 = Given Example 1-2 = More Examples +2-1 = Given Examples +2-2 = All known values +2-3 = Too hard + +[challenges/2/basic] +add_to_input = -1 + +[challenges/2/bc] +add_to_input = 0 + + diff --git a/challenge-149/abigail/t/input-2-1 b/challenge-149/abigail/t/input-2-1 new file mode 100644 index 0000000000..9509c2b1d4 --- /dev/null +++ b/challenge-149/abigail/t/input-2-1 @@ -0,0 +1,4 @@ +2 +4 +10 +12 diff --git a/challenge-149/abigail/t/input-2-2 b/challenge-149/abigail/t/input-2-2 new file mode 100644 index 0000000000..3c4aed8059 --- /dev/null +++ b/challenge-149/abigail/t/input-2-2 @@ -0,0 +1,20 @@ +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +22 diff --git a/challenge-149/abigail/t/input-2-3 b/challenge-149/abigail/t/input-2-3 new file mode 100644 index 0000000000..b506b92705 --- /dev/null +++ b/challenge-149/abigail/t/input-2-3 @@ -0,0 +1,3 @@ +21 +23 +50 diff --git a/challenge-149/abigail/t/output-2-1.exp b/challenge-149/abigail/t/output-2-1.exp new file mode 100644 index 0000000000..1aceb9123d --- /dev/null +++ b/challenge-149/abigail/t/output-2-1.exp @@ -0,0 +1,4 @@ +1 +3201 +9814072356 +B8750A649321 diff --git a/challenge-149/abigail/t/output-2-2.exp b/challenge-149/abigail/t/output-2-2.exp new file mode 100644 index 0000000000..ec2fbb1198 --- /dev/null +++ b/challenge-149/abigail/t/output-2-2.exp @@ -0,0 +1,20 @@ +1 +1 +3201 +4301 +452013 +6250341 +47302651 +823146570 +9814072356 +A8701245369 +B8750A649321 +CBA504216873 +DC71B30685A924 +EDAC93B24658701 +FED5B39A42706C81 +GFED5A31C6B79802 +HGF80ADC53712EB649 +IHGFD3408C6E715A2B9 +JIHG03DAC457BFE96281 +LKJIG5D14B9032FHAC867E diff --git a/challenge-149/abigail/t/output-2-3.exp b/challenge-149/abigail/t/output-2-3.exp new file mode 100644 index 0000000000..828fb4a69b --- /dev/null +++ b/challenge-149/abigail/t/output-2-3.exp @@ -0,0 +1,3 @@ +Too hard to calculate +Too hard to calculate +Too hard to calculate -- cgit From 855d436b931866b06fd71890dad7151fb200364f Mon Sep 17 00:00:00 2001 From: Abigail Date: Mon, 24 Jan 2022 21:17:13 +0100 Subject: Week 149, part 2: preprocessing data --- challenge-149/abigail/data/a287298.awk | 22 ++++ challenge-149/abigail/data/a287298.bas | 23 ++++ challenge-149/abigail/data/a287298.bc | 15 +++ challenge-149/abigail/data/a287298.c | 27 +++++ challenge-149/abigail/data/a287298.go | 27 +++++ challenge-149/abigail/data/a287298.java | 26 +++++ challenge-149/abigail/data/a287298.js | 22 ++++ challenge-149/abigail/data/a287298.lua | 22 ++++ challenge-149/abigail/data/a287298.p | 28 +++++ challenge-149/abigail/data/a287298.pl | 22 ++++ challenge-149/abigail/data/a287298.py | 22 ++++ challenge-149/abigail/data/a287298.r | 22 ++++ challenge-149/abigail/data/a287298.rb | 22 ++++ challenge-149/abigail/data/a287298.scm | 25 +++++ challenge-149/abigail/data/a287298.sh | 22 ++++ challenge-149/abigail/data/a287298.tcl | 25 +++++ challenge-149/abigail/data/preprocess | 190 ++++++++++++++++++++++++++++++++ 17 files changed, 562 insertions(+) create mode 100644 challenge-149/abigail/data/a287298.awk create mode 100644 challenge-149/abigail/data/a287298.bas create mode 100644 challenge-149/abigail/data/a287298.bc create mode 100644 challenge-149/abigail/data/a287298.c create mode 100644 challenge-149/abigail/data/a287298.go create mode 100644 challenge-149/abigail/data/a287298.java create mode 100644 challenge-149/abigail/data/a287298.js create mode 100644 challenge-149/abigail/data/a287298.lua create mode 100644 challenge-149/abigail/data/a287298.p create mode 100644 challenge-149/abigail/data/a287298.pl create mode 100644 challenge-149/abigail/data/a287298.py create mode 100644 challenge-149/abigail/data/a287298.r create mode 100644 challenge-149/abigail/data/a287298.rb create mode 100644 challenge-149/abigail/data/a287298.scm create mode 100644 challenge-149/abigail/data/a287298.sh create mode 100644 challenge-149/abigail/data/a287298.tcl create mode 100755 challenge-149/abigail/data/preprocess diff --git a/challenge-149/abigail/data/a287298.awk b/challenge-149/abigail/data/a287298.awk new file mode 100644 index 0000000000..8ae03ba3aa --- /dev/null +++ b/challenge-149/abigail/data/a287298.awk @@ -0,0 +1,22 @@ +BEGIN { + A287298 [ 2] = "1" + A287298 [ 3] = "1" + A287298 [ 4] = "3201" + A287298 [ 5] = "4301" + A287298 [ 6] = "452013" + A287298 [ 7] = "6250341" + A287298 [ 8] = "47302651" + A287298 [ 9] = "823146570" + A287298 [10] = "9814072356" + A287298 [11] = "A8701245369" + A287298 [12] = "B8750A649321" + A287298 [13] = "CBA504216873" + A287298 [14] = "DC71B30685A924" + A287298 [15] = "EDAC93B24658701" + A287298 [16] = "FED5B39A42706C81" + A287298 [17] = "GFED5A31C6B79802" + A287298 [18] = "HGF80ADC53712EB649" + A287298 [19] = "IHGFD3408C6E715A2B9" + A287298 [20] = "JIHG03DAC457BFE96281" + A287298 [22] = "LKJIG5D14B9032FHAC867E" +} diff --git a/challenge-149/abigail/data/a287298.bas b/challenge-149/abigail/data/a287298.bas new file mode 100644 index 0000000000..110decb347 --- /dev/null +++ b/challenge-149/abigail/data/a287298.bas @@ -0,0 +1,23 @@ +1000 INPUT N + + +1010 IF N = 2 THEN PRINT "1" +1020 IF N = 3 THEN PRINT "1" +1030 IF N = 4 THEN PRINT "3201" +1040 IF N = 5 THEN PRINT "4301" +1050 IF N = 6 THEN PRINT "452013" +1060 IF N = 7 THEN PRINT "6250341" +1070 IF N = 8 THEN PRINT "47302651" +1080 IF N = 9 THEN PRINT "823146570" +1090 IF N = 10 THEN PRINT "9814072356" +1100 IF N = 11 THEN PRINT "A8701245369" +1110 IF N = 12 THEN PRINT "B8750A649321" +1120 IF N = 13 THEN PRINT "CBA504216873" +1130 IF N = 14 THEN PRINT "DC71B30685A924" +1140 IF N = 15 THEN PRINT "EDAC93B24658701" +1150 IF N = 16 THEN PRINT "FED5B39A42706C81" +1160 IF N = 17 THEN PRINT "GFED5A31C6B79802" +1170 IF N = 18 THEN PRINT "HGF80ADC53712EB649" +1180 IF N = 19 THEN PRINT "IHGFD3408C6E715A2B9" +1190 IF N = 20 THEN PRINT "JIHG03DAC457BFE96281" +1200 IF N = 22 THEN PRINT "LKJIG5D14B9032FHAC867E" diff --git a/challenge-149/abigail/data/a287298.bc b/challenge-149/abigail/data/a287298.bc new file mode 100644 index 0000000000..2578cbfcd8 --- /dev/null +++ b/challenge-149/abigail/data/a287298.bc @@ -0,0 +1,15 @@ +a287298 [ 2] = 1 +a287298 [ 3] = 1 +a287298 [ 4] = 225 +a287298 [ 5] = 576 +a287298 [ 6] = 38025 +a287298 [ 7] = 751689 +a287298 [ 8] = 10323369 +a287298 [ 9] = 355624164 +a287298 [10] = 9814072356 +a287298 [11] = 279740499025 +a287298 [12] = 8706730814089 +a287298 [13] = 23132511879129 +a287298 [14] = 11027486960232964 +a287298 [15] = 435408094460869201 +a287298 [16] = 18362780530794065025 diff --git a/challenge-149/abigail/data/a287298.c b/challenge-149/abigail/data/a287298.c new file mode 100644 index 0000000000..be71166f71 --- /dev/null +++ b/challenge-149/abigail/data/a287298.c @@ -0,0 +1,27 @@ +int main (void) { + char * A287298 [23]; + + A287298 [ 0] = NULL; + A287298 [ 1] = NULL; + A287298 [ 2] = "1"; + A287298 [ 3] = "1"; + A287298 [ 4] = "3201"; + A287298 [ 5] = "4301"; + A287298 [ 6] = "452013"; + A287298 [ 7] = "6250341"; + A287298 [ 8] = "47302651"; + A287298 [ 9] = "823146570"; + A287298 [10] = "9814072356"; + A287298 [11] = "A8701245369"; + A287298 [12] = "B8750A649321"; + A287298 [13] = "CBA504216873"; + A287298 [14] = "DC71B30685A924"; + A287298 [15] = "EDAC93B24658701"; + A287298 [16] = "FED5B39A42706C81"; + A287298 [17] = "GFED5A31C6B79802"; + A287298 [18] = "HGF80ADC53712EB649"; + A287298 [19] = "IHGFD3408C6E715A2B9"; + A287298 [20] = "JIHG03DAC457BFE96281"; + A287298 [21] = NULL; + A287298 [22] = "LKJIG5D14B9032FHAC867E"; +} diff --git a/challenge-149/abigail/data/a287298.go b/challenge-149/abigail/data/a287298.go new file mode 100644 index 0000000000..95cdbfc96c --- /dev/null +++ b/challenge-149/abigail/data/a287298.go @@ -0,0 +1,27 @@ +func main () { + var A287298 [23] string + + A287298 [ 0] = "" + A287298 [ 1] = "" + A287298 [ 2] = "1" + A287298 [ 3] = "1" + A287298 [ 4] = "3201" + A287298 [ 5] = "4301" + A287298 [ 6] = "452013" + A287298 [ 7] = "6250341" + A287298 [ 8] = "47302651" + A287298 [ 9] = "823146570" + A287298 [10] = "9814072356" + A287298 [11] = "A8701245369" + A287298 [12] = "B8750A649321" + A287298 [13] = "CBA504216873" + A287298 [14] = "DC71B30685A924" + A287298 [15] = "EDAC93B24658701" + A287298 [16] = "FED5B39A42706C81" + A287298 [17] = "GFED5A31C6B79802" + A287298 [18] = "HGF80ADC53712EB649" + A287298 [19] = "IHGFD3408C6E715A2B9" + A287298 [20] = "JIHG03DAC457BFE96281" + A287298 [21] = "" + A287298 [22] = "LKJIG5D14B9032FHAC867E" +} diff --git a/challenge-149/abigail/data/a287298.java b/challenge-149/abigail/data/a287298.java new file mode 100644 index 0000000000..80dc1fddf8 --- /dev/null +++ b/challenge-149/abigail/data/a287298.java @@ -0,0 +1,26 @@ + public static void main (String [] args) { + String [] A287298 = new String [23]; + A287298 [ 0] = ""; + A287298 [ 1] = ""; + A287298 [ 2] = "1"; + A287298 [ 3] = "1"; + A287298 [ 4] = "3201"; + A287298 [ 5] = "4301"; + A287298 [ 6] = "452013"; + A287298 [ 7] = "6250341"; + A287298 [ 8] = "47302651"; + A287298 [ 9] = "823146570"; + A287298 [10] = "9814072356"; + A287298 [11] = "A8701245369"; + A287298 [12] = "B8750A649321"; + A287298 [13] = "CBA504216873"; + A287298 [14] = "DC71B30685A924"; + A287298 [15] = "EDAC93B24658701"; + A287298 [16] = "FED5B39A42706C81"; + A287298 [17] = "GFED5A31C6B79802"; + A287298 [18] = "HGF80ADC53712EB649"; + A287298 [19] = "IHGFD3408C6E715A2B9"; + A287298 [20] = "JIHG03DAC457BFE96281"; + A287298 [21] = ""; + A287298 [22] = "LKJIG5D14B9032FHAC867E"; + } diff --git a/challenge-149/abigail/data/a287298.js b/challenge-149/abigail/data/a287298.js new file mode 100644 index 0000000000..a66464a663 --- /dev/null +++ b/challenge-149/abigail/data/a287298.js @@ -0,0 +1,22 @@ +let A287298 = [] + +A287298 [ 2] = "1" +A287298 [ 3] = "1" +A287298 [ 4] = "3201" +A287298 [ 5] = "4301" +A287298 [ 6] = "452013" +A287298 [ 7] = "6250341" +A287298 [ 8] = "47302651" +A287298 [ 9] = "823146570" +A287298 [10] = "9814072356" +A287298 [11] = "A8701245369" +A287298 [12] = "B8750A649321" +A287298 [13] = "CBA504216873" +A287298 [14] = "DC71B30685A924" +A287298 [15] = "EDAC93B24658701" +A287298 [16] = "FED5B39A42706C81" +A287298 [17] = "GFED5A31C6B79802" +A287298 [18] = "HGF80ADC53712EB649" +A287298 [19] = "IHGFD3408C6E715A2B9" +A287298 [20] = "JIHG03DAC457BFE96281" +A287298 [22] = "LKJIG5D14B9032FHAC867E" diff --git a/challenge-149/abigail/data/a287298.lua b/challenge-149/abigail/data/a287298.lua new file mode 100644 index 0000000000..9d074430e3 --- /dev/null +++ b/challenge-149/abigail/data/a287298.lua @@ -0,0 +1,22 @@ +A287298 = {} + +A287298 [ 2] = "1" +A287298 [ 3] = "1" +A287298 [ 4] = "3201" +A287298 [ 5] = "4301" +A287298 [ 6] = "452013" +A287298 [ 7] = "6250341" +A287298 [ 8] = "47302651" +A287298 [ 9] = "823146570" +A287298 [10] = "9814072356" +A287298 [11] = "A8701245369" +A287298 [12] = "B8750A649321" +A287298 [13] = "CBA504216873" +A287298 [14] = "DC71B30685A924" +A287298 [15] = "EDAC93B24658701" +A287298 [16] = "FED5B39A42706C81" +A287298 [17] = "GFED5A31C6B79802" +A287298 [18] = "HGF80ADC53712EB649" +A287298 [19] = "IHGFD3408C6E715A2B9" +A287298 [20] = "JIHG03DAC457BFE96281" +A287298 [22] = "LKJIG5D14B9032FHAC867E" diff --git a/challenge-149/abigail/data/a287298.p b/challenge-149/abigail/data/a287298.p new file mode 100644 index 0000000000..10f45e6e45 --- /dev/null +++ b/challenge-149/abigail/data/a287298.p @@ -0,0 +1,28 @@ +var + A287298: array [0 .. 22] of string; + +begin + A287298 [ 0] = ''; + A287298 [ 1] = ''; + A287298 [ 2] = '1'; + A287298 [ 3] = '1'; + A287298 [ 4] = '3201'; + A287298 [ 5] = '4301'; + A287298 [ 6] = '452013'; + A287298 [ 7] = '6250341'; + A287298 [ 8] = '47302651'; + A287298 [ 9] = '823146570'; + A287298 [10] = '9814072356'; + A287298 [11] = 'A8701245369'; + A287298 [12] = 'B8750A649321'; + A287298 [13] = 'CBA504216873'; + A287298 [14] = 'DC71B30685A924'; + A287298 [15] = 'EDAC93B24658701'; + A287298 [16] = 'FED5B39A42706C81'; + A287298 [17] = 'GFED5A31C6B79802'; + A287298 [18] = 'HGF80ADC53712EB649'; + A287298 [19] = 'IHGFD3408C6E715A2B9'; + A287298 [20] = 'JIHG03DAC457BFE96281'; + A287298 [21] = ''; + A287298 [22] = 'LKJIG5D14B9032FHAC867E'; +end. diff --git a/challenge-149/abigail/data/a287298.pl b/challenge-149/abigail/data/a287298.pl new file mode 100644 index 0000000000..5842553b70 --- /dev/null +++ b/challenge-149/abigail/data/a287298.pl @@ -0,0 +1,22 @@ +my @A287298; + +$A287298 [ 2] = "1"; +$A287298 [ 3] = "1"; +$A287298 [ 4] = "3201"; +$A287298 [ 5] = "4301"; +$A287298 [ 6] = "452013"; +$A287298 [ 7] = "6250341"; +$A287298 [ 8] = "47302651"; +$A287298 [ 9] = "823146570"; +$A287298 [10] = "9814072356"; +$A287298 [11] = "A8701245369"; +$A287298 [12] = "B8750A649321"; +$A287298 [13] = "CBA504216873"; +$A287298 [14] = "DC71B30685A924"; +$A287298 [15] = "EDAC93B24658701"; +$A287298 [16] = "FED5B39A42706C81"; +$A287298 [17] = "GFED5A31C6B79802"; +$A287298 [18] = "HGF80ADC53712EB649"; +$A287298 [19] = "IHGFD3408C6E715A2B9"; +$A287298 [20] = "JIHG03DAC457BFE96281"; +$A287298 [22] = "LKJIG5D14B9032FHAC867E"; diff --git a/challenge-149/abigail/data/a287298.py b/challenge-149/abigail/data/a287298.py new file mode 100644 index 0000000000..9d074430e3 --- /dev/null +++ b/challenge-149/abigail/data/a287298.py @@ -0,0 +1,22 @@ +A287298 = {} + +A287298 [ 2] = "1" +A287298 [ 3] = "1" +A287298 [ 4] = "3201" +A287298 [ 5] = "4301" +A287298 [ 6] = "452013" +A287298 [ 7] = "6250341" +A287298 [ 8] = "47302651" +A287298 [ 9] = "823146570" +A287298 [10] = "9814072356" +A287298 [11] = "A8701245369" +A287298 [12] = "B8750A649321" +A287298 [13] = "CBA504216873" +A287298 [14] = "DC71B30685A924" +A287298 [15] = "EDAC93B24658701" +A287298 [16] = "FED5B39A42706C81" +A287298 [17] = "GFED5A31C6B79802" +A287298 [18] = "HGF80ADC53712EB649" +A287298 [19] = "IHGFD3408C6E715A2B9" +A287298 [20] = "JIHG03DAC457BFE96281" +A287298 [22] = "LKJIG5D14B9032FHAC867E" diff --git a/challenge-149/abigail/data/a287298.r b/challenge-149/abigail/data/a287298.r new file mode 100644 index 0000000000..43c2377e66 --- /dev/null +++ b/challenge-149/abigail/data/a287298.r @@ -0,0 +1,22 @@ +A287298 <- c () + +A287298 [[ 2]] <- "1" +A287298 [[ 3]] <- "1" +A287298 [[ 4]] <- "3201" +A287298 [[ 5]] <- "4301" +A287298 [[ 6]] <- "452013" +A287298 [[ 7]] <- "6250341" +A287298 [[ 8]] <- "47302651" +A287298 [[ 9]] <- "823146570" +A287298 [[10]] <- "9814072356" +A287298 [[11]] <- "A8701245369" +A287298 [[12]] <- "B8750A649321" +A287298 [[13]] <- "CBA504216873" +A287298 [[14]] <- "DC71B30685A924" +A287298 [[15]] <- "EDAC93B24658701" +A287298 [[16]] <- "FED5B39A42706C81" +A287298 [[17]] <- "GFED5A31C6B79802" +A287298 [[18]] <- "HGF80ADC53712EB649" +A287298 [[19]] <- "IHGFD3408C6E715A2B9" +A287298 [[20]] <- "JIHG03DAC457BFE96281" +A287298 [[22]] <- "LKJIG5D14B9032FHAC867E" diff --git a/challenge-149/abigail/data/a287298.rb b/challenge-149/abigail/data/a287298.rb new file mode 100644 index 0000000000..eb03f29a33 --- /dev/null +++ b/challenge-149/abigail/data/a287298.rb @@ -0,0 +1,22 @@ +A287298 = [] + +A287298[ 2] = "1" +A287298[ 3] = "1" +A287298[ 4] = "3201" +A287298[ 5] = "4301" +A287298[ 6] = "452013" +A287298[ 7] = "6250341" +A287298[ 8] = "47302651" +A287298[ 9] = "823146570" +A287298[10] = "9814072356" +A287298[11] = "A8701245369" +A287298[12] = "B8750A649321" +A287298[13] = "CBA504216873" +A287298[14] = "DC71B30685A924" +A287298[15] = "EDAC93B24658701" +A287298[16] = "FED5B39A42706C81" +A287298[17] = "GFED5A31C6B79802" +A287298[18] = "HGF80ADC53712EB649" +A287298[19] = "IHGFD3408C6E715A2B9" +A287298[20] = "JIHG03DAC457BFE96281" +A287298[22] = "LKJIG5D14B9032FHAC867E" diff --git a/challenge-149/abigail/data/a287298.scm b/challenge-149/abigail/data/a287298.scm new file mode 100644 index 0000000000..0c0bc9f3a4 --- /dev/null +++ b/challenge-149/abigail/data/a287298.scm @@ -0,0 +1,25 @@ +(define A287298 '()) + +(set! A287298 (append A287298 (list ""))) +(set! A287298 (append A287298 (list ""))) +(set! A287298 (append A287298 (list "1"))) +(set! A287298 (append A287298 (list "1"))) +(set! A287298 (append A287298 (list "3201"))) +(set! A287298 (append A287298 (list "4301"))) +(set! A287298 (append A287298 (list "452013"))) +(set! A287298 (append A287298 (list "6250341"))) +(set! A287298 (append A287298 (list "47302651"))) +(set! A287298 (append A287298 (list "823146570"))) +(set! A287298 (append A287298 (list "9814072356"))) +(set! A287298 (append A287298 (list "A8701245369"))) +(set! A287298 (append A287298 (list "B8750A649321"))) +(set! A287298 (append A287298 (list "CBA504216873"))) +(set! A287298 (append A287298 (list "DC71B30685A924"))) +(set! A287298 (append A287298 (list "EDAC93B24658701"))) +(set! A287298 (append A287298 (list "FED5B39A42706C81"))) +(set! A287298 (append A287298 (list "GFED5A31C6B79802"))) +(set! A287298 (append A287298 (list "HGF80ADC53712EB649"))) +(set! A287298 (append A287298 (list "IHGFD3408C6E715A2B9"))) +(set! A287298 (append A287298 (list "JIHG03DAC457BFE96281"))) +(set! A287298 (append A287298 (list ""))) +(set! A287298 (append A287298 (list "LKJIG5D14B9032FHAC867E"))) diff --git a/challenge-149/abigail/data/a287298.sh b/challenge-149/abigail/data/a287298.sh new file mode 100644 index 0000000000..01bac4a026 --- /dev/null +++ b/challenge-149/abigail/data/a287298.sh @@ -0,0 +1,22 @@ +declare -a A287298 + +A287298[2]=1 +A287298[3]=1 +A287298[4]=3201 +A287298[5]=4301 +A287298[6]=452013 +A287298[7]=6250341 +A287298[8]=47302651 +A287298[9]=823146570 +A287298[10]=9814072356 +A287298[11]=A8701245369 +A287298[12]=B8750A649321 +A287298[13]=CBA504216873 +A287298[14]=DC71B30685A924 +A287298[15]=EDAC93B24658701 +A287298[16]=FED5B39A42706C81 +A287298[17]=GFED5A31C6B79802 +A287298[18]=HGF80ADC53712EB649 +A287298[19]=IHGFD3408C6E715A2B9 +A287298[20]=JIHG03DAC457BFE96281 +A287298[22]=LKJIG5D14B9032FHAC867E diff --git a/challenge-149/abigail/data/a287298.tcl b/challenge-149/abigail/data/a287298.tcl new file mode 100644 index 0000000000..6d144950e9 --- /dev/null +++ b/challenge-149/abigail/data/a287298.tcl @@ -0,0 +1,25 @@ +set A287298 list + +lset A287298 0 "" +lset A287298 1 "" +lset A287298 2 "1" +lset A287298 3 "1" +lset A287298 4 "3201" +lset A287298 5 "4301" +lset A287298 6 "452013" +lset A287298 7 "6250341" +lset A287298 8 "47302651" +lset A287298 9 "823146570" +lset A287298 10 "9814072356" +lset A287298 11 "A8701245369" +lset A287298 12 "B8750A649321" +lset A287298 13 "CBA504216873" +lset A287298 14 "DC71B30685A924" +lset A287298 15 "EDAC93B24658701" +lset A287298 16 "FED5B39A42706C81" +lset A287298 17 "GFED5A31C6B79802" +lset A287298 18 "HGF80ADC53712EB649" +lset A287298 19 "IHGFD3408C6E715A2B9" +lset A287298 20 "JIHG03DAC457BFE96281" +lset A287298 21 "" +lset A287298 22 "LKJIG5D14B9032FHAC867E" diff --git a/challenge-149/abigail/data/preprocess b/challenge-149/abigail/data/preprocess new file mode 100755 index 0000000000..830cde7df1 --- /dev/null +++ b/challenge-149/abigail/data/preprocess @@ -0,0 +1,190 @@ +#!/opt/perl/bin/perl + +use 5.032; + +use strict; +use warnings; +no warnings 'syntax'; + +use experimental 'signatures'; +use experimental 'lexical_subs'; + +use LWP::Simple; + +my $lang = lc (shift // "Perl"); + +my $URL = "https://oeis.org/A287298/b287298.txt"; + +my @chars = (0 .. 9, 'A' .. 'Z'); +my @A287298; + +foreach my $line (split (/\n/ => get $URL), + "22 340653564758245010607213613056") { + next unless $line =~ /^([0-9]+)\s+([0-9]+)/; + my ($base, $value) = ($1, $2); + my $value_in_base = `echo "obase=$base; $value" | bc` + =~ s/ ([0-9]{2})/$chars [0 + $1]/egr + =~ s/\n//r; + $A287298 [$base] = [$value_in_base, $value]; +} + +open my $awk_h, ">", "a287298.awk" or die "open a287298.awk: $!"; +open my $bash_h, ">", "a287298.sh" or die "open a287298.sh: $!"; +open my $basic_h, ">", "a287298.bas" or die "open a287298.bas: $!"; +open my $bc_h, ">", "a287298.bc" or die "open a287298.bc: $!"; +open my $c_h, ">", "a287298.c" or die "open a287298.c: $!"; +open my $go_h, ">", "a287298.go" or die "open a287298.go: $!"; +open my $java_h, ">", "a287298.java" or die "open a287298.java: $!"; +open my $lua_h, ">", "a287298.lua" or die "open a287298.lua: $!"; +open my $node_h, ">", "a287298.js" or die "open a287298.js: $!"; +open my $pascal_h, ">", "a287298.p" or die "open a287298.p: $!"; +open my $perl_h, ">", "a287298.pl" or die "open a287298.pl: $!"; +open my $python_h, ">", "a287298.py" or die "open a287298.py: $!"; +open my $r_h, ">", "a287298.r" or die "open a287298.r: $!"; +open my $ruby_h, ">", "a287298.rb" or die "open a287298.rb: $!"; +open my $scheme_h, ">", "a287298.scm" or die "open a287298.scm: $!"; +open my $tcl_h, ">", "a287298.tcl" or die "open a287298.tcl: $!"; + +my $basic_ln = 1000; + +say $awk_h "BEGIN {"; +say $bash_h "declare -a A287298\n"; +say $basic_h "$basic_ln INPUT N\n\n"; +say $c_h "int main (void) {"; +say $c_h " char * A287298 [23];\n"; +say $go_h "func main () {"; +say $go_h " var A287298 [23] string\n"; +say $java_h " public static void main (String [] args) {"; +say $java_h " String [] A287298 = new String [23];"; +say $lua_h "A287298 = {}\n"; +say $node_h "let A287298 = []\n"; +say $pascal_h "var"; +say $pascal_h " A287298: array [0 .. 22] of string;\n"; +say $pascal_h "begin"; +say $perl_h "my \@A287298;\n"; +say $python_h "A287298 = {}\n"; +say $r_h "A287298 <- c ()\n"; +say $ruby_h "A287298 = []\n"; +say $scheme_h "(define A287298 '())\n"; +say $tcl_h "set A287298 list\n"; + +while (my ($i, $info) = each @A287298) { + if (!defined $info) { + printf $c_h " A287298 [%2d] = %24s;\n", $i, "NULL"; + printf $go_h " A287298 [%2d] = %24s\n", $i, '""'; + printf $java_h " A287298 [%2d] = %24s;\n", $i, '""'; + printf $pascal_h " A287298 [%2d] = %24s;\n", $i, "''"; + printf $scheme_h "(set! A287298 (append A287298 (list %24s)))\n", '""'; + printf $tcl_h "lset A287298 %2d %24s\n", $i, '""'; + next; + } + my ($value, $decimal_value) = @$info; + my $dqvalue = qq ["$value"]; + my $sqvalue = qq ['$value']; + + # + # AWK + # + printf $awk_h " A287298 [%2d] = %24s\n", $i, $dqvalue; + + # + # Bash + # + printf $bash_h "A287298[%d]=%s\n", $i, $value; + + # + # BASIC + # + printf $basic_h "%04d IF N = %2d THEN PRINT %24s\n", + ($basic_ln += 10), $i, $dqvalue; + + # + # bc + # + if ($i <= 16) { + printf $bc_h "a287298 [%2d] = %30s\n", $i, $decimal_value; + } + + # + # C + # + printf $c_h " A287298 [%2d] = %24s;\n", $i, $dqvalue; + + # + # Go + # + printf $go_h " A287298 [%2d] = %24s\n", $i, $dqvalue; + + # + # Java + # + printf $java_h " A287298 [%2d] = %24s;\n", $i, $dqvalue; + + # + # Lua + # + printf $lua_h "A287298 [%2d] = %24s\n", $i, $dqvalue; + + # + # Node.js + # + printf $node_h "A287298 [%2d] = %24s\n", $i, $dqvalue; + + # + # Pascal + # + printf $pascal_h " A287298 [%2d] = %24s;\n", $i, $sqvalue; + + # + # Perl + # + printf $perl_h "\$A287298 [%2d] = %24s;\n", $i, $dqvalue; + + # + # Python + # + printf $python_h "A287298 [%2d] = %24s\n", $i, $dqvalue; + + # + # R + # + printf $r_h "A287298 [[%2d]] <- %24s\n", $i, $dqvalue; + + # + # Ruby + # + printf $ruby_h "A287298[%2d] = %24s\n", $i, $dqvalue; + + # + # Scheme + # + printf $scheme_h "(set! A287298 (append A287298 (list %24s)))\n", $dqvalue; + + # + # Tcl + # + printf $tcl_h "lset A287298 %2d %24s\n", $i, $dqvalue; +} +say $awk_h "}"; +say $c_h "}"; +say $go_h "}"; +say $java_h " }"; +say $pascal_h "end."; + + +close $awk_h or die "close a287298.awk: $!"; +close $bash_h or die "close a287298.sh: $!"; +close $basic_h or die "close a287298.bas: $!"; +close $bc_h or die "close a287298.bc: $!"; +close $c_h or die "close a287298.c: $!"; +close $go_h or die "close a287298.go: $!"; +close $java_h or die "close a287298.java: $!"; +close $lua_h or die "close a287298.lua: $!"; +close $node_h or die "close a287298.js: $!"; +close $pascal_h or die "close a287298.p: $!"; +close $perl_h or die "close a287298.pl: $!"; +close $python_h or die "close a287298.py: $!"; +close $r_h or die "close a287298.r: $!"; +close $ruby_h or die "close a287298.rb: $!"; +close $scheme_h or die "close a287298.scm: $!"; +close $tcl_h or die "close a287298.tcl: $!"; -- cgit From 158e2b79cc16f52dd755457be2a39eaa669de421 Mon Sep 17 00:00:00 2001 From: Abigail Date: Mon, 24 Jan 2022 21:17:26 +0100 Subject: Week 149, part 2: Solutions in 16 languages. --- challenge-149/abigail/awk/ch-2.awk | 41 ++++++++++++++++++++ challenge-149/abigail/bash/ch-2.sh | 38 ++++++++++++++++++ challenge-149/abigail/basic/ch-2.bas | 36 ++++++++++++++++++ challenge-149/abigail/bc/ch-2.bc | 67 ++++++++++++++++++++++++++++++++ challenge-149/abigail/c/ch-2.c | 51 +++++++++++++++++++++++++ challenge-149/abigail/go/ch-2.go | 54 ++++++++++++++++++++++++++ challenge-149/abigail/java/ch-2.java | 49 ++++++++++++++++++++++++ challenge-149/abigail/lua/ch-2.lua | 41 ++++++++++++++++++++ challenge-149/abigail/node/ch-2.js | 38 ++++++++++++++++++ challenge-149/abigail/pascal/ch-2.p | 49 ++++++++++++++++++++++++ challenge-149/abigail/perl/ch-2.pl | 72 +++++++++++++++++++++++++++++++++++ challenge-149/abigail/python/ch-2.py | 42 ++++++++++++++++++++ challenge-149/abigail/r/ch-2.r | 47 +++++++++++++++++++++++ challenge-149/abigail/ruby/ch-2.rb | 36 ++++++++++++++++++ challenge-149/abigail/scheme/ch-2.scm | 56 +++++++++++++++++++++++++++ challenge-149/abigail/tcl/ch-2.tcl | 43 +++++++++++++++++++++ 16 files changed, 760 insertions(+) create mode 100644 challenge-149/abigail/awk/ch-2.awk create mode 100644 challenge-149/abigail/bash/ch-2.sh create mode 100644 challenge-149/abigail/basic/ch-2.bas create mode 100644 challenge-149/abigail/bc/ch-2.bc create mode 100644 challenge-149/abigail/c/ch-2.c create mode 100644 challenge-149/abigail/go/ch-2.go create mode 100644 challenge-149/abigail/java/ch-2.java create mode 100644 challenge-149/abigail/lua/ch-2.lua create mode 100644 challenge-149/abigail/node/ch-2.js create mode 100644 challenge-149/abigail/pascal/ch-2.p create mode 100644 challenge-149/abigail/perl/ch-2.pl create mode 100644 challenge-149/abigail/python/ch-2.py create mode 100644 challenge-149/abigail/r/ch-2.r create mode 100644 challenge-149/abigail/ruby/ch-2.rb create mode 100644 challenge-149/abigail/scheme/ch-2.scm create mode 100644 challenge-149/abigail/tcl/ch-2.tcl diff --git a/challenge-149/abigail/awk/ch-2.awk b/challenge-149/abigail/awk/ch-2.awk new file mode 100644 index 0000000000..1b8416f19b --- /dev/null +++ b/challenge-149/abigail/awk/ch-2.awk @@ -0,0 +1,41 @@ +#!/usr/bin/awk + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-149 +# + +# +# Run as: awk -f ch-2.awk < input-file +# + +BEGIN { + A287298 [ 2] = "1" + A287298 [ 3] = "1" + A287298 [ 4] = "3201" + A287298 [ 5] = "4301" + A287298 [ 6] = "452013" + A287298 [ 7] = "6250341" + A287298 [ 8] = "47302651" + A287298 [ 9] = "823146570" + A287298 [10] = "9814072356" + A287298 [11] = "A8701245369" + A287298 [12] = "B8750A649321" + A287298 [13] = "CBA504216873" + A287298 [14] = "DC71B30685A924" + A287298 [15] = "EDAC93B24658701" + A287298 [16] = "FED5B39A42706C81" + A287298 [17] = "GFED5A31C6B79802" + A287298 [18] = "HGF80ADC53712EB649" + A287298 [19] = "IHGFD3408C6E715A2B9" + A287298 [20] = "JIHG03DAC457BFE96281" + A287298 [22] = "LKJIG5D14B9032FHAC867E" +} + +{ + if ($1 in A287298) { + print A287298 [$1] + } + else { + print "Too hard to calculate" + } +} diff --git a/challenge-149/abigail/bash/ch-2.sh b/challenge-149/abigail/bash/ch-2.sh new file mode 100644 index 0000000000..ba798b6707 --- /dev/null +++ b/challenge-149/abigail/bash/ch-2.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-149 +# + +# +# Run as: bash ch-2.sh < input-file +# + +set -f + +declare -a A287298 + +A287298[2]=1 +A287298[3]=1 +A287298[4]=3201 +A287298[5]=4301 +A287298[6]=452013 +A287298[7]=6250341 +A287298[8]=47302651 +A287298[9]=823146570 +A287298[10]=9814072356 +A287298[11]=A8701245369 +A287298[12]=B8750A649321 +A287298[13]=CBA504216873 +A287298[14]=DC71B30685A924 +A287298[15]=EDAC93B24658701 +A287298[16]=FED5B39A42706C81 +A287298[17]=GFED5A31C6B79802 +A287298[18]=HGF80ADC53712EB649 +A287298[19]=IHGFD3408C6E715A2B9 +A287298[20]=JIHG03DAC457BFE96281 +A287298[22]=LKJIG5D14B9032FHAC867E + +while read n +do echo ${A287298[$n]:-"Too hard to calculate"} +done diff --git a/challenge-149/abigail/basic/ch-2.bas b/challenge-149/abigail/basic/ch-2.bas new file mode 100644 index 0000000000..837319f2fc --- /dev/null +++ b/challenge-149/abigail/basic/ch-2.bas @@ -0,0 +1,36 @@ +0010 REM +0020 REM See https://theweeklychallenge.org/blog/perl-weekly-challenge-149 +0030 REM + +0040 REM +0050 REM Run as: basic ch-2.bas < input-file +0060 REM + +1000 INPUT N +1005 IF N < 0 THEN END + + +1010 IF N = 2 THEN PRINT "1" +1020 IF N = 3 THEN PRINT "1" +1030 IF N = 4 THEN PRINT "3201" +1040 IF N = 5 THEN PRINT "4301" +1050 IF N = 6 THEN PRINT "452013" +1060 IF N = 7 THEN PRINT "6250341" +1070 IF N = 8 THEN PRINT "47302651" +1080 IF N = 9 THEN PRINT "823146570" +1090 IF N = 10 THEN PRINT "9814072356" +1100 IF N = 11 THEN PRINT "A8701245369" +1110 IF N = 12 THEN PRINT "B8750A649321" +1120 IF N = 13 THEN PRINT "CBA504216873" +1130 IF N = 14 THEN PRINT "DC71B30685A924" +1140 IF N = 15 THEN PRINT "EDAC93B24658701" +1150 IF N = 16 THEN PRINT "FED5B39A42706C81" +1160 IF N = 17 THEN PRINT "GFED5A31C6B79802" +1170 IF N = 18 THEN PRINT "HGF80ADC53712EB649" +1180 IF N = 19 THEN PRINT "IHGFD3408C6E715A2B9" +1190 IF N = 20 THEN PRINT "JIHG03DAC457BFE96281" +1195 IF N = 21 THEN PRINT "Too hard to calculate" +1200 IF N = 22 THEN PRINT "LKJIG5D14B9032FHAC867E" +1210 IF N > 22 THEN PRINT "Too hard to calculate" + +5000 GOTO 1000 diff --git a/challenge-149/abigail/bc/ch-2.bc b/challenge-149/abigail/bc/ch-2.bc new file mode 100644 index 0000000000..e4a9d9a2aa --- /dev/null +++ b/challenge-149/abigail/bc/ch-2.bc @@ -0,0 +1,67 @@ +#!/usr/bin/bc + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-149 +# + +# +# Run as: bc ch-2.bc < input-file +# + +a287298 [ 2] = 1 +a287298 [ 3] = 1 +a287298 [ 4] = 225 +a287298 [ 5] = 576 +a287298 [ 6] = 38025 +a287298 [ 7] = 751689 +a287298 [ 8] = 10323369 +a287298 [ 9] = 355624164 +a287298 [10] = 9814072356 +a287298 [11] = 279740499025 +a287298 [12] = 8706730814089 +a287298 [13] = 23132511879129 +a287298 [14] = 11027486960232964 +a287298 [15] = 435408094460869201 +a287298 [16] = 18362780530794065025 + +while (1) { + n = read () + if (n == 0) { + break + } + done = 0 + if (n <= 16) { + obase=n + a287298 [n] + done = 1 + } + if (n == 17) { + "GFED5A31C6B79802" + done = 1 + } + if (n == 18) { + "HGF80ADC53712EB649" + done = 1 + } + if (n == 19) { + "IHGFD3408C6E715A2B9" + done = 1 + } + if (n == 20) { + "JIHG03DAC457BFE96281" + done = 1 + } + if (n == 22) { + "LKJIG5D14B9032FHAC867E" + done = 1 + } + if (done == 0) { + "Too hard to calculate" + } + if (n > 16) { + " +" + } +} + +halt diff --git a/challenge-149/abigail/c/ch-2.c b/challenge-149/abigail/c/ch-2.c new file mode 100644 index 0000000000..6f9c25796d --- /dev/null +++ b/challenge-149/abigail/c/ch-2.c @@ -0,0 +1,51 @@ +# include +# include +# include + +/* + * See https://theweeklychallenge.org/blog/perl-weekly-challenge-149 + */ + +/* + * Run as: cc -o ch-2.o ch-2.c; ./ch-2.o < input-file + */ + +int main (void) { + char * A287298 [23]; + int n; + + A287298 [ 0] = NULL; + A287298 [ 1] = NULL; + A287298 [ 2] = "1"; + A287298 [ 3] = "1"; + A287298 [ 4] = "3201"; + A287298 [ 5] = "4301"; + A287298 [ 6] = "452013"; + A287298 [ 7] = "6250341"; + A287298 [ 8] = "47302651"; + A287298 [ 9] = "823146570"; + A287298 [10] = "9814072356"; + A287298 [11] = "A8701245369"; + A287298 [12] = "B8750A649321"; + A287298 [13] = "CBA504216873"; + A287298 [14] = "DC71B30685A924"; + A287298 [15] = "EDAC93B24658701"; + A287298 [16] = "FED5B39A42706C81"; + A287298 [17] = "GFED5A31C6B79802"; + A287298 [18] = "HGF80ADC53712EB649"; + A287298 [19] = "IHGFD3408C6E715A2B9"; + A287298 [20] = "JIHG03DAC457BFE96281"; + A287298 [21] = NULL; + A287298 [22] = "LKJIG5D14B9032FHAC867E"; + + while (scanf ("%d", &n) == 1) { + if (n > 22 || A287298 [n] == NULL) { + printf ("Too hard to calculate\n"); + } + else { + printf ("%s\n", A287298 [n]); + } + } + + return (0); +} diff --git a/challenge-149/abigail/go/ch-2.go b/challenge-149/abigail/go/ch-2.go new file mode 100644 index 0000000000..b13f0eb72c --- /dev/null +++ b/challenge-149/abigail/go/ch-2.go @@ -0,0 +1,54 @@ +package main + +// +// See https://theweeklychallenge.org/blog/perl-weekly-challenge-149 +// + +// +// Run as: go run ch-2.go < input-file +// + +import ( + "fmt" +) + +func main () { + var A287298 [23] string + + A287298 [ 0] = "" + A287298 [ 1] = "" + A287298 [ 2] = "1" + A287298 [ 3] = "1" + A287298 [ 4] = "3201" + A287298 [ 5] = "4301" + A287298 [ 6] = "452013" + A287298 [ 7] = "6250341" + A287298 [ 8] = "47302651" + A287298 [ 9] = "823146570" + A287298 [10] = "9814072356" + A287298 [11] = "A8701245369" + A287298 [12] = "B8750A649321" + A287298 [13] = "CBA504216873" + A287298 [14] = "DC71B30685A924" + A287298 [15] = "EDAC93B24658701" + A287298 [16] = "FED5B39A42706C81" + A287298 [17] = "GFED5A31C6B79802" + A287298 [18] = "HGF80ADC53712EB649" + A287298 [19] = "IHGFD3408C6E715A2B9" + A287298 [20] = "JIHG03DAC457BFE96281" + A287298 [21] = "" + A287298 [22] = "LKJIG5D14B9032FHAC867E" + + for { + var n int + c, err := fmt . Scanf ("%d", &n) + if c != 1 || err != nil { + break + } + if (n > 22 || len (A287298 [n]) == 0) { + fmt . Print ("Too hard to calculate\n") + } else { + fmt . Printf ("%s\n", A287298 [n]) + } + } +} diff --git a/challenge-149/abigail/java/ch-2.java b/challenge-149/abigail/java/ch-2.java new file mode 100644 index 0000000000..46cdcd7432 --- /dev/null +++ b/challenge-149/abigail/java/ch-2.java @@ -0,0 +1,49 @@ +// +// See https://theweeklychallenge.org/blog/perl-weekly-challenge-149 +// + +// +// Run as: ln ch-2.java ch2.java; javac ch2.java; java ch2 < input-file +// + +import java.util.*; + +public class ch2 { + public static void main (String [] args) { + String [] A287298 = new String [23]; + A287298 [ 0] = ""; + A287298 [ 1] = ""; + A287298 [ 2] = "1"; + A287298 [ 3] = "1"; + A287298 [ 4] = "3201"; + A287298 [ 5] = "4301"; + A287298 [ 6] = "452013"; + A287298 [ 7] = "6250341"; + A287298 [ 8] = "47302651"; + A287298 [ 9] = "823146570"; + A287298 [10] = "9814072356"; + A287298 [11] = "A8701245369"; + A287298 [12] = "B8750A649321"; + A287298 [13] = "CBA504216873"; + A287298 [14] = "DC71B30685A924"; + A287298 [15] = "EDAC93B24658701"; + A287298 [16] = "FED5B39A42706C81"; + A287298 [17] = "GFED5A31C6B79802"; + A287298 [18] = "HGF80ADC53712EB649"; + A287298 [19] = "IHGFD3408C6E715A2B9"; + A287298 [20] = "JIHG03DAC457BFE96281"; + A287298 [21] = ""; + A287298 [22] = "LKJIG5D14B9032FHAC867E"; + + Scanner scanner = new Scanner (System . in); + while (scanner . hasNextInt ()) { + int n = scanner . nextInt (); + if (n > 22 || A287298 [n] . length () == 0) { + System . out . println ("Too hard to calculate"); + } + else { + System . out . printf ("%s\n", A287298 [n]); + } + } + } +} diff --git a/challenge-149/abigail/lua/ch-2.lua b/challenge-149/abigail/lua/ch-2.lua new file mode 100644 index 0000000000..d4bc1d556f --- /dev/null +++ b/challenge-149/abigail/lua/ch-2.lua @@ -0,0 +1,41 @@ +#!/opt/local/bin/lua + +-- +-- See https://theweeklychallenge.org/blog/perl-weekly-challenge-149 +-- + +-- +-- Run as: lua ch-2.lua < input-file +-- + +A287298 = {} + +A287298 [ 2] = "1" +A287298 [ 3] = "1" +A287298 [ 4] = "3201" +A287298 [ 5] = "4301" +A287298 [ 6] = "452013" +A287298 [ 7] = "6250341" +A287298 [ 8] = "47302651" +A287298 [ 9] = "823146570" +A287298 [10] = "9814072356" +A287298 [11] = "A8701245369" +A287298 [12] = "B8750A649321" +A287298 [13] = "CBA504216873" +A287298 [14] = "DC71B30685A924" +A287298 [15] = "EDAC93B24658701" +A287298 [16] = "FED5B39A42706C81" +A287298 [17] = "GFED5A31C6B79802" +A287298 [18] = "HGF80ADC53712EB649" +A287298 [19] = "IHGFD3408C6E715A2B9" +A287298 [20] = "JIHG03DAC457BFE96281" +A287298 [22] = "LKJIG5D14B9032FHAC867E" + +for n in io . lines () do + n = tonumber (n) + if A287298 [n] == nil then + print "Too hard to calculate" + else + print (A287298 [n]) + end +end diff --git a/challenge-149/abigail/node/ch-2.js b/challenge-149/abigail/node/ch-2.js new file mode 100644 index 0000000000..464ebf74ee --- /dev/null +++ b/challenge-149/abigail/node/ch-2.js @@ -0,0 +1,38 @@ +#!/usr/local/bin/node + +// +// See https://theweeklychallenge.org/blog/perl-weekly-challenge-149 +// + +// +// Run as: node ch-2.js < input-file +// + +let A287298 = [] + +A287298 [ 2] = "1" +A287298 [ 3] = "1" +A287298 [ 4] = "3201" +A287298 [ 5] = "4301" +A287298 [ 6] = "452013" +A287298 [ 7] = "6250341" +A287298 [ 8] = "47302651" +A287298 [ 9] = "823146570" +A287298 [10] = "9814072356" +A287298 [11] = "A8701245369" +A287298 [12] = "B8750A649321" +A287298 [13] = "CBA504216873" +A287298 [14] = "DC71B30685A924" +A287298 [15] = "EDAC93B24658701" +A287298 [16] = "FED5B39A42706C81" +A287298 [17] = "GFED5A31C6B79802" +A287298 [18] = "HGF80ADC53712EB649" +A287298 [19] = "IHGFD3408C6E715A2B9" +A287298 [20] = "JIHG03DAC457BFE96281" +A287298 [22] = "LKJIG5D14B9032FHAC867E" + + require ('readline') +. createInterface ({input: process . stdin}) +. on ('line', n => { + console . log (A287298 [n] || "Too hard to calculate") +}) diff --git a/challenge-149/abigail/pascal/ch-2.p b/challenge-149/abigail/pascal/ch-2.p new file mode 100644 index 0000000000..ae7df583aa --- /dev/null +++ b/challenge-149/abigail/pascal/ch-2.p @@ -0,0 +1,49 @@ +Program ch2; + +(* *) +(* See https://theweeklychallenge.org/blog/perl-weekly-challenge-149 *) +(* *) + +(* *) +(* Run as: fpc -och-2.out ch-2.p; ./ch-2.out < input-file *) +(* *) + +var + A287298: array [0 .. 22] of string; + n: integer; + +begin + A287298 [ 0] := ''; + A287298 [ 1] := ''; + A287298 [ 2] := '1'; + A287298 [ 3] := '1'; + A287298 [ 4] := '3201'; + A287298 [ 5] := '4301'; + A287298 [ 6] := '452013'; + A287298 [ 7] := '6250341'; + A287298 [ 8] := '47302651'; + A287298 [ 9] := '823146570'; + A287298 [10] := '9814072356'; + A287298 [11] := 'A8701245369'; + A287298 [12] := 'B8750A649321'; + A287298 [13] := 'CBA504216873'; + A287298 [14] := 'DC71B30685A924'; + A287298 [15] := 'EDAC93B24658701'; + A287298 [16] := 'FED5B39A42706C81'; + A287298 [17] := 'GFED5A31C6B79802'; + A287298 [18] := 'HGF80ADC53712EB649'; + A287298 [19] := 'IHGFD3408C6E715A2B9'; + A287298 [20] := 'JIHG03DAC457BFE96281'; + A287298 [21] := ''; + A287298 [22] := 'LKJIG5D14B9032FHAC867E'; + + while not eof do begin + readln (n); + if (n > 22) or (length (A287298 [n]) = 0) then begin + writeln ('Too hard to calculate'); + end + else begin + writeln (A287298 [n]); + end; + end; +end. diff --git a/challenge-149/abigail/perl/ch-2.pl b/challenge-149/abigail/perl/ch-2.pl new file mode 100644 index 0000000000..3538416102 --- /dev/null +++ b/challenge-149/abigail/perl/ch-2.pl @@ -0,0 +1,72 @@ +#!/opt/perl/bin/perl + +use 5.032; + +use strict; +use warnings; +no warnings 'syntax'; + +use experimental 'signatures'; +use experimental 'lexical_subs'; + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-149 +# + +# +# Run as: perl ch-2.pl < input-file +# + +# +# This sequence A287298 in the OEIS. +# +# It's worrysome that the OEIS only lists entries up to n = 22 (while +# skipping n = 21). +# +# And if we look at the given Python program to generate the entries, +# we see it's very slow: it starts with the largest number in base b +# where all the digits are distinct, of which it takes the integer +# square root. This is m. We then square m, getting m2. If all the digits +# of m2 are different, we done. Else, we keep decrementing m by 1 and +# repeat the process till we have an m2 of which all the digits are +# different. +# +# This is *extremely slow* unless n is small. +# +# Therefore, we will not repeat this calculation. Instead, we will +# just use a loopup table, using the values from +# https://oeis.org/A287298/b287298.txt. +# +# This lookup table was created by ../data/preprocess: +# - We fetch the values from https://oeis.org/A287298/b287298.txt, +# and inject the value for base = 22 +# - We then use bc to translate the decimal numbers to the +# appropriate base. +# - For bases exceeding 16, bc doesn't use letters, but numbers; +# we use a regexp to fix those. +# + +my @A287298; + +$A287298 [ 2] = "1"; +$A287298 [ 3] = "1"; +$A287298 [ 4] = "3201"; +$A287298 [ 5] = "4301"; +$A287298 [ 6] = "452013"; +$A287298 [ 7] = "6250341"; +$A287298 [ 8] = "47302651"; +$A287298 [ 9] = "823146570"; +$A287298 [10] = "9814072356"; +$A287298 [11] = "A8701245369"; +$A287298 [12] = "B8750A649321"; +$A287298 [13] = "CBA504216873"; +$A287298 [14] = "DC71B30685A924"; +$A287298 [15] = "EDAC93B24658701"; +$A287298 [16] = "FED5B39A42706C81"; +$A287298 [17] = "GFED5A31C6B79802"; +$A287298 [18] = "HGF80ADC53712EB649"; +$A287298 [19] = "IHGFD3408C6E715A2B9"; +$A287298 [20] = "JIHG03DAC457BFE96281"; +$A287298 [22] = "LKJIG5D14B9032FHAC867E"; + +say $A287298 [$_] // "Too hard to calculate" while <>; diff --git a/challenge-149/abigail/python/ch-2.py b/challenge-149/abigail/python/ch-2.py new file mode 100644 index 0000000000..68b490cfa4 --- /dev/null +++ b/challenge-149/abigail/python/ch-2.py @@ -0,0 +1,42 @@ +#!/usr/local/bin/python3 + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-149 +# + +# +# Run as: python ch-2.py < input-file +# + +A287298 = {} + +A287298 [ 2] = "1" +A287298 [ 3] = "1" +A287298 [ 4] = "3201" +A287298 [ 5] = "4301" +A287298 [ 6] = "452013" +A287298 [ 7] = "6250341" +A287298 [ 8] = "47302651" +A287298 [ 9] = "823146570" +A287298 [10] = "9814072356" +A287298 [11] = "A8701245369" +A287298 [12] = "B8750A649321" +A287298 [13] = "CBA504216873" +A287298 [14] = "DC71B30685A924" +A287298 [15] = "EDAC93B24658701" +A287298 [16] = "FED5B39A42706C81" +A287298 [17] = "GFED5A31C6B79802" +A287298 [18] = "HGF80ADC53712EB649" +A287298 [19] = "IHGFD3408C6E715A2B9" +A287298 [20] = "JIHG03DAC457BFE96281" +A287298 [22] = "LKJIG5D14B9032FHAC867E" + + +import fileinput + +for n in fileinput . input (): + n = int (n) + if n in A287298: + print (A287298 [n]) + else: + print ("Too hard to calculate") diff --git a/challenge-149/abigail/r/ch-2.r b/challenge-149/abigail/r/ch-2.r new file mode 100644 index 0000000000..4d215adb1f --- /dev/null +++ b/challenge-149/abigail/r/ch-2.r @@ -0,0 +1,47 @@ +#!/usr/local/bin/Rscript + +# +# See https://theweeklychallenge.org/blog/perl-weekly-challenge-149 +# + +# +# Run as: Rscript ch-2.r < input-file +# + +A287298 <- c () + +A287298 [[ 2]] <- "1" +A287298 [[ 3]] <- "1" +A287298 [[ 4]] <- "3201" +A287298 [[ 5]] <- "4301" +A287298 [[ 6]] <- "452013" +A287298 [[ 7]] <- "6250341" +A287298 [[ 8]] <- "47302651" +A287298 [[ 9]] <- "823146570" +A287298 [[10]] <- "9814072356" +A287298 [[11]] <- "A8701245369" +A287298 [[12]] <- "B8750A649321" +A287298 [[13]] <- "CBA504216873" +A287298 [[14]] <- "DC71B30685A924" +A287298 [[15]] <- "EDAC93B24658701" +A287298 [[16]] <- "FED5B39A42706C81" +A287298 [[17]] <- "GFED5A31C6B79802" +A287298 [[18]] <- "HGF80ADC53712EB649" +A287298 [[19]] <- "IHGFD3408C6E715A2B9" +A287298 [[20]] <- "JIHG03DAC457BFE96281" +A287298 [[22]] <- "LKJIG5D14B9032FHAC867E" + +stdin <- file ('stdin', 'r') +repeat { + n <- readLines (stdin, n = 1) + if (length (n) == 0) { + break + } + n = as.integer (n) + if (n > 22 || is.null (A287298 [[n]])) { + cat ("Too hard to calculate\n") + } + else { + cat (A2