aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbigail <abigail@abigail.be>2021-03-03 15:42:22 +0100
committerAbigail <abigail@abigail.be>2021-03-03 15:42:22 +0100
commitb904febdfd193990117ec7dac30bbaa920986e21 (patch)
treeffc2d830a16021f07ec4113d07bbdffc56b22574
parent26ae49523623bfe48ad8ccfa78efbea4d1378133 (diff)
downloadperlweeklychallenge-club-b904febdfd193990117ec7dac30bbaa920986e21.tar.gz
perlweeklychallenge-club-b904febdfd193990117ec7dac30bbaa920986e21.tar.bz2
perlweeklychallenge-club-b904febdfd193990117ec7dac30bbaa920986e21.zip
BASIC solution for week 102, part 1
-rw-r--r--challenge-102/abigail/README.md1
-rw-r--r--challenge-102/abigail/basic/ch-1.bas142
-rwxr-xr-xchallenge-102/abigail/data/preprocess12
-rw-r--r--challenge-102/abigail/t/ctest.ini3
4 files changed, 158 insertions, 0 deletions
diff --git a/challenge-102/abigail/README.md b/challenge-102/abigail/README.md
index 687594c5f5..fd2a502c74 100644
--- a/challenge-102/abigail/README.md
+++ b/challenge-102/abigail/README.md
@@ -51,6 +51,7 @@ feasible.
### Solutions
* [AWK](awk/ch-1.awk)
* [Bash](bash/ch-1.sh)
+* [BASIC](basic/ch-1.bas)
* [C](c/ch-1.c)
* [Lua](lua/ch-1.lua)
* [Node.js](node/ch-1.js)
diff --git a/challenge-102/abigail/basic/ch-1.bas b/challenge-102/abigail/basic/ch-1.bas
new file mode 100644
index 0000000000..0102be462d
--- /dev/null
+++ b/challenge-102/abigail/basic/ch-1.bas
@@ -0,0 +1,142 @@
+0100 REM
+0110 REM See ../README.md
+0120 REM
+
+0130 REM
+0140 REM Run as: basic.pl ch-1.bas < input-file
+0150 REM Input file should end with a negative number.
+0160 REM
+
+0170 REM
+0180 REM We are making use of the CPAN module Language::Basic
+0190 REM
+
+1000 INPUT length
+1005 IF length < 0 THEN END
+
+1010 IF length = 2 THEN PRINT "65"
+1020 IF length = 6 THEN PRINT "621770"
+1030 IF length = 9 THEN PRINT "281089082"
+1040 IF length = 10 THEN PRINT "2022652202"
+1050 IF length = 10 THEN PRINT "2042832002"
+1060 IF length = 12 THEN PRINT "868591084757"
+1070 IF length = 12 THEN PRINT "872546974178"
+1080 IF length = 12 THEN PRINT "872568754178"
+1090 IF length = 13 THEN PRINT "6979302951885"
+1100 IF length = 14 THEN PRINT "20313693904202"
+1110 IF length = 14 THEN PRINT "20313839704202"
+1120 IF length = 14 THEN PRINT "20331657922202"
+1130 IF length = 14 THEN PRINT "20331875722202"
+1140 IF length = 14 THEN PRINT "20333875702202"
+1150 IF length = 14 THEN PRINT "40313893704200"
+1160 IF length = 14 THEN PRINT "40351893720200"
+1170 IF length = 15 THEN PRINT "200142385731002"
+1180 IF length = 15 THEN PRINT "204238494066002"
+1190 IF length = 15 THEN PRINT "221462345754122"
+1200 IF length = 15 THEN PRINT "244062891224042"
+1210 IF length = 15 THEN PRINT "245518996076442"
+1220 IF length = 15 THEN PRINT "248359494187442"
+1230 IF length = 15 THEN PRINT "403058392434500"
+1240 IF length = 15 THEN PRINT "441054594034340"
+1250 IF length = 15 THEN PRINT "816984566129618"
+1260 IF length = 16 THEN PRINT "2078311262161202"
+1270 IF length = 16 THEN PRINT "2133786945766212"
+1280 IF length = 16 THEN PRINT "2135568943984212"
+1290 IF length = 16 THEN PRINT "2135764587964212"
+1300 IF length = 16 THEN PRINT "2135786765764212"
+1310 IF length = 16 THEN PRINT "4135786945764210"
+1320 IF length = 16 THEN PRINT "6157577986646405"
+1330 IF length = 16 THEN PRINT "6889765708183410"
+1340 IF length = 16 THEN PRINT "8052956026592517"
+1350 IF length = 16 THEN PRINT "8052956206592517"
+1360 IF length = 16 THEN PRINT "8191154686620818"
+1370 IF length = 16 THEN PRINT "8191156864620818"
+1380 IF length = 16 THEN PRINT "8191376864400818"
+1390 IF length = 16 THEN PRINT "8650327689541457"
+1400 IF length = 16 THEN PRINT "8650349867341457"
+1410 IF length = 17 THEN PRINT "22542040692914522"
+1420 IF length = 17 THEN PRINT "67725910561765640"
+1430 IF length = 17 THEN PRINT "86965750494756968"
+1440 IF length = 18 THEN PRINT "225342456863243522"
+1450 IF length = 18 THEN PRINT "225342458663243522"
+1460 IF length = 18 THEN PRINT "225342478643243522"
+1470 IF length = 18 THEN PRINT "284684666566486482"
+1480 IF length = 18 THEN PRINT "284684868364486482"
+1490 IF length = 18 THEN PRINT "297128548234950692"
+1500 IF length = 18 THEN PRINT "297128722852950692"
+1510 IF length = 18 THEN PRINT "297148324656930692"
+1520 IF length = 18 THEN PRINT "297148546434930692"
+1530 IF length = 18 THEN PRINT "497168548234910690"
+1540 IF length = 18 THEN PRINT "619431353040136925"
+1550 IF length = 18 THEN PRINT "619631153042134925"
+1560 IF length = 18 THEN PRINT "631688638047992345"
+1570 IF length = 18 THEN PRINT "633288858025996145"
+1580 IF length = 18 THEN PRINT "633488632647994145"
+1590 IF length = 18 THEN PRINT "653488856225994125"
+1600 IF length = 18 THEN PRINT "811865096390477018"
+1610 IF length = 18 THEN PRINT "865721270017296468"
+1620 IF length = 18 THEN PRINT "871975098681469178"
+1630 IF length = 18 THEN PRINT "898907259301737498"
+1640 IF length = 19 THEN PRINT "2042401829204402402"
+1650 IF length = 19 THEN PRINT "2060303819041450202"
+1660 IF length = 19 THEN PRINT "2420424089100600242"
+1670 IF length = 19 THEN PRINT "2551755006254571552"
+1680 IF length = 19 THEN PRINT "2702373360882732072"
+1690 IF length = 19 THEN PRINT "2825378427312735282"
+1700 IF length = 19 THEN PRINT "6531727101458000045"
+1710 IF length = 19 THEN PRINT "6988066446726832640"
+1720 IF length = 19 THEN PRINT "8066308349502036608"
+1730 IF length = 19 THEN PRINT "8197906905009010818"
+1740 IF length = 19 THEN PRINT "8200756128308135597"
+1750 IF length = 19 THEN PRINT "8320411466598809138"
+1760 IF length = 20 THEN PRINT "22134434735752443122"
+1770 IF length = 20 THEN PRINT "22134434753752443122"
+1780 IF length = 20 THEN PRINT "22134436953532443122"
+1790 IF length = 20 THEN PRINT "22136414517954423122"
+1800 IF length = 20 THEN PRINT "22136414971554423122"
+1810 IF length = 20 THEN PRINT "22136456771730423122"
+1820 IF length = 20 THEN PRINT "61952807156239928885"
+1830 IF length = 20 THEN PRINT "61999171315484316965"
+1840 IF length = 20 THEN PRINT "65459144877856561700"
+1850 IF length = 21 THEN PRINT "208393425242000083802"
+1860 IF length = 21 THEN PRINT "219518549668074815912"
+1870 IF length = 21 THEN PRINT "257661195832219326752"
+1880 IF length = 21 THEN PRINT "286694688797362186682"
+1890 IF length = 21 THEN PRINT "837982875780054779738"
+1900 IF length = 22 THEN PRINT "2414924301133245383042"
+1910 IF length = 22 THEN PRINT "2414924323311045383042"
+1920 IF length = 22 THEN PRINT "2414946523311023183042"
+1930 IF length = 22 THEN PRINT "2576494891793995836752"
+1940 IF length = 22 THEN PRINT "2576494893971995836752"
+1950 IF length = 22 THEN PRINT "2620937863931054483162"
+1960 IF length = 22 THEN PRINT "2620937863931054483162"
+1970 IF length = 22 THEN PRINT "2620955641393276283162"
+1980 IF length = 22 THEN PRINT "2622935621573476481162"
+1990 IF length = 22 THEN PRINT "2622935643751276481162"
+2000 IF length = 22 THEN PRINT "2622937641933274481162"
+2010 IF length = 22 THEN PRINT "2622955841933256281162"
+2020 IF length = 22 THEN PRINT "2622957843751254281162"
+2030 IF length = 22 THEN PRINT "2727651947516658327272"
+2040 IF length = 22 THEN PRINT "2747736918335953517072"
+2050 IF length = 22 THEN PRINT "2788047668617596408872"
+2060 IF length = 22 THEN PRINT "2788047848617776408872"
+2070 IF length = 22 THEN PRINT "2788047868437576408872"
+2080 IF length = 22 THEN PRINT "2788047888617376408872"
+2090 IF length = 22 THEN PRINT "2939501759705522349392"
+2100 IF length = 22 THEN PRINT "2939503375709360349392"
+2110 IF length = 22 THEN PRINT "2939503537707740349392"
+2120 IF length = 22 THEN PRINT "2939521359525562149392"
+2130 IF length = 22 THEN PRINT "2939521557527542149392"
+2140 IF length = 22 THEN PRINT "2939523577527340149392"
+2150 IF length = 22 THEN PRINT "2939523779525320149392"
+2160 IF length = 22 THEN PRINT "2959503377707360349192"
+2170 IF length = 22 THEN PRINT "6344828989519887483525"
+2180 IF length = 22 THEN PRINT "8045841652464561594308"
+2190 IF length = 22 THEN PRINT "8045841654642561594308"
+2200 IF length = 22 THEN PRINT "8655059576513659814468"
+2210 IF length = 22 THEN PRINT "8655059772157639814468"
+2220 IF length = 22 THEN PRINT "8655079374155679614468"
+2230 IF length = 22 THEN PRINT "8655079574515659614468"
+2240 IF length = 22 THEN PRINT "8888070771864228883913"
+
+5000 GOTO 1000
diff --git a/challenge-102/abigail/data/preprocess b/challenge-102/abigail/data/preprocess
index 28a195f0fe..3e16a0fc07 100755
--- a/challenge-102/abigail/data/preprocess
+++ b/challenge-102/abigail/data/preprocess
@@ -24,6 +24,7 @@ my @bs = sort {$a <=> $b} grep {$buckets [$_]} keys @buckets;
open my $awk_h, ">", "rn.awk" or die "open rn.awk: $!";
open my $bash_h, ">", "rn.sh" or die "open rn.sh: $!";
+open my $basic_h, ">", "rn.bas" or die "open rn.bas: $!";
open my $c_h, ">", "rn.c" or die "open rn.c: $!";
open my $lua_h, ">", "rn.lua" or die "open rn.lua: $!";
open my $node_h, ">", "rn.js" or die "open rn.js: $!";
@@ -31,8 +32,11 @@ open my $perl_h, ">", "rn.pl" or die "open rn.pl: $!";
open my $python_h, ">", "rn.py" or die "open rn.py: $!";
open my $ruby_h, ">", "rn.rb" or die "open rn.rb: $!";
+my $basic_ln = 1000;
+
say $awk_h "BEGIN {";
say $bash_h "declare -a rare_numbers\n";
+say $basic_h "$basic_ln INPUT length\n\n";
say $c_h "char * rare_numbers [23];\n";
say $c_h "int main () {";
say $lua_h "rare_numbers = {}\n";
@@ -65,6 +69,14 @@ foreach my $bs (0 .. 22) {
print $bash_h "\n";
#
+ # BASIC
+ #
+ for my $rn (@{$buckets [$bs]}) {
+ printf $basic_h qq {%03d IF length = %2d THEN PRINT %24s\n}
+ => ($basic_ln += 10), $bs, qq {"$rn"}
+ }
+
+ #
# C
#
printf $c_h ' rare_numbers [%2d] = ', $bs;
diff --git a/challenge-102/abigail/t/ctest.ini b/challenge-102/abigail/t/ctest.ini
index 9138922364..ace56ff245 100644
--- a/challenge-102/abigail/t/ctest.ini
+++ b/challenge-102/abigail/t/ctest.ini
@@ -7,3 +7,6 @@
1-6 = Multiple inputs
1-7 = Exceed size of largest known rare number
2-1 = Given examples
+
+[challenges/1/basic]
+add_to_input = -1