aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-102/abigail/README.md2
-rw-r--r--challenge-102/abigail/basic/ch-1.bas142
-rw-r--r--challenge-102/abigail/befunge-93/ch-2.bf935
-rwxr-xr-xchallenge-102/abigail/data/preprocess12
-rw-r--r--challenge-102/abigail/t/ctest.ini7
-rw-r--r--challenge-102/abigail/t/input-2-23
-rw-r--r--challenge-102/abigail/t/output-2-2.exp3
7 files changed, 174 insertions, 0 deletions
diff --git a/challenge-102/abigail/README.md b/challenge-102/abigail/README.md
index 687594c5f5..234a9ee34f 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)
@@ -87,6 +88,7 @@ such length-`N` string.
### Solutions
* [AWK](awk/ch-2.awk)
* [Bash](bash/ch-2.sh)
+* [Befunge-93](befunge-93/ch-2.bf93)
* [C](c/ch-2.c)
* [Lua](lua/ch-2.lua)
* [Node.js](node/ch-2.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/befunge-93/ch-2.bf93 b/challenge-102/abigail/befunge-93/ch-2.bf93
new file mode 100644
index 0000000000..32e280168e
--- /dev/null
+++ b/challenge-102/abigail/befunge-93/ch-2.bf93
@@ -0,0 +1,5 @@
+>&:1+!#@_11p >"#" 11g :1-!#v_ 11g1-11p > :55+% 86*+\ 11g1-11p 55+/ :#v_ v
+ $ ^ < $
+ ^ _v# g11 <
+^ >:#v_$ 55+,
+ ^ ,<
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..674136fe27 100644
--- a/challenge-102/abigail/t/ctest.ini
+++ b/challenge-102/abigail/t/ctest.ini
@@ -7,3 +7,10 @@
1-6 = Multiple inputs
1-7 = Exceed size of largest known rare number
2-1 = Given examples
+2-2 = Test larger numbers
+
+[challenges/1/basic]
+add_to_input = -1
+
+[2-2/befunge]
+skip = Befunge-93 can only store signed 8-bit numbers
diff --git a/challenge-102/abigail/t/input-2-2 b/challenge-102/abigail/t/input-2-2
new file mode 100644
index 0000000000..8ebdeacc82
--- /dev/null
+++ b/challenge-102/abigail/t/input-2-2
@@ -0,0 +1,3 @@
+500
+700
+1000
diff --git a/challenge-102/abigail/t/output-2-2.exp b/challenge-102/abigail/t/output-2-2.exp
new file mode 100644
index 0000000000..27b796a211
--- /dev/null
+++ b/challenge-102/abigail/t/output-2-2.exp
@@ -0,0 +1,3 @@
+#3#5#7#9#12#15#18#21#24#27#30#33#36#39#42#45#48#51#54#57#60#63#66#69#72#75#78#81#84#87#90#93#96#100#104#108#112#116#120#124#128#132#136#140#144#148#152#156#160#164#168#172#176#180#184#188#192#196#200#204#208#212#216#220#224#228#232#236#240#244#248#252#256#260#264#268#272#276#280#284#288#292#296#300#304#308#312#316#320#324#328#332#336#340#344#348#352#356#360#364#368#372#376#380#384#388#392#396#400#404#408#412#416#420#424#428#432#436#440#444#448#452#456#460#464#468#472#476#480#484#488#492#496#500#
+#3#5#7#9#12#15#18#21#24#27#30#33#36#39#42#45#48#51#54#57#60#63#66#69#72#75#78#81#84#87#90#93#96#100#104#108#112#116#120#124#128#132#136#140#144#148#152#156#160#164#168#172#176#180#184#188#192#196#200#204#208#212#216#220#224#228#232#236#240#244#248#252#256#260#264#268#272#276#280#284#288#292#296#300#304#308#312#316#320#324#328#332#336#340#344#348#352#356#360#364#368#372#376#380#384#388#392#396#400#404#408#412#416#420#424#428#432#436#440#444#448#452#456#460#464#468#472#476#480#484#488#492#496#500#504#508#512#516#520#524#528#532#536#540#544#548#552#556#560#564#568#572#576#580#584#588#592#596#600#604#608#612#616#620#624#628#632#636#640#644#648#652#656#660#664#668#672#676#680#684#688#692#696#700#
+#3#5#7#9#12#15#18#21#24#27#30#33#36#39#42#45#48#51#54#57#60#63#66#69#72#75#78#81#84#87#90#93#96#99#103#107#111#115#119#123#127#131#135#139#143#147#151#155#159#163#167#171#175#179#183#187#191#195#199#203#207#211#215#219#223#227#231#235#239#243#247#251#255#259#263#267#271#275#279#283#287#291#295#299#303#307#311#315#319#323#327#331#335#339#343#347#351#355#359#363#367#371#375#379#383#387#391#395#399#403#407#411#415#419#423#427#431#435#439#443#447#451#455#459#463#467#471#475#479#483#487#491#495#499#503#507#511#515#519#523#527#531#535#539#543#547#551#555#559#563#567#571#575#579#583#587#591#595#599#603#607#611#615#619#623#627#631#635#639#643#647#651#655#659#663#667#671#675#679#683#687#691#695#699#703#707#711#715#719#723#727#731#735#739#743#747#751#755#759#763#767#771#775#779#783#787#791#795#799#803#807#811#815#819#823#827#831#835#839#843#847#851#855#859#863#867#871#875#879#883#887#891#895#899#903#907#911#915#919#923#927#931#935#939#943#947#951#955#959#963#967#971#975#979#983#987#991#995#1000#