diff options
| -rw-r--r-- | challenge-102/abigail/README.md | 2 | ||||
| -rw-r--r-- | challenge-102/abigail/basic/ch-1.bas | 142 | ||||
| -rw-r--r-- | challenge-102/abigail/befunge-93/ch-2.bf93 | 5 | ||||
| -rwxr-xr-x | challenge-102/abigail/data/preprocess | 12 | ||||
| -rw-r--r-- | challenge-102/abigail/t/ctest.ini | 7 | ||||
| -rw-r--r-- | challenge-102/abigail/t/input-2-2 | 3 | ||||
| -rw-r--r-- | challenge-102/abigail/t/output-2-2.exp | 3 |
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# |
