diff --git a/CHANGELOG.md b/CHANGELOG.md index 07acc0c..c9778ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## 0.5.1.0 -- Unreleased -* New built-in functions: `\divMod`, `\popCount`, `\rle`, `\unrle`. +* New built-in functions: `\bifurcate`, `\divMod`, `\popCount`, `\rle`, `\unrle`. * New particle: `\zipWithTrunc`. ## 0.5.0.0 -- 2023-09-02 diff --git a/analysis/Ideas.md b/analysis/Ideas.md index 3037ad2..f7d4c9a 100644 --- a/analysis/Ideas.md +++ b/analysis/Ideas.md @@ -17,15 +17,18 @@ LiberationMono 字体所支持的字符列举于[此文件](analysis/LiberationM 写了个[脚本](analyze.py)来统计、分析现有的解答。得到一些有趣的结果(以下排名可能不是最新的): * 最常用的一个字符是 `{`,用来开启一个 block。 -* 单个字符中,排第二、第三的分别是 `$`(`\swap`)和 `:`(`\dup`),都是常见的栈操作。其它 stack-based 的 golfing 语言中,这两个操作也排名很靠前。 -* 四到七名分别是 `∑`(`\sum`)、`+`(`\add`)、`=`(`\eq`)、`←`(`\decrement`)。这些也都是常见的操作。 -* `}` 排到并列第七,出现次数不到 `{` 的一半。看来代码结尾可以省略 `}` 的设计是正确的。 -* `a`(`\allValues`)排第九。这是 non-deterministic 语言特有的操作,算是 Nekomata 的特色之一。 -* `ç`(`\cons0`)能排到第十。这个完全出乎我的意料,因为很多别的 golfing 语言中根本没有这个操作。它的作用是给列表加一个 0,通常是配合 `\head`、`\last`、`\minimum`、`\maximum` 等函数使用,来处理空列表的特殊情况。需要看一看其它语言是怎么处理空列表的。 -* `R`(`\range1`)并列第十,出现次数比 `r`(`\range0`)多得多。这是因为很多函数和助词在参数是数字时会自动按 `\range0` 来转换成列表,所以不需要显式地写出 `\range0`。 -* 在两个字符的组合中,排前七的分别是 `ᶦ{`、`ʷ{`、`ˡ{`、`ᵖ{`、`ᵑ{`、`ᵐ{`、`ᵏ{`。也许可以像 Vyxal 等语言一样,让这些助词自动开启 block,省去一个 `{`。不过另外一些助词通常只修饰单个 built-in,自动开启 block 反而会额外需要一个 `}`。尤其是 `ᵖ`、`ᵑ`、`ᵐ`,两种用法都很常见,不好取舍。详见 [`analysis/particles.txt`](particles.txt)。 -* 多个字符的组合目前样本还不够多,暂时分析不出什么有用的信息。 -* 统计结果与其它语言的差异,除了考虑到语言本身的特点之外,还要考虑到语言的使用者的偏好。目前 Nekomata 的使用者只有我自己,解答的也主要是我感兴趣的题目类型,string 相关的题目较少,ascii-art 更是完全没有。 +* 单个字符中,排第二、第三的分别是 `:`(`\dup`)和 `$`(`\swap`),都是常见的栈操作。其它 stack-based 的 golfing 语言中,这两个操作也排名很靠前。 +* 四到七名分别是 `=`(`\eq`)、`+`(`\add`)、`∑`(`\sum`)、`←`(`\decrement`)。这些也都是常见的操作。 +* 第八名是 `ᵐ`(`\map`),是最常用的助词。 +* `1` 排到第十,是最常见的常量。 +* `}` 排到第十二,出现次数不到 `{` 的一半。看来代码结尾可以省略 `}` 的设计是正确的。 +* `a`(`\allValues`)排第十五。这是 non-deterministic 语言特有的操作,算是 Nekomata 的特色之一。 +* `ç`(`\cons0`)能排到第十六。这个完全出乎我的意料,因为很多别的 golfing 语言中根本没有这个操作。它的作用是给列表加一个 0,通常是配合 `\head`、`\last`、`\minimum`、`\maximum` 等函数使用,来处理空列表的特殊情况。需要看一看其它语言是怎么处理空列表的。 +* 在两个字符的组合中,排前五的分别是 `ᶦ{`、`ᵖ{`、`ʷ{`、`ᵑ{`、`ᶠ{`,`ˡ{` 排第七。也许可以像 Vyxal 等语言一样,让这些助词自动开启 block,省去一个 `{`。不过另外一些助词通常只修饰单个 built-in,自动开启 block 反而会额外需要一个 `}`。尤其是 `ᵖ`、`ᵑ`、`ᵐ`,两种用法都很常见,不好取舍。详见 [`analysis/particles.txt`](particles.txt)。 +* `{$` 在两个字符的组合中排第六,`{:` 排第九。这两个组合没有特别的意义,只是因为 `\dup` 和 `\swap` 是最常用的两个操作,因此它们的组合也很常用。 +* `1>` 在两个字符的组合中排第八。可以考虑增加一个 `\significant` 函数,用来检查一个数的绝对值是否大于 1。Jelly 中有与之相反的函数 `insignificant`。到底是添加 `\significant` 还是 `\insignificant`,还要考虑一下。 +* `Ňᵖ{` 在三个字符的组合中排第一,也许值得为它增加一个助词。 +* 统计结果与其它语言的差异,除了考虑到语言本身的特点之外,还要考虑到语言的使用者的偏好。目前 Nekomata 的使用者基本上只有我自己,解答的也主要是我感兴趣的题目类型,string 相关的题目较少,ascii-art 更是完全没有。 ## 来自 codegolf 题目的想法 @@ -106,14 +109,6 @@ LiberationMono 字体所支持的字符列举于[此文件](analysis/LiberationM 支持递归需要对现有的解释器进行大量的修改。一个问题是它会让 arity 变得不确定。可以考虑为不同 arity 的函数分别定义 `\self`,比如说 `\self1`、`\self2`、`\self3` 等等。 -### [Generate a Walsh Matrix](https://codegolf.stackexchange.com/q/162254/9288) - -``` -\powOf2 \dup \outer \bitand \popcount \neg1 \pow -``` - -- [ ] `\popcount`:求一个数的二进制表示中 1 的个数。 - 位运算还是很有用的。 ### [Shortest distinguishable slice](https://codegolf.stackexchange.com/q/259707/9288) diff --git a/analysis/analyze.py b/analysis/analyze.py index 210738c..c75a502 100644 --- a/analysis/analyze.py +++ b/analysis/analyze.py @@ -23,7 +23,7 @@ def ngram_freq(corpus: list[str], n: int) -> dict[str, int]: def particles_analysis(corpus: list[str]) -> dict[str, list[int]]: - particles = "ᵃᶜᵈᵉᵋᶠᶦᵏˡᵐᵚᵑᵒᵖᵗʷˣᶻ" + particles = "ᵃᶜᵈᵉᵋᶠᶦᵏˡᵐᵚᵑᵒᵖʳᵗʷˣᶻᶾ" freq = {} for particle in particles: diff --git a/analysis/corpus.txt b/analysis/corpus.txt index 2fcc4dc..a3601db 100644 --- a/analysis/corpus.txt +++ b/analysis/corpus.txt @@ -2,7 +2,7 @@ 1:ᶦ{$ᵉ+ ʷ{←Pᶜ← Jᵐ#3< -qNᵗz:↔=ũ +qNᵗzƀ=ũ ↕= S= ˡ{1>ᵉ½3*→I @@ -167,8 +167,8 @@ S∑a:u∕u Øᶦ{Sa ᶠ{+ä∩z O2ᵚL -↕:↔= -p::↔ᵃᶜt$,,= +↕ƀ= +p:ƀᵃᶜt$,,= J≡ ŇË←Q Ṗ¢$¦ @@ -246,7 +246,7 @@ Oᵖᵐ{Ťđṁ<}aş ᵑ{R∑ x:ᵒ-¬* Ðᵒ÷u#← -3Ňŧ←1c:↔_=3b +3Ňŧ←1cƀ_=3b Ňƒ$ƥ←ËƂ∙ŋ +ᵚ%-±ç1Ĩ Ë:ᵒ&Þ←A± @@ -264,7 +264,7 @@ r:,↕ũ∆Zç∫:ux=¿'a+H pNᵉ#ĉ#* ˣ+1I × -¥+Ƃi:↔¬?:Jĭ,Ťđ,?ƃa≤ +¥+Ƃiƀ¬?:Jĭ,Ťđ,?ƃa≤ ±đZ≠nŘA ᶾ-¥b± ←ᶠ{ᵈqEů∑= diff --git a/analysis/freq_1gram.txt b/analysis/freq_1gram.txt index f54e6dc..7787139 100644 --- a/analysis/freq_1gram.txt +++ b/analysis/freq_1gram.txt @@ -1,5 +1,5 @@ { : 61 -: : 50 +: : 45 $ : 42 = : 37 + : 35 @@ -11,7 +11,6 @@ R : 28 * : 26 } : 26 → : 24 -↔ : 23 - : 23 a : 22 ç : 20 @@ -21,6 +20,7 @@ j : 20 o : 18 2 : 18 x : 18 +↔ : 18 u : 17 # : 16 Ƃ : 16 @@ -109,6 +109,7 @@ A : 6 Ř : 6 į : 6 ¢ : 6 +ƀ : 5 Ö : 5 ƃ : 5 d : 5 diff --git a/analysis/freq_2gram.txt b/analysis/freq_2gram.txt index 13a9aeb..4805086 100644 --- a/analysis/freq_2gram.txt +++ b/analysis/freq_2gram.txt @@ -4,7 +4,6 @@ ᵑ{ : 7 ᶠ{ : 7 {$ : 6 -:↔ : 5 ˡ{ : 5 1> : 5 {: : 5 @@ -17,7 +16,6 @@ Jᵐ : 4 :ᵒ : 4 Ňᵖ : 4 ᵗz : 3 -↔= : 3 ŢṂ : 3 ←½ : 3 ᵃƂ : 3 @@ -66,7 +64,7 @@ R∑ : 3 ᵉ+ : 2 ←P : 2 qN : 2 -z: : 2 +ƀ= : 2 ↕= : 2 S= : 2 3* : 2 @@ -165,8 +163,6 @@ ux : 2 £d : 2 į→ : 2 →ŋ : 2 -:: : 2 -↔ᵃ : 2 ,, : 2 ŇË : 2 tu : 2 @@ -208,6 +204,7 @@ Pᶜ : 1 #3 : 1 3< : 1 Nᵗ : 1 +zƀ : 1 =ũ : 1 >ᵉ : 1 ᵉ½ : 1 @@ -361,6 +358,7 @@ lµ : 1 YṀ : 1 oᶜ : 1 ᶜ↔ : 1 +↔= : 1 ᵑᵉ : 1 ᵉř : 1 ř^ : 1 @@ -618,8 +616,10 @@ Sa : 1 ä∩ : 1 O2 : 1 ᵚL : 1 -↕: : 1 +↕ƀ : 1 p: : 1 +:ƀ : 1 +ƀᵃ : 1 ᵃᶜ : 1 t$ : 1 $, : 1 @@ -741,6 +741,7 @@ Pa : 1 Ƃx : 1 Řƃ : 1 ƃṁ : 1 +z: : 1 ∙= : 1 Bu : 1 u$ : 1 @@ -784,6 +785,7 @@ $đ : 1 S2 : 1 2L : 1 L: : 1 +:: : 1 ∙√ : 1 √ɔ : 1 ɔ$ : 1 @@ -901,6 +903,7 @@ l→ : 1 ƥ} : 1 }Ƃ : 1 Ƃ# : 1 +↔ᵃ : 1 ᵃj : 1 jĻ : 1 RF : 1 @@ -1017,8 +1020,8 @@ oÐ : 1 ÷u : 1 3Ň : 1 ←1 : 1 -c: : 1 -↔_ : 1 +cƀ : 1 +ƀ_ : 1 =3 : 1 3b : 1 Ňƒ : 1 @@ -1111,8 +1114,8 @@ Nᵉ : 1 ¥+ : 1 +Ƃ : 1 Ƃi : 1 -i: : 1 -↔¬ : 1 +iƀ : 1 +ƀ¬ : 1 ¬? : 1 ?: : 1 :J : 1 diff --git a/analysis/freq_3gram.txt b/analysis/freq_3gram.txt index 335617e..26d099c 100644 --- a/analysis/freq_3gram.txt +++ b/analysis/freq_3gram.txt @@ -6,8 +6,6 @@ u∕u : 3 ᵑ{ˣ : 3 "ᵉĝ : 2 ᵉĝ, : 2 -ᵗz: : 2 -:↔= : 2 {1> : 2 3*→ : 2 *→I : 2 @@ -53,8 +51,9 @@ Jᵐ# : 1 #3< : 1 qNᵗ : 1 Nᵗz : 1 -z:↔ : 1 -↔=ũ : 1 +ᵗzƀ : 1 +zƀ= : 1 +ƀ=ũ : 1 ˡ{1 : 1 1>ᵉ : 1 >ᵉ½ : 1 @@ -497,11 +496,10 @@ m2Ĩ : 1 ä∩z : 1 O2ᵚ : 1 2ᵚL : 1 -↕:↔ : 1 -p:: : 1 -::↔ : 1 -:↔ᵃ : 1 -↔ᵃᶜ : 1 +↕ƀ= : 1 +p:ƀ : 1 +:ƀᵃ : 1 +ƀᵃᶜ : 1 ᵃᶜt : 1 ᶜt$ : 1 t$, : 1 @@ -657,6 +655,7 @@ Paṁ : 1 xŘƃ : 1 Řƃṁ : 1 qᵗz : 1 +ᵗz: : 1 z:∙ : 1 :∙= : 1 ᵖ{* : 1 @@ -986,10 +985,9 @@ u#← : 1 Ňŧ← : 1 ŧ←1 : 1 ←1c : 1 -1c: : 1 -c:↔ : 1 -:↔_ : 1 -↔_= : 1 +1cƀ : 1 +cƀ_ : 1 +ƀ_= : 1 _=3 : 1 =3b : 1 Ňƒ$ : 1 @@ -1098,10 +1096,9 @@ Nᵉ# : 1 +1I : 1 ¥+Ƃ : 1 +Ƃi : 1 -Ƃi: : 1 -i:↔ : 1 -:↔¬ : 1 -↔¬? : 1 +Ƃiƀ : 1 +iƀ¬ : 1 +ƀ¬? : 1 ¬?: : 1 ?:J : 1 :Jĭ : 1 diff --git a/analysis/freq_4gram.txt b/analysis/freq_4gram.txt index 55134e8..888c6d0 100644 --- a/analysis/freq_4gram.txt +++ b/analysis/freq_4gram.txt @@ -23,10 +23,9 @@ Jᵐ#3 : 1 ᵐ#3< : 1 qNᵗz : 1 -Nᵗz: : 1 -ᵗz:↔ : 1 -z:↔= : 1 -:↔=ũ : 1 +Nᵗzƀ : 1 +ᵗzƀ= : 1 +zƀ=ũ : 1 ˡ{1> : 1 {1>ᵉ : 1 1>ᵉ½ : 1 @@ -351,11 +350,9 @@ a:u∕ : 1 {+ä∩ : 1 +ä∩z : 1 O2ᵚL : 1 -↕:↔= : 1 -p::↔ : 1 -::↔ᵃ : 1 -:↔ᵃᶜ : 1 -↔ᵃᶜt : 1 +p:ƀᵃ : 1 +:ƀᵃᶜ : 1 +ƀᵃᶜt : 1 ᵃᶜt$ : 1 ᶜt$, : 1 t$,, : 1 @@ -788,11 +785,10 @@ x:ᵒ- : 1 3Ňŧ← : 1 Ňŧ←1 : 1 ŧ←1c : 1 -←1c: : 1 -1c:↔ : 1 -c:↔_ : 1 -:↔_= : 1 -↔_=3 : 1 +←1cƀ : 1 +1cƀ_ : 1 +cƀ_= : 1 +ƀ_=3 : 1 _=3b : 1 Ňƒ$ƥ : 1 ƒ$ƥ← : 1 @@ -889,11 +885,10 @@ Nᵉ#ĉ : 1 #ĉ#* : 1 ˣ+1I : 1 ¥+Ƃi : 1 -+Ƃi: : 1 -Ƃi:↔ : 1 -i:↔¬ : 1 -:↔¬? : 1 -↔¬?: : 1 ++Ƃiƀ : 1 +Ƃiƀ¬ : 1 +iƀ¬? : 1 +ƀ¬?: : 1 ¬?:J : 1 ?:Jĭ : 1 :Jĭ, : 1 diff --git a/analysis/freq_5gram.txt b/analysis/freq_5gram.txt index cce4ac4..b73d7b0 100644 --- a/analysis/freq_5gram.txt +++ b/analysis/freq_5gram.txt @@ -13,10 +13,9 @@ ʷ{←Pᶜ : 1 {←Pᶜ← : 1 Jᵐ#3< : 1 -qNᵗz: : 1 -Nᵗz:↔ : 1 -ᵗz:↔= : 1 -z:↔=ũ : 1 +qNᵗzƀ : 1 +Nᵗzƀ= : 1 +ᵗzƀ=ũ : 1 ˡ{1>ᵉ : 1 {1>ᵉ½ : 1 1>ᵉ½3 : 1 @@ -241,10 +240,9 @@ a:u∕u : 1 Øᶦ{Sa : 1 ᶠ{+ä∩ : 1 {+ä∩z : 1 -p::↔ᵃ : 1 -::↔ᵃᶜ : 1 -:↔ᵃᶜt : 1 -↔ᵃᶜt$ : 1 +p:ƀᵃᶜ : 1 +:ƀᵃᶜt : 1 +ƀᵃᶜt$ : 1 ᵃᶜt$, : 1 ᶜt$,, : 1 t$,,= : 1 @@ -605,12 +603,11 @@ x:ᵒ-¬ : 1 ᵒ÷u#← : 1 3Ňŧ←1 : 1 Ňŧ←1c : 1 -ŧ←1c: : 1 -←1c:↔ : 1 -1c:↔_ : 1 -c:↔_= : 1 -:↔_=3 : 1 -↔_=3b : 1 +ŧ←1cƀ : 1 +←1cƀ_ : 1 +1cƀ_= : 1 +cƀ_=3 : 1 +ƀ_=3b : 1 Ňƒ$ƥ← : 1 ƒ$ƥ←Ë : 1 $ƥ←ËƂ : 1 @@ -693,12 +690,11 @@ x=¿'a : 1 pNᵉ#ĉ : 1 Nᵉ#ĉ# : 1 ᵉ#ĉ#* : 1 -¥+Ƃi: : 1 -+Ƃi:↔ : 1 -Ƃi:↔¬ : 1 -i:↔¬? : 1 -:↔¬?: : 1 -↔¬?:J : 1 +¥+Ƃiƀ : 1 ++Ƃiƀ¬ : 1 +Ƃiƀ¬? : 1 +iƀ¬?: : 1 +ƀ¬?:J : 1 ¬?:Jĭ : 1 ?:Jĭ, : 1 :Jĭ,Ť : 1 diff --git a/analysis/particles.txt b/analysis/particles.txt index 41a2dd8..953d09f 100644 --- a/analysis/particles.txt +++ b/analysis/particles.txt @@ -1,8 +1,10 @@ particle : with "{" / total ᵈ : 0 / 5 +ʳ : 0 / 4 ᵗ : 0 / 7 ˣ : 0 / 4 ᶻ : 0 / 9 +ᶾ : 0 / 1 ᵉ : 1 / 18 ᵐ : 3 / 28 ᵚ : 1 / 9 diff --git a/doc/Builtins.md b/doc/Builtins.md index 2f83619..a5d5895 100644 --- a/doc/Builtins.md +++ b/doc/Builtins.md @@ -996,7 +996,7 @@ If it is, push the list itself, otherwise fail. ### `enumerate` (`x`, `1 -> 2`) -Push a list of integers from 0 to the length of the argument minus 1 without popping the argument. +Push a list of integers from 0 to the length of the argument minus 1 without popping the original argument. ### `rotate` (`Ř`, `2 -> 1`) @@ -1122,6 +1122,10 @@ Create a list with length n, whose elements are taken from another list. This function is non-deterministic, and automatically vectorized on the second argument. +### `bifurcate` (`ƀ`, `1 -> 2`) + +Push the reverse of a list without popping the original list. + ## Particles ### `apply2` (`ᵃ`, `(0 -> n) -> (0 -> 2 * n) or (m -> n) -> (m + 1 -> 2 * n) where m > 0`) diff --git a/doc/CodePage.md b/doc/CodePage.md index 7ccf13d..dd3afcc 100644 --- a/doc/CodePage.md +++ b/doc/CodePage.md @@ -18,8 +18,8 @@ The language is still in an early stage, so the code page is incomplete. Unassig |**9_**|`ʷ`|`ˣ`|`ᶻ`|`ᶾ`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`| |**A_**|`Ä`|`Ƃ`|`Ç`|`Ĉ`|`Ď`|`Ð`|`Ɗ`|`Ë`|`Ĝ`|`Ģ`|`Ĩ`|`Ĭ`|`Ļ`|`Ṁ`|`Ṃ`|`Ň`| |**B_**|`Ö`|`Ø`|`Ɔ`|`Ƥ`|`Ṗ`|`Ř`|`Ş`|`Ţ`|`Ť`|`Ŭ`|`Ž`|`Þ`|`�`|`�`|`�`|`�`| -|**C_**|`ä`|`ƃ`|`ç`|`ĉ`|`đ`|`ḍ`|`ɗ`|`ĕ`|`ƒ`|`ĝ`|`ï`|`ĭ`|`į`|`ṁ`|`ṃ`|`ň`| -|**D_**|`ŋ`|`ṇ`|`ɔ`|`ƥ`|`ŗ`|`ř`|`ş`|`ŧ`|`ũ`|`ů`|`ž`|`þ`|`�`|`�`|`�`|`�`| +|**C_**|`ä`|`ƃ`|`ƀ`|`ç`|`ĉ`|`đ`|`ḍ`|`ɗ`|`ĕ`|`ƒ`|`ĝ`|`ï`|`ĭ`|`į`|`ṁ`|`ṃ`| +|**D_**|`ň`|`ŋ`|`ṇ`|`ɔ`|`ƥ`|`ŗ`|`ř`|`ş`|`ŧ`|`ũ`|`ů`|`ž`|`þ`|`�`|`�`|`�`| |**E_**|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`| |**F_**|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`| diff --git a/src/Nekomata/Builtin.hs b/src/Nekomata/Builtin.hs index 8cf4c49..a0f8d8b 100644 --- a/src/Nekomata/Builtin.hs +++ b/src/Nekomata/Builtin.hs @@ -1086,7 +1086,7 @@ builtins = 'x' enumerate "Push a list of integers from 0 to the length of the argument minus 1 \ - \without popping the argument." + \without popping the original argument." , Builtin "rotate" 'Ř' @@ -1220,6 +1220,11 @@ builtins = \whose elements are taken from another list.\n\ \This function is non-deterministic, \ \and automatically vectorized on the second argument." + , Builtin + "bifurcate" + 'ƀ' + bifurcate + "Push the reverse of a list without popping the original list." ] -- | The map from names to builtin functions diff --git a/src/Nekomata/Builtin/List.hs b/src/Nekomata/Builtin/List.hs index f1b3ff6..30110a4 100644 --- a/src/Nekomata/Builtin/List.hs +++ b/src/Nekomata/Builtin/List.hs @@ -733,3 +733,6 @@ tuple = binaryVecArg2 tuple' | n > 0 = anyOf (leftId i) xs <&> \x -> Cons x (tuple_ (rightId i) (n - 1) xs) | otherwise = Fail + +bifurcate :: Function +bifurcate = dup .* reverse' diff --git a/src/Nekomata/CodePage.hs b/src/Nekomata/CodePage.hs index 28e4cf2..e9b8182 100644 --- a/src/Nekomata/CodePage.hs +++ b/src/Nekomata/CodePage.hs @@ -21,8 +21,8 @@ codePage = ++ "ʷˣᶻᶾ������������" ++ "ÄƂÇĈĎÐƊËĜĢĨĬĻṀṂŇ" ++ "ÖØƆƤṖŘŞŢŤŬŽÞ����" - ++ "äƃçĉđḍɗĕƒĝïĭįṁṃň" - ++ "ŋṇɔƥŗřşŧũůžþ����" + ++ "äƃƀçĉđḍɗĕƒĝïĭįṁṃ" + ++ "ňŋṇɔƥŗřşŧũůžþ���" ++ "����������������" ++ "����������������" diff --git a/test/Eval.hs b/test/Eval.hs index 0a663fe..498b0b6 100644 --- a/test/Eval.hs +++ b/test/Eval.hs @@ -65,7 +65,7 @@ testEval = describe "Evaluation" $ do ] describe "q183: Finding \"sub-palindromes\"." $ do specEval - "qNᵗz:↔=ũ" + "qNᵗzƀ=ũ" [ ("\"12131331\"", All ["121", "131", "313", "1331", "33"]) , ("\"3333\"", All ["33", "333", "3333"]) ] @@ -1839,7 +1839,7 @@ testEval = describe "Evaluation" $ do ] describe "q250283: Rearrange to a palindrome" $ do specEval - "↕:↔=" + "↕ƀ=" [ ("\"nanas\"", First $ Just "nasan") , ("\"coconutnut\"", First $ Just "conuttunoc") , ("\"apotato\"", First $ Just "aotptoa") @@ -1849,7 +1849,7 @@ testEval = describe "Evaluation" $ do ] describe "q250395: Have you heard of tralindromes?" $ do specEval - "p::↔ᵃᶜt$,,=" + "p:ƀᵃᶜt$,,=" [ ("\"a\"", Check True) , ("\"bb\"", Check True) , ("\"ccc\"", Check True) @@ -2670,7 +2670,7 @@ testEval = describe "Evaluation" $ do ] describe "q262985: Numbers that can be negated by reading backwards" $ do specEval - "3Ňŧ←1c:↔_=3b" + "3Ňŧ←1cƀ_=3b" [("", Truncated ["2", "8", "20", "26", "32", "56", "80", "104", "146", "164"])] describe "q263200: Print all Polynomials" $ do specEval @@ -2833,7 +2833,7 @@ testEval = describe "Evaluation" $ do ] describe "q264624: Is it a canonical elementary CA rule number?" $ do specEval - "¥+Ƃi:↔¬?:Jĭ,Ťđ,?ƃa≤" + "¥+Ƃiƀ¬?:Jĭ,Ťđ,?ƃa≤" [ ("11", Check True) , ("62", Check True) , ("74", Check True)