diff --git a/CHANGELOG.md b/CHANGELOG.md index f2b46d7..b7425b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ ## 0.6.1.0 -- Unreleased * Now the REPL saves the history to a file named `.history` in the current directory. +* New built-in functions: `\isLong`, `\sumEach`. + +### Breaking changes + +* `\charToInt` now leaves the argument unchanged if it is already an integer. It still fails if the argument is a non-integral number. +* `\intToChar` now leaves the argument unchanged if it is already a character. ## 0.6.0.0 -- 2024-02-25 diff --git a/analysis/corpus.txt b/analysis/corpus.txt index 856f99f..b2ab8a7 100644 --- a/analysis/corpus.txt +++ b/analysis/corpus.txt @@ -2,13 +2,14 @@ 1:ᶦ{$ᵉ+ ʷ{←Pᶜ← Jᵐ#3< -qNᵗzƀ=ũ +qŁƀ=ũ ↕= S= ˡ{Ƶᵉ½3*→I ĭᵐĜy ᵏf ŢṂ +↕ᵚ{S= Ƥ←½Q ᵃƂ×Öƃ ŤuŤᵐů @@ -64,7 +65,7 @@ q$Lɱ≈Å sNP çĉl∑ ᵐ∙ -ᵐ*ᵐ∑ +ᵐ*Ŝ Ṁ←ɔ:ṁĨĦ+ ᵒ%ᵐ∏¬x∙ ᶠ{$~¦}∑ @@ -116,6 +117,7 @@ R:∙ RË3÷ ᵗ{±1Ĩ$þÐaOđᵒ{≈∑Ƶ xq§LaĦ* +ˡ{Łĉᵐ# Ë:ᵒ&Þ£E ŋ∑ũ ĉᵐ∫j @@ -160,7 +162,7 @@ oĉ~z ᵐĈ Ṁ→ᵒÇ∏ƃ ʷ{į1?-ň -O:ᵐ∑≡$Ðål +O:Ŝ≡$Ðål 8ᵚ~ᵖ{≈←ň‼į= 0*2R+ŋ↕ũ+ň8< ox= @@ -207,7 +209,7 @@ Rᶠ{$R~ᵃƂ×Öƃ= ᵐµṀ o:h-l p↔:#:ËGT∑ -x:→&xï@ᵐ∑ +x:→&xï@Ŝ Ňᵖ{:ÄXÞ½= ˡ{ᵗ≡ĭ?}Å Ɗĭ∑ @@ -221,7 +223,7 @@ Cᶦ{ᵈsf¡C ↕ᵃ{2Šᵐɗ"∩<"<60b}-_På :←/∏* ƂxŘƃṁ -qᵗz:∙= +qŁ:∙= Ňᵖ{*$Bu$L Ňᵖ{$Bçu#= qCᵉL↔≤a*$h→L @@ -265,7 +267,7 @@ R∑R∑ Ä←_∏←_ä Oᵖᵐ{Ťđṁ<}aş Ɗ¢dÐ√ -"-_"Ňŧĉᵗz'=ᵚcjt +"-_"ŇŧĉŁ'=ᵚcjt ᵉpttᵋ+*:,,$Ĉ ~pᵉloÐũ ᵑ{R∑ @@ -284,7 +286,7 @@ xᵒĈ:§#ᵑ{ˣᵐ∙+}±≈j∑ Ň+ᵖ{ʷ½≥ kŢᵉR→/+j r:,↕ũ∆Zç∫:ux=¿'a+H -↕∆±ĉᵐ∑çṀ→= +↕∆±ĉŜçṀ→= ᶦ{ĭ,v≠ pNᵉ#ĉ#* ˣ+1I @@ -322,4 +324,9 @@ RJ:ᵐhmj↕ũh= Z:Ť‼Ť$ḟ ŧĉᵐz 0ʷ{ᵖ>Ë}= -ᵐ∑oç∆ +Ŝoç∆ +↕ᵉtiᶻ{∕z +Ŝoç∆ᵐᶠZH +ᶦ{ĕ~f}z +Ṁ→↔$ŧᵖ{,:xŘṀ= +Ħ¬ diff --git a/analysis/freq_1gram.txt b/analysis/freq_1gram.txt index e2b70ae..4444463 100644 --- a/analysis/freq_1gram.txt +++ b/analysis/freq_1gram.txt @@ -1,123 +1,127 @@ -{ : 71 -$ : 52 -: : 46 -= : 45 -ᵐ : 41 -∑ : 41 +{ : 76 +$ : 53 +: : 47 += : 47 + : 40 +ᵐ : 38 +∑ : 36 ← : 30 +→ : 30 R : 30 * : 29 -→ : 29 -} : 27 +} : 28 - : 25 j : 24 +x : 24 1 : 23 -x : 23 -o : 22 -ç : 22 -, : 21 +o : 23 +ç : 23 +, : 22 +ᵉ : 21 2 : 21 -ᵉ : 20 a : 20 +↔ : 19 +# : 18 +↕ : 18 Ť : 18 u : 18 -↔ : 18 -# : 17 +~ : 18 ᵒ : 17 -~ : 17 +ᵖ : 17 3 : 16 -↕ : 16 ĭ : 16 l : 16 đ : 16 p : 16 -ᵖ : 16 +t : 15 +ĉ : 15 " : 14 +S : 14 Ƃ : 14 -t : 14 -ĉ : 14 +Ṁ : 14 Ð : 14 +ᶦ : 13 J : 13 -S : 13 Ɔ : 13 ∫ : 13 +Z : 13 Ɗ : 13 Ň : 13 ; : 13 L : 13 -ᶦ : 12 < : 12 q : 12 -N : 12 ½ : 12 -Z : 12 ᵑ : 12 -Ṁ : 12 +∆ : 12 ʷ : 11 -z : 11 Q : 11 +ᶻ : 11 ≡ : 11 c : 11 Ë : 11 -∆ : 11 +N : 11 ± : 11 _ : 11 -ᵗ : 10 ũ : 10 +ˡ : 10 Ţ : 10 ᵃ : 10 -ᶻ : 10 r : 10 E : 10 ŋ : 10 ? : 10 +ᶠ : 10 ∏ : 10 O : 10 +z : 10 ᶜ : 9 -ˡ : 9 ž : 9 -ᶠ : 9 ŗ : 9 ≈ : 9 C : 9 P : 8 +f : 8 +ᵚ : 8 × : 8 ů : 8 +¬ : 8 +∕ : 8 £ : 8 ≥ : 8 ‼ : 8 % : 8 ƒ : 8 ∙ : 8 +i : 8 Ƶ : 7 -f : 7 -¬ : 7 -∕ : 7 Ä : 7 / : 7 ɗ : 7 -ᵚ : 7 +Ħ : 7 Ĉ : 7 +ᵗ : 7 ṁ : 7 Ĩ : 7 h : 7 ä : 7 4 : 7 -i : 7 > : 7 +Ř : 7 ᵈ : 7 @ : 7 ᵏ : 6 ƃ : 6 +H : 6 Ď : 6 Ø : 6 -Ħ : 6 +ŧ : 6 Ĭ : 6 ¦ : 6 ş : 6 +Ŝ : 6 +ĕ : 6 ∩ : 6 -Ř : 6 į : 6 0 : 6 ¢ : 6 @@ -126,18 +130,15 @@ B : 6 I : 5 y : 5 Ö : 5 -H : 5 d : 5 ≤ : 5 Ç : 5 -ŧ : 5 ʳ : 5 G : 5 Å : 5 s : 5 ɔ : 5 µ : 5 -ĕ : 5 8 : 5 √ : 5 5 : 5 @@ -145,6 +146,7 @@ s : 5 ᵋ : 5 b : 5 A : 5 +Ł : 4 ř : 4 Ḟ : 4 k : 4 diff --git a/analysis/freq_2gram.txt b/analysis/freq_2gram.txt index a8c0703..9215975 100644 --- a/analysis/freq_2gram.txt +++ b/analysis/freq_2gram.txt @@ -1,12 +1,11 @@ -ᶦ{ : 11 +ᶦ{ : 12 +ᵖ{ : 10 ʷ{ : 9 -ᵖ{ : 9 -ˡ{ : 7 +ˡ{ : 8 ᵑ{ : 7 ᶠ{ : 7 {$ : 6 {: : 5 -ᵐ∑ : 5 ᵐ{ : 5 Jᵐ : 4 *→ : 4 @@ -16,12 +15,13 @@ Jᵐ : 4 1Ĩ : 4 ᵏ{ : 4 ᵒ{ : 4 -:ᵒ : 4 ĉᵐ : 4 +:ᵒ : 4 +xŘ : 4 ↕ũ : 4 Ňᵖ : 4 aş : 4 -ᵗz : 3 +S= : 3 {Ƶ : 3 ŢṂ : 3 ←½ : 3 @@ -49,12 +49,12 @@ R: : 3 :∙ : 3 2R : 3 &Þ : 3 -xŘ : 3 -_ : 3 u# : 3 Ťđ : 3 pN : 3 {ˣ : 3 +Ṁ→ : 3 {į : 3 +} : 3 *$ : 3 @@ -68,13 +68,15 @@ R∑ : 3 1: : 2 ᵉ+ : 2 ←P : 2 -qN : 2 +ᵐ# : 2 +qŁ : 2 ƀ= : 2 ↕= : 2 -S= : 2 3* : 2 →I : 2 ĭᵐ : 2 +ᵚ{ : 2 +{S : 2 ×Ö : 2 Öƃ : 2 Ťᵐ : 2 @@ -92,6 +94,7 @@ $Ç : 2 {ᵉ : 2 }Ø : 2 Ø= : 2 +$ŧ : 2 ŧ← : 2 Ɗj : 2 cɗ : 2 @@ -111,11 +114,9 @@ G1 : 2 ½a : 2 +j : 2 xᵐ : 2 -qᵗ : 2 ;ᶜ : 2 ᶜt : 2 :Ĭ : 2 -∑≡ : 2 R~ : 2 ĉ~ : 2 +↔ : 2 @@ -168,9 +169,7 @@ $đ : 2 ∙+ : 2 ᵖf : 2 _= : 2 -Ṁ→ : 2 -ň : 2 -:ᵐ : 2 0* : 2 $ᶻ : 2 ᶻL : 2 @@ -219,6 +218,7 @@ RS : 2 += : 2 ɔ$ : 2 jŢ : 2 +↔$ : 2 çṀ : 2 3~ : 2 ~ᵑ : 2 @@ -234,18 +234,21 @@ rj : 2 ĭ, : 2 Jĭ : 2 ←ᶠ : 2 +ᵉt : 2 +ti : 2 ᵐz : 2 +Ŝo : 2 +oç : 2 +ç∆ : 2 ," : 1 :ᶦ : 1 $ᵉ : 1 {← : 1 Pᶜ : 1 ᶜ← : 1 -ᵐ# : 1 #3 : 1 3< : 1 -Nᵗ : 1 -zƀ : 1 +Łƀ : 1 =ũ : 1 Ƶᵉ : 1 ᵉ½ : 1 @@ -253,6 +256,7 @@ zƀ : 1 ᵐĜ : 1 Ĝy : 1 ᵏf : 1 +↕ᵚ : 1 Ƥ← : 1 ½Q : 1 Ťu : 1 @@ -294,7 +298,6 @@ $→ : 1 çt : 1 t? : 1 3$ : 1 -$ŧ : 1 ←∫ : 1 Rt : 1 tƊ : 1 @@ -344,6 +347,7 @@ N; : 1 ᵐᵑ : 1 ᵑ↔ : 1 ↔j : 1 +qᵗ : 1 ᵗZ : 1 Zđ : 1 +Å : 1 @@ -357,6 +361,7 @@ tᶻ : 1 ;Ð : 1 ÐŤ : 1 Ť∑ : 1 +∑≡ : 1 Fƒ : 1 ƒ# : 1 ~Q : 1 @@ -373,7 +378,7 @@ NP : 1 ĉl : 1 l∑ : 1 ᵐ* : 1 -*ᵐ : 1 +*Ŝ : 1 ←ɔ : 1 ɔ: : 1 :ṁ : 1 @@ -503,6 +508,8 @@ Ođ : 1 q§ : 1 La : 1 aĦ : 1 +{Ł : 1 +Łĉ : 1 ∑ũ : 1 ᵐ∫ : 1 ∫j : 1 @@ -607,6 +614,8 @@ j1 : 1 1? : 1 ?- : 1 O: : 1 +:Ŝ : 1 +Ŝ≡ : 1 ≡$ : 1 $Ð : 1 Ðå : 1 @@ -693,7 +702,6 @@ m2 : 1 2Ĩ : 1 {£ : 1 Øᶦ : 1 -{S : 1 Sa : 1 {+ : 1 +ä : 1 @@ -769,7 +777,7 @@ T∑ : 1 &x : 1 xï : 1 ï@ : 1 -@ᵐ : 1 +@Ŝ : 1 :Ä : 1 ÄX : 1 XÞ : 1 @@ -822,7 +830,7 @@ På : 1 Ƃx : 1 Řƃ : 1 ƃṁ : 1 -z: : 1 +Ł: : 1 ∙= : 1 Bu : 1 u$ : 1 @@ -887,7 +895,6 @@ Sj : 1 Ţ½ : 1 ađ : 1 R↔ : 1 -↔$ : 1 $∆ : 1 ∆ç : 1 çJ : 1 @@ -956,6 +963,7 @@ U$ : 1 ;ᶻ : 1 ᶻᶻ : 1 ,j : 1 +qN : 1 Nᵖ : 1 {@ : 1 @Ť : 1 @@ -996,7 +1004,6 @@ Lũ : 1 2M : 1 M≡ : 1 ᵏᵚ : 1 -ᵚ{ : 1 {ᵑ : 1 įŋ : 1 }f : 1 @@ -1062,8 +1069,8 @@ dÐ : 1 "- : 1 _" : 1 "Ň : 1 -ĉᵗ : 1 -z' : 1 +ĉŁ : 1 +Ł' : 1 '= : 1 =ᵚ : 1 ᵚc : 1 @@ -1165,7 +1172,8 @@ Zç : 1 'a : 1 a+ : 1 +H : 1 -∑ç : 1 +ĉŜ : 1 +Ŝç : 1 {ĭ : 1 ,v : 1 v≠ : 1 @@ -1227,8 +1235,6 @@ bD : 1 3M : 1 ĎS : 1 Sᵉ : 1 -ᵉt : 1 -ti : 1 i¦ : 1 ᵒ≈ : 1 ≈> : 1 @@ -1301,6 +1307,7 @@ tđ : 1 2> : 1 RJ : 1 J: : 1 +:ᵐ : 1 hm : 1 mj : 1 j↕ : 1 @@ -1317,6 +1324,25 @@ $ḟ : 1 >Ë : 1 Ë} : 1 }= : 1 -∑o : 1 -oç : 1 -ç∆ : 1 +↕ᵉ : 1 +iᶻ : 1 +ᶻ{ : 1 +{∕ : 1 +∕z : 1 +∆ᵐ : 1 +ᵐᶠ : 1 +ᶠZ : 1 +ZH : 1 +{ĕ : 1 +ĕ~ : 1 +~f : 1 +f} : 1 +}z : 1 +→↔ : 1 +ŧᵖ : 1 +{, : 1 +,: : 1 +:x : 1 +ŘṀ : 1 +Ṁ= : 1 +Ħ¬ : 1 diff --git a/analysis/freq_3gram.txt b/analysis/freq_3gram.txt index a34f231..2145cb6 100644 --- a/analysis/freq_3gram.txt +++ b/analysis/freq_3gram.txt @@ -40,7 +40,10 @@ Jᵐ{ : 2 #ᵑ{ : 2 ∆±ĉ : 2 ←ᶠ{ : 2 +ᵉti : 2 ĉᵐz : 2 +Ŝoç : 2 +oç∆ : 2 ĝ," : 1 ,"ᵉ : 1 1:ᶦ : 1 @@ -55,10 +58,8 @@ Pᶜ← : 1 Jᵐ# : 1 ᵐ#3 : 1 #3< : 1 -qNᵗ : 1 -Nᵗz : 1 -ᵗzƀ : 1 -zƀ= : 1 +qŁƀ : 1 +Łƀ= : 1 ƀ=ũ : 1 ˡ{Ƶ : 1 {Ƶᵉ : 1 @@ -67,6 +68,9 @@ zƀ= : 1 ½3* : 1 ĭᵐĜ : 1 ᵐĜy : 1 +↕ᵚ{ : 1 +ᵚ{S : 1 +{S= : 1 Ƥ←½ : 1 ←½Q : 1 ŤuŤ : 1 @@ -202,8 +206,7 @@ Lɱ≈ : 1 sNP : 1 çĉl : 1 ĉl∑ : 1 -ᵐ*ᵐ : 1 -*ᵐ∑ : 1 +ᵐ*Ŝ : 1 Ṁ←ɔ : 1 ←ɔ: : 1 ɔ:ṁ : 1 @@ -335,6 +338,10 @@ q§L : 1 §La : 1 LaĦ : 1 aĦ* : 1 +ˡ{Ł : 1 +{Łĉ : 1 +Łĉᵐ : 1 +ĉᵐ# : 1 ŋ∑ũ : 1 ĉᵐ∫ : 1 ᵐ∫j : 1 @@ -440,10 +447,9 @@ j1Ĉ : 1 į1? : 1 1?- : 1 ?-ň : 1 -O:ᵐ : 1 -:ᵐ∑ : 1 -ᵐ∑≡ : 1 -∑≡$ : 1 +O:Ŝ : 1 +:Ŝ≡ : 1 +Ŝ≡$ : 1 ≡$Ð : 1 $Ðå : 1 Ðål : 1 @@ -640,8 +646,7 @@ x:→ : 1 →&x : 1 &xï : 1 xï@ : 1 -ï@ᵐ : 1 -@ᵐ∑ : 1 +ï@Ŝ : 1 {:Ä : 1 :ÄX : 1 ÄXÞ : 1 @@ -714,9 +719,8 @@ _På : 1 ƂxŘ : 1 xŘƃ : 1 Řƃṁ : 1 -qᵗz : 1 -ᵗz: : 1 -z:∙ : 1 +qŁ: : 1 +Ł:∙ : 1 :∙= : 1 ᵖ{* : 1 {*$ : 1 @@ -1004,10 +1008,9 @@ dÐ√ : 1 _"Ň : 1 "Ňŧ : 1 Ňŧĉ : 1 -ŧĉᵗ : 1 -ĉᵗz : 1 -ᵗz' : 1 -z'= : 1 +ŧĉŁ : 1 +ĉŁ' : 1 +Ł'= : 1 '=ᵚ : 1 =ᵚc : 1 ᵚcj : 1 @@ -1130,10 +1133,9 @@ x=¿ : 1 'a+ : 1 a+H : 1 ↕∆± : 1 -±ĉᵐ : 1 -ĉᵐ∑ : 1 -ᵐ∑ç : 1 -∑çṀ : 1 +±ĉŜ : 1 +ĉŜç : 1 +ŜçṀ : 1 çṀ→ : 1 Ṁ→= : 1 ᶦ{ĭ : 1 @@ -1204,7 +1206,6 @@ Jĭ? : 1 ƃ3M : 1 ĎSᵉ : 1 Sᵉt : 1 -ᵉti : 1 ti¦ : 1 {x: : 1 x:ᵒ : 1 @@ -1303,6 +1304,28 @@ Z:Ť : 1 ᵖ>Ë : 1 >Ë} : 1 Ë}= : 1 -ᵐ∑o : 1 -∑oç : 1 -oç∆ : 1 +↕ᵉt : 1 +tiᶻ : 1 +iᶻ{ : 1 +ᶻ{∕ : 1 +{∕z : 1 +ç∆ᵐ : 1 +∆ᵐᶠ : 1 +ᵐᶠZ : 1 +ᶠZH : 1 +ᶦ{ĕ : 1 +{ĕ~ : 1 +ĕ~f : 1 +~f} : 1 +f}z : 1 +Ṁ→↔ : 1 +→↔$ : 1 +↔$ŧ : 1 +$ŧᵖ : 1 +ŧᵖ{ : 1 +ᵖ{, : 1 +{,: : 1 +,:x : 1 +:xŘ : 1 +xŘṀ : 1 +ŘṀ= : 1 diff --git a/analysis/freq_4gram.txt b/analysis/freq_4gram.txt index b1fe5a9..cdf12fc 100644 --- a/analysis/freq_4gram.txt +++ b/analysis/freq_4gram.txt @@ -12,6 +12,7 @@ &Þ£E : 2 Ɔ$đ+ : 2 #ᵑ{ˣ : 2 +Ŝoç∆ : 2 ᵉĝ," : 1 ĝ,"ᵉ : 1 ,"ᵉĝ : 1 @@ -24,16 +25,16 @@ ←Pᶜ← : 1 Jᵐ#3 : 1 ᵐ#3< : 1 -qNᵗz : 1 -Nᵗzƀ : 1 -ᵗzƀ= : 1 -zƀ=ũ : 1 +qŁƀ= : 1 +Łƀ=ũ : 1 ˡ{Ƶᵉ : 1 {Ƶᵉ½ : 1 Ƶᵉ½3 : 1 ᵉ½3* : 1 ½3*→ : 1 ĭᵐĜy : 1 +↕ᵚ{S : 1 +ᵚ{S= : 1 Ƥ←½Q : 1 ŤuŤᵐ : 1 uŤᵐů : 1 @@ -136,7 +137,6 @@ q$Lɱ : 1 $Lɱ≈ : 1 Lɱ≈Å : 1 çĉl∑ : 1 -ᵐ*ᵐ∑ : 1 Ṁ←ɔ: : 1 ←ɔ:ṁ : 1 ɔ:ṁĨ : 1 @@ -228,6 +228,9 @@ xq§L : 1 q§La : 1 §LaĦ : 1 LaĦ* : 1 +ˡ{Łĉ : 1 +{Łĉᵐ : 1 +Łĉᵐ# : 1 ᵒ&Þ£ : 1 ĉᵐ∫j : 1 Sđ*a : 1 @@ -301,10 +304,9 @@ oĉ~z : 1 {į1? : 1 į1?- : 1 1?-ň : 1 -O:ᵐ∑ : 1 -:ᵐ∑≡ : 1 -ᵐ∑≡$ : 1 -∑≡$Ð : 1 +O:Ŝ≡ : 1 +:Ŝ≡$ : 1 +Ŝ≡$Ð : 1 ≡$Ðå : 1 $Ðål : 1 8ᵚ~ᵖ : 1 @@ -463,8 +465,7 @@ x:→& : 1 :→&x : 1 →&xï : 1 &xï@ : 1 -xï@ᵐ : 1 -ï@ᵐ∑ : 1 +xï@Ŝ : 1 Ňᵖ{: : 1 ᵖ{:Ä : 1 {:ÄX : 1 @@ -529,9 +530,8 @@ b}-_ : 1 ←/∏* : 1 ƂxŘƃ : 1 xŘƃṁ : 1 -qᵗz: : 1 -ᵗz:∙ : 1 -z:∙= : 1 +qŁ:∙ : 1 +Ł:∙= : 1 Ňᵖ{* : 1 ᵖ{*$ : 1 {*$B : 1 @@ -788,11 +788,10 @@ Oᵖᵐ{ : 1 -_"Ň : 1 _"Ňŧ : 1 "Ňŧĉ : 1 -Ňŧĉᵗ : 1 -ŧĉᵗz : 1 -ĉᵗz' : 1 -ᵗz'= : 1 -z'=ᵚ : 1 +ŇŧĉŁ : 1 +ŧĉŁ' : 1 +ĉŁ'= : 1 +Ł'=ᵚ : 1 '=ᵚc : 1 =ᵚcj : 1 ᵚcjt : 1 @@ -903,11 +902,10 @@ x=¿' : 1 ¿'a+ : 1 'a+H : 1 ↕∆±ĉ : 1 -∆±ĉᵐ : 1 -±ĉᵐ∑ : 1 -ĉᵐ∑ç : 1 -ᵐ∑çṀ : 1 -∑çṀ→ : 1 +∆±ĉŜ : 1 +±ĉŜç : 1 +ĉŜçṀ : 1 +ŜçṀ→ : 1 çṀ→= : 1 ᶦ{ĭ, : 1 {ĭ,v : 1 @@ -1049,5 +1047,26 @@ Z:Ť‼ : 1 {ᵖ>Ë : 1 ᵖ>Ë} : 1 >Ë}= : 1 -ᵐ∑oç : 1 -∑oç∆ : 1 +↕ᵉti : 1 +ᵉtiᶻ : 1 +tiᶻ{ : 1 +iᶻ{∕ : 1 +ᶻ{∕z : 1 +oç∆ᵐ : 1 +ç∆ᵐᶠ : 1 +∆ᵐᶠZ : 1 +ᵐᶠZH : 1 +ᶦ{ĕ~ : 1 +{ĕ~f : 1 +ĕ~f} : 1 +~f}z : 1 +Ṁ→↔$ : 1 +→↔$ŧ : 1 +↔$ŧᵖ : 1 +$ŧᵖ{ : 1 +ŧᵖ{, : 1 +ᵖ{,: : 1 +{,:x : 1 +,:xŘ : 1 +:xŘṀ : 1 +xŘṀ= : 1 diff --git a/analysis/freq_5gram.txt b/analysis/freq_5gram.txt index ff9388f..10b25d5 100644 --- a/analysis/freq_5gram.txt +++ b/analysis/freq_5gram.txt @@ -13,14 +13,13 @@ ʷ{←Pᶜ : 1 {←Pᶜ← : 1 Jᵐ#3< : 1 -qNᵗzƀ : 1 -Nᵗzƀ= : 1 -ᵗzƀ=ũ : 1 +qŁƀ=ũ : 1 ˡ{Ƶᵉ½ : 1 {Ƶᵉ½3 : 1 Ƶᵉ½3* : 1 ᵉ½3*→ : 1 ½3*→I : 1 +↕ᵚ{S= : 1 ŤuŤᵐů : 1 ᶻᵒ-¬≡ : 1 "Hell : 1 @@ -153,6 +152,8 @@ Ođᵒ{≈ : 1 xq§La : 1 q§LaĦ : 1 §LaĦ* : 1 +ˡ{Łĉᵐ : 1 +{Łĉᵐ# : 1 :ᵒ&Þ£ : 1 ᵒ&Þ£E : 1 Sđ*aŢ : 1 @@ -202,10 +203,9 @@ sᵃN,= : 1 ʷ{į1? : 1 {į1?- : 1 į1?-ň : 1 -O:ᵐ∑≡ : 1 -:ᵐ∑≡$ : 1 -ᵐ∑≡$Ð : 1 -∑≡$Ðå : 1 +O:Ŝ≡$ : 1 +:Ŝ≡$Ð : 1 +Ŝ≡$Ðå : 1 ≡$Ðål : 1 8ᵚ~ᵖ{ : 1 ᵚ~ᵖ{≈ : 1 @@ -331,8 +331,7 @@ p↔:#: : 1 x:→&x : 1 :→&xï : 1 →&xï@ : 1 -&xï@ᵐ : 1 -xï@ᵐ∑ : 1 +&xï@Ŝ : 1 Ňᵖ{:Ä : 1 ᵖ{:ÄX : 1 {:ÄXÞ : 1 @@ -386,8 +385,7 @@ b}-_P : 1 }-_På : 1 :←/∏* : 1 ƂxŘƃṁ : 1 -qᵗz:∙ : 1 -ᵗz:∙= : 1 +qŁ:∙= : 1 Ňᵖ{*$ : 1 ᵖ{*$B : 1 {*$Bu : 1 @@ -604,12 +602,11 @@ Oᵖᵐ{Ť : 1 "-_"Ň : 1 -_"Ňŧ : 1 _"Ňŧĉ : 1 -"Ňŧĉᵗ : 1 -Ňŧĉᵗz : 1 -ŧĉᵗz' : 1 -ĉᵗz'= : 1 -ᵗz'=ᵚ : 1 -z'=ᵚc : 1 +"ŇŧĉŁ : 1 +ŇŧĉŁ' : 1 +ŧĉŁ'= : 1 +ĉŁ'=ᵚ : 1 +Ł'=ᵚc : 1 '=ᵚcj : 1 =ᵚcjt : 1 ᵉpttᵋ : 1 @@ -704,12 +701,11 @@ ux=¿' : 1 x=¿'a : 1 =¿'a+ : 1 ¿'a+H : 1 -↕∆±ĉᵐ : 1 -∆±ĉᵐ∑ : 1 -±ĉᵐ∑ç : 1 -ĉᵐ∑çṀ : 1 -ᵐ∑çṀ→ : 1 -∑çṀ→= : 1 +↕∆±ĉŜ : 1 +∆±ĉŜç : 1 +±ĉŜçṀ : 1 +ĉŜçṀ→ : 1 +ŜçṀ→= : 1 ᶦ{ĭ,v : 1 {ĭ,v≠ : 1 pNᵉ#ĉ : 1 @@ -817,4 +813,23 @@ Z:Ť‼Ť : 1 ʷ{ᵖ>Ë : 1 {ᵖ>Ë} : 1 ᵖ>Ë}= : 1 -ᵐ∑oç∆ : 1 +↕ᵉtiᶻ : 1 +ᵉtiᶻ{ : 1 +tiᶻ{∕ : 1 +iᶻ{∕z : 1 +Ŝoç∆ᵐ : 1 +oç∆ᵐᶠ : 1 +ç∆ᵐᶠZ : 1 +∆ᵐᶠZH : 1 +ᶦ{ĕ~f : 1 +{ĕ~f} : 1 +ĕ~f}z : 1 +Ṁ→↔$ŧ : 1 +→↔$ŧᵖ : 1 +↔$ŧᵖ{ : 1 +$ŧᵖ{, : 1 +ŧᵖ{,: : 1 +ᵖ{,:x : 1 +{,:xŘ : 1 +,:xŘṀ : 1 +:xŘṀ= : 1 diff --git a/analysis/particles.txt b/analysis/particles.txt index 91c44d5..750774c 100644 --- a/analysis/particles.txt +++ b/analysis/particles.txt @@ -2,20 +2,20 @@ particle : with "{" / total ᵈ : 0 / 7 ʳ : 0 / 5 ˣ : 0 / 4 -ᶻ : 0 / 10 ᶾ : 0 / 1 -ᵉ : 1 / 20 +ᵉ : 1 / 21 +ᶻ : 1 / 11 ᶜ : 1 / 9 -ᵐ : 5 / 41 -ᵚ : 1 / 7 +ᵐ : 5 / 38 ᵃ : 2 / 10 ᵋ : 1 / 5 -ᵗ : 2 / 10 ᵒ : 4 / 17 -ᵖ : 9 / 16 +ᵚ : 2 / 8 +ᵗ : 2 / 7 ᵑ : 7 / 12 +ᵖ : 10 / 17 ᵏ : 4 / 6 -ᶠ : 7 / 9 -ˡ : 7 / 9 +ᶠ : 7 / 10 +ˡ : 8 / 10 ʷ : 9 / 11 -ᶦ : 11 / 12 +ᶦ : 12 / 13 diff --git a/doc/Builtins.md b/doc/Builtins.md index dc3645b..f8de344 100644 --- a/doc/Builtins.md +++ b/doc/Builtins.md @@ -114,6 +114,12 @@ Check if a list is non-empty. If it is, push the list itself, otherwise fail. +### `isLong` (`Ł`, `1 -> 1`) + +Check if the length of a list is greater than 1. + +If it is, push the list itself, otherwise fail. + ### `isNonzero` (`Z`, `1 -> 1`) Check if a number is non-zero. @@ -786,17 +792,31 @@ If the input is a single integer, it is treated as a singleton list. If the input is a single char, it is converted to a number according to Nekomata's code page, and then treated as a singleton list. +### `sumEach` (`Ŝ`, `1 -> 1`) + +Take the sum of each list in a list of lists of numbers. + +The addition is automatically vectorized with padding zeros. + +If some of the elements are chars, they are converted to numbers according to Nekomata's code page. + ### `charToInt` (`e`, `1 -> 1`) Convert a char to an integer according to Nekomata's code page. +If the input is already an integer, it is left unchanged. + This function is automatically vectorized. ### `intToChar` (`H`, `1 -> 1`) Convert an integer to a char according to Nekomata's code page. -Fail when the integer is not in the range 0 to 255.This function is automatically vectorized. +If the input is already a char, it is left unchanged. + +Fail when the integer is not in the range 0 to 255. + +This function is automatically vectorized. ### `read` (`Ĝ`, `1 -> 1`) diff --git a/doc/CodePage.md b/doc/CodePage.md index 7b99f17..9e1b51f 100644 --- a/doc/CodePage.md +++ b/doc/CodePage.md @@ -17,8 +17,8 @@ The language is still in an early stage, so the code page is incomplete. Unassig |**8_**|`ᵃ`|`ᶜ`|`ᵈ`|`ᵉ`|`ᵋ`|`ᶠ`|`ᶦ`|`ᵏ`|`ˡ`|`ᵐ`|`ᵚ`|`ᵑ`|`ᵒ`|`ᵖ`|`ʳ`|`ᵗ`| |**9_**|`ʷ`|`ˣ`|`ᶻ`|`ᶾ`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`| |**A_**|`Ä`|`Å`|`Ƃ`|`Ç`|`Ĉ`|`Ď`|`Ð`|`Ɗ`|`Ë`|`Ḟ`|`Ĝ`|`Ģ`|`Ħ`|`Ĩ`|`Ĭ`|`Ļ`| -|**B_**|`Ṁ`|`Ṃ`|`Ň`|`Ö`|`Ø`|`Ɔ`|`Ƥ`|`Ṗ`|`Ř`|`Š`|`Ş`|`Ţ`|`Ť`|`Ŭ`|`Ž`|`Ƶ`| -|**C_**|`Þ`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`| +|**B_**|`Ł`|`Ṁ`|`Ṃ`|`Ň`|`Ö`|`Ø`|`Ɔ`|`Ƥ`|`Ṗ`|`Ř`|`Ŝ`|`Š`|`Ş`|`Ţ`|`Ť`|`Ŭ`| +|**C_**|`Ž`|`Ƶ`|`Þ`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`| |**D_**|`ä`|`å`|`ƃ`|`ƀ`|`ç`|`ĉ`|`đ`|`ḍ`|`ɗ`|`ē`|`ĕ`|`ƒ`|`ḟ`|`ĝ`|`ï`|`ĭ`| |**E_**|`į`|`ṁ`|`ṃ`|`ɱ`|`ň`|`ŋ`|`ṇ`|`õ`|`ɔ`|`ƥ`|`ŗ`|`ř`|`ş`|`ŧ`|`ũ`|`ů`| |**F_**|`ž`|`ƶ`|`þ`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`| diff --git a/src/Nekomata/Builtin.hs b/src/Nekomata/Builtin.hs index ab2868e..dfc191b 100644 --- a/src/Nekomata/Builtin.hs +++ b/src/Nekomata/Builtin.hs @@ -185,6 +185,12 @@ builtins = isNonempty "Check if a list is non-empty.\n\ \If it is, push the list itself, otherwise fail." + , Builtin + "isLong" + 'Ł' + isLong + "Check if the length of a list is greater than 1.\n\ + \If it is, push the list itself, otherwise fail." , Builtin "isNonzero" 'Z' @@ -869,18 +875,28 @@ builtins = \If the input is a single char, \ \it is converted to a number according to Nekomata's code page, \ \and then treated as a singleton list." + , Builtin + "sumEach" + 'Ŝ' + sumEach + "Take the sum of each list in a list of lists of numbers.\n\ + \The addition is automatically vectorized with padding zeros.\n\ + \If some of the elements are chars, \ + \they are converted to numbers according to Nekomata's code page." , Builtin "charToInt" 'e' charToInt' "Convert a char to an integer according to Nekomata's code page.\n\ + \If the input is already an integer, it is left unchanged.\n\ \This function is automatically vectorized." , Builtin "intToChar" 'H' intToChar' "Convert an integer to a char according to Nekomata's code page.\n\ - \Fail when the integer is not in the range 0 to 255.\ + \If the input is already a char, it is left unchanged.\n\ + \Fail when the integer is not in the range 0 to 255.\n\ \This function is automatically vectorized." , Builtin "read" diff --git a/src/Nekomata/Builtin/List.hs b/src/Nekomata/Builtin/List.hs index e1d7df2..dc8a248 100644 --- a/src/Nekomata/Builtin/List.hs +++ b/src/Nekomata/Builtin/List.hs @@ -19,9 +19,19 @@ isNonempty = predicate isNonempty' where isNonempty' _ (DListT x) = isNonempty_ <$> x isNonempty' _ _ = Fail - isNonempty_ :: ListTry a -> Bool - isNonempty_ (Cons _ _) = True - isNonempty_ Nil = False + +isNonempty_ :: ListTry a -> Bool +isNonempty_ (Cons _ _) = True +isNonempty_ Nil = False + +isLong :: Function +isLong = predicate isLong' + where + isLong' _ (DListT x) = x >>= isLong_ + isLong' _ _ = Fail + isLong_ :: ListTry a -> Try Bool + isLong_ (Cons _ xs) = isNonempty_ <$> xs + isLong_ Nil = Val False anyOf' :: Function anyOf' = unary anyOf'' diff --git a/src/Nekomata/Builtin/Math.hs b/src/Nekomata/Builtin/Math.hs index f0b9034..dc381b8 100644 --- a/src/Nekomata/Builtin/Math.hs +++ b/src/Nekomata/Builtin/Math.hs @@ -232,16 +232,15 @@ one = DNumT . Val $ Det 1 sum' :: Function sum' = unary sum'' - where - sum'' i (DListT xs) = - liftList (tryFoldl add' i zero) xs - sum'' _ _ = Fail + +sum'' :: Id -> DataTry -> TryData +sum'' i (DListT xs) = liftList (tryFoldl add' i zero) xs +sum'' _ _ = Fail product' :: Function product' = unary product'' where - product'' i (DListT xs) = - liftList (tryFoldl mul' i one) xs + product'' i (DListT xs) = liftList (tryFoldl mul' i one) xs product'' _ _ = Fail dot :: Function @@ -453,3 +452,9 @@ popCount' = unaryInt $ const (toInteger . popCount) histogram :: Function histogram = flatten .* powOf2 .* binary' .* sum' + +sumEach :: Function +sumEach = unary sumEach' + where + sumEach' i (DListT xs) = liftList (tryMap sum'' i) xs + sumEach' _ _ = Fail diff --git a/src/Nekomata/Builtin/String.hs b/src/Nekomata/Builtin/String.hs index dec61f8..8f99833 100644 --- a/src/Nekomata/Builtin/String.hs +++ b/src/Nekomata/Builtin/String.hs @@ -13,6 +13,7 @@ charToInt' :: Function charToInt' = unaryVec charToInt'' where charToInt'' _ (DCharT x) = liftChar charToInt_ x + charToInt'' _ (DNumT x) = liftInt Just x charToInt'' _ _ = Fail charToInt_ :: Word8 -> Integer charToInt_ = fromIntegral @@ -21,6 +22,7 @@ intToChar' :: Function intToChar' = unaryVec intToChar'' where intToChar'' _ (DNumT x) = liftInt intToChar_ x + intToChar'' _ (DCharT x) = liftChar Just x intToChar'' _ _ = Fail intToChar_ :: Integer -> Maybe Word8 intToChar_ x diff --git a/src/Nekomata/CodePage.hs b/src/Nekomata/CodePage.hs index 1b58bef..500e6b0 100644 --- a/src/Nekomata/CodePage.hs +++ b/src/Nekomata/CodePage.hs @@ -20,8 +20,8 @@ codePage = ++ "ᵃᶜᵈᵉᵋᶠᶦᵏˡᵐᵚᵑᵒᵖʳᵗ" ++ "ʷˣᶻᶾ������������" ++ "ÄÅƂÇĈĎÐƊËḞĜĢĦĨĬĻ" - ++ "ṀṂŇÖØƆƤṖŘŠŞŢŤŬŽƵ" - ++ "Þ���������������" + ++ "ŁṀṂŇÖØƆƤṖŘŜŠŞŢŤŬ" + ++ "ŽƵÞ�������������" ++ "äåƃƀçĉđḍɗēĕƒḟĝïĭ" ++ "įṁṃɱňŋṇõɔƥŗřşŧũů" ++ "žƶþ�������������" diff --git a/test/Eval.hs b/test/Eval.hs index 8a4a070..2fd4479 100644 --- a/test/Eval.hs +++ b/test/Eval.hs @@ -77,7 +77,7 @@ testEval = describe "Evaluation" $ do ] describe "q183: Finding \"sub-palindromes\"." $ do specEval - "qNᵗzƀ=ũ" + "qŁƀ=ũ" [ ("\"12131331\"", all_ ["121", "131", "313", "1331", "33"]) , ("\"3333\"", all_ ["33", "333", "3333"]) ] @@ -133,6 +133,10 @@ testEval = describe "Evaluation" $ do specEval "ŢṂ" [("[4,3,1,0,6,1,6,4,4,0,3,1,7,7,3,4,1,1,2,8]", all_ ["1"])] + describe "q46836: Total number of topological sorts" $ do + specEval + "↕ᵚ{S=" + [("6 [[0,1],[0,2],[0,3],[0,5],[1,2],[1,4],[3,2],[5,3]]", Count 9)] describe "q50020: List Sophie Germain primes" $ do specEval "Ƥ←½Q" @@ -728,7 +732,7 @@ testEval = describe "Evaluation" $ do , ("[[5,3],[1,3],[9,3],[1,-1000]] [[1,3],[2,4]]", all_ ["[[11,27],[7,15],[15,39],[-1999,-3997]]"]) ] specEval - "ᵐ*ᵐ∑" + "ᵐ*Ŝ" [ ("[[1,2],[3,4],[5,6]] [[1,2,3,4,5],[6,7,8,9,10]]", all_ ["[[13,16,19,22,25],[27,34,41,48,55],[41,52,63,74,85]]"]) , ("[[2,3],[3,4]] [[3,5],[3,1]]", all_ ["[[15,13],[21,19]]"]) , ("[[5,3],[1,3],[9,3],[1,-1000]] [[1,3],[2,4]]", all_ ["[[11,27],[7,15],[15,39],[-1999,-3997]]"]) @@ -1286,6 +1290,18 @@ testEval = describe "Evaluation" $ do , ("[1,1,1,1,1,1,1] 6", all_ ["[1,2,2,2,2,2,1]"]) , ("[1,2,3,4,5,6,7,8,9] 6", all_ ["[1,4,9,16,20,24,21,16,9]"]) ] + describe "q156602: Quickly regrouping lists" $ do + specEval + "ˡ{Łĉᵐ#" + [ ("[1,2,3,3,2,1]", all_ ["4"]) + , ("[1,2,3,4,5,6,7]", all_ ["2"]) + , ("[1,1,1,1,1,1]", all_ ["1"]) + , ("[2]", all_ ["0"]) + , ("[1,2,4]", all_ ["2"]) + , ("[1,2,2,1,1,2]", all_ ["4"]) + , ("[1,2,2,1,1,2,1,2,2]", all_ ["5"]) + , ("[1]", all_ ["0"]) + ] describe "q162254: Generate a Walsh Matrix" $ do specEval "Ë:ᵒ&Þ£E" @@ -1742,7 +1758,7 @@ testEval = describe "Evaluation" $ do ] describe "q226593: Split a list into maximal equal-sum sections" $ do specEval - "O:ᵐ∑≡$Ðål" + "O:Ŝ≡$Ðål" [ ("[9,5,1,2,9,2]", all_ ["[[1,2,9,2],[9,5]]"]) , ("[1,1,3,5,7,4]", all_ ["[[3,4],[7],[1,1,5]]"]) , ("[2,9,6,1,5,8,2]", all_ ["[[1,8,2],[6,5],[2,9]]"]) @@ -2257,7 +2273,7 @@ testEval = describe "Evaluation" $ do , ("[3,1,4,1,5,9,2,6]", all_ ["3", "4", "4", "9", "5", "14", "2", "31"]) ] specEval - "x:→&xï@ᵐ∑" + "x:→&xï@Ŝ" [ ("[]", all_ ["[]"]) , ("[999]", all_ ["[999]"]) , ("[3,1,4]", all_ ["[3,4,4]"]) @@ -2401,7 +2417,7 @@ testEval = describe "Evaluation" $ do ] describe "q257458: Sum of Consecutive Squares" $ do specEval - "qᵗz:∙=" + "qŁ:∙=" [ ("5", Check True) , ("13", Check True) , ("14", Check True) @@ -2869,7 +2885,7 @@ testEval = describe "Evaluation" $ do ] describe "q262512: Generate all linked chains" $ do specEval - "\"-_\"Ňŧĉᵗz'=ᵚcjt" + "\"-_\"ŇŧĉŁ'=ᵚcjt" [("", truncate_ ["-=_", "_=-", "--=_", "-=_=-", "-=__", "_=--", "_=-=_", "__=-"])] describe "q262518: Landmine Number I" $ do specEval @@ -3047,7 +3063,7 @@ testEval = describe "Evaluation" $ do ] describe "q264166: Count N-Rich Permutations of an Integer Sequence" $ do specEval - "↕∆±ĉᵐ∑çṀ→=" + "↕∆±ĉŜçṀ→=" [ ("[1,2,3,4,5] 1", Count 1) , ("[1,2,3,4,5] 2", Count 69) , ("[1,2,3,4,5] 3", Count 41) @@ -3487,7 +3503,7 @@ testEval = describe "Evaluation" $ do ] describe "q271436: Reconstruct a list from its prefixes" $ do specEval - "ᵐ∑oç∆" + "Ŝoç∆" [ ("[[1],[1,2],[1,2,3]]", all_ ["[1,2,3]"]) , ("[[2,1],[1],[3,1,2]]", all_ ["[1,2,3]"]) , ("[[6,4,8],[7,4,8,6],[6,4],[6]]", all_ ["[6,4,8,7]"]) @@ -3497,3 +3513,51 @@ testEval = describe "Evaluation" $ do , ("[[22,98,62,80],[80,98],[22,98,10,62,80,87,2],[98],[62,80,98],[22,98,2,62,80],[2,22,98,62,87,80]]", all_ ["[98,80,62,22,2,87,10]"]) , ("[[43,84,56,19],[56,43],[43,56,19],[43]]", all_ ["[43,56,19,84]"]) ] + describe "q271505: Reconstruct a list of strings from its prefixes" $ do + specEval + "↕ᵉtiᶻ{∕z" + [ ("[[],[\"lorem\"],[\"lorem\",\"ipsum\"],[\"lorem\",\"ipsum\",\"dolor\"]]", all_ ["[\"lorem\",\"ipsum\",\"dolor\"]"]) + , ("[[\"ipsum\",\"lorem\"],[\"lorem\"],[\"dolor\",\"lorem\",\"ipsum\"],[]]", all_ ["[\"lorem\",\"ipsum\",\"dolor\"]"]) + , ("[[\"consectetuer\",\"sit\",\"elit\"],[\"adipiscing\",\"sit\",\"elit\",\"consectetuer\"],[\"consectetuer\",\"sit\"],[\"consectetuer\"],[]]", all_ ["[\"consectetuer\",\"sit\",\"elit\",\"adipiscing\"]"]) + , ("[[\"ipsum\"],[\"nunc\",\"ipsum\",\"justo\",\"in\"],[\"justo\",\"in\",\"ipsum\",\"molestie\",\"nunc\"],[\"ipsum\",\"nunc\",\"justo\"],[\"justo\",\"ipsum\"],[]]", all_ ["[\"ipsum\",\"justo\",\"nunc\",\"in\",\"molestie\"]"]) + , ("[[\"elit\",\"sit\"],[\"sit\",\"elit\",\"elit\",\"sit\"],[\"sit\",\"sit\",\"elit\"],[\"sit\"],[]]", all_ ["[\"sit\",\"elit\",\"sit\",\"elit\"]"]) + ] + specEval + "Ŝoç∆ᵐᶠZH" + [ ("[[\"lorem\"],[\"lorem\",\"ipsum\"],[\"lorem\",\"ipsum\",\"dolor\"]]", all_ ["[\"lorem\",\"ipsum\",\"dolor\"]"]) + , ("[[\"ipsum\",\"lorem\"],[\"lorem\"],[\"dolor\",\"lorem\",\"ipsum\"]]", all_ ["[\"lorem\",\"ipsum\",\"dolor\"]"]) + , ("[[\"consectetuer\",\"sit\",\"elit\"],[\"adipiscing\",\"sit\",\"elit\",\"consectetuer\"],[\"consectetuer\",\"sit\"],[\"consectetuer\"]]", all_ ["[\"consectetuer\",\"sit\",\"elit\",\"adipiscing\"]"]) + , ("[[\"ipsum\"],[\"nunc\",\"ipsum\",\"justo\",\"in\"],[\"justo\",\"in\",\"ipsum\",\"molestie\",\"nunc\"],[\"ipsum\",\"nunc\",\"justo\"],[\"justo\",\"ipsum\"]]", all_ ["[\"ipsum\",\"justo\",\"nunc\",\"in\",\"molestie\"]"]) + , ("[[\"elit\",\"sit\"],[\"sit\",\"elit\",\"elit\",\"sit\"],[\"sit\",\"sit\",\"elit\"],[\"sit\"]]", all_ ["[\"sit\",\"elit\",\"sit\",\"elit\"]"]) + ] + describe "q271522: Can I follow this recipe?" $ do + specEval + "ᶦ{ĕ~f}z" + [ ("[[9,2,3]]", Check True) + , ("[[],[]]", Check False) + , ("[[2],[9]]", Check True) + , ("[[],[3],[2,6],[1,2,4],[1,2,3]]", Check True) + , ("[[1,2,3],[],[2,4],[1,2,4],[3]]", Check False) + , ("[[],[],[9]]", Check False) + , ("[[1,2,3],[],[2,4],[1,2,4],[3],[9]]", Check False) + ] + describe "q271970: Next cyclic suffix" $ do + specEval + "Ṁ→↔$ŧᵖ{,:xŘṀ=" + [ ("[9] 3", first_ "[9,9,9]") + , ("[4,2,1] 3", first_ "[4,2,1]") + , ("[9,0,9] 2", first_ "[0,8]") + , ("[9,8,0,9,8] 2", first_ "[0,8]") + , ("[9,8,0,9,8] 3", first_ "[0,9,7]") + , ("[9,8,0,9,8] 4", first_ "[0,9,8,0]") + , ("[9,9,0,9] 1", first_ "[8]") + , ("[5,4] 5", first_ "[5,4,5,4,4]") + , ("[10,6,2] 4", first_ "[10,6,2,9]") + ] + describe "q272425: Fixed Repeating Output" $ do + specEval + "Ħ¬" + [ ("5", all_ ["[1,1,1,1,1,0]"]) + , ("2", all_ ["[1,1,0]"]) + , ("0", all_ ["[0]"]) + ]