From e181c19e75e6a239e78039bdbdde5ec276685957 Mon Sep 17 00:00:00 2001 From: AlephAlpha Date: Wed, 31 Jan 2024 16:31:47 +0800 Subject: [PATCH] :dizzy_face: --- .github/workflows/test.yml | 2 +- CHANGELOG.md | 2 +- analysis/Ideas.md | 8 ---- analysis/corpus.txt | 8 +++- analysis/freq_1gram.txt | 60 +++++++++++++++------------- analysis/freq_2gram.txt | 42 ++++++++++++++++---- analysis/freq_3gram.txt | 29 +++++++++++++- analysis/freq_4gram.txt | 21 +++++++++- analysis/freq_5gram.txt | 14 +++++++ analysis/particles.txt | 8 ++-- doc/Builtins.md | 6 +++ doc/CodePage.md | 6 +-- src/Nekomata/Builtin.hs | 6 +++ src/Nekomata/Builtin/List.hs | 10 +++++ src/Nekomata/CodePage.hs | 6 +-- test/Eval.hs | 76 +++++++++++++++++++++++++++++++++++- 16 files changed, 243 insertions(+), 61 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b485352..b4f56ef 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -5,7 +5,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - ghc: ['9.0.1', '9.4.8', '9.6.3', '9.8.1'] + ghc: ['9.0.1', '9.4.8', '9.6.4', '9.8.1'] steps: - uses: actions/checkout@v4 - uses: haskell/actions/setup@v2 diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ae803d..57bae8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ * Fixed a bug in printing truncated results. * Now characters are internally represented as `Word8`s instead of `Char`s. * Added a REPL command `\Arity` to print the arity of a function. -* New built-in functions: `\minValue`, `\minMax`, `\maxValue`, `\ordering`, `\pad`, `\slices`. +* New built-in functions: `elem`, `\minValue`, `\minMax`, `\maxValue`, `\ordering`, `\pad`, `\slices`. ### Breaking changes diff --git a/analysis/Ideas.md b/analysis/Ideas.md index 475885f..616758b 100644 --- a/analysis/Ideas.md +++ b/analysis/Ideas.md @@ -103,14 +103,6 @@ LiberationMono 字体所支持的字符列举于[此文件](analysis/LiberationM 支持递归需要对现有的解释器进行大量的修改。一个问题是它会让 arity 变得不确定。可以考虑为不同 arity 的函数分别定义 `\self`,比如说 `\self1`、`\self2`、`\self3` 等等。 -### [Is it a brainfuck instruction?](https://codegolf.stackexchange.com/q/203330/9288) - -``` -"+,-.<>[]" \elem -``` - -- [ ] `\elem`:检查一个元素是否在一个列表中。注意其参数顺序与 `\free` 相反。 - ### [Find Unique Anagrams](https://codegolf.stackexchange.com/q/261128/9288) ``` diff --git a/analysis/corpus.txt b/analysis/corpus.txt index e43b6ed..7ea2977 100644 --- a/analysis/corpus.txt +++ b/analysis/corpus.txt @@ -84,7 +84,7 @@ uᵐhů ř∏ 2-ž 8*→√ -R∫$Ĩ +R∫ē Ṁä7+≥ ᵐ~ *5*4ŋ≈√ @@ -144,6 +144,7 @@ RRᵐ↔ RpN↔ ∑ä< ∆$i≥ +"+,-.<>[]"ē ïᶜ_ Ď√‼Ṁ Ɔᵈ∙+ @@ -310,3 +311,8 @@ Ooᵐᵗžũ oOᵐůj ∆±ĉđ 'B∕uo +ᶜ$ᵗ{iq=}s= +řJĉᵐz +≈đG← +ʷ{Ƶþ +Jtđ= diff --git a/analysis/freq_1gram.txt b/analysis/freq_1gram.txt index 8a88ae0..1530832 100644 --- a/analysis/freq_1gram.txt +++ b/analysis/freq_1gram.txt @@ -1,23 +1,23 @@ -{ : 68 +{ : 70 $ : 51 : : 45 -= : 40 += : 43 ∑ : 40 -+ : 38 -ᵐ : 35 -← : 29 ++ : 39 +ᵐ : 36 +← : 30 → : 29 R : 29 * : 28 -} : 25 -- : 24 +} : 26 +- : 25 1 : 23 j : 23 x : 23 +, : 21 o : 21 ç : 21 ᵉ : 20 -, : 20 a : 20 2 : 20 u : 18 @@ -28,30 +28,31 @@ u : 18 ĭ : 16 Ť : 16 l : 16 +đ : 16 p : 16 ~ : 16 ↕ : 15 ᵖ : 15 +" : 14 Ƃ : 14 -đ : 14 +t : 14 Ð : 14 S : 13 Ɔ : 13 ∫ : 13 -t : 13 Ɗ : 13 Ň : 13 +ĉ : 13 ; : 13 L : 13 -" : 12 ᶦ : 12 +J : 12 +< : 12 +q : 12 N : 12 ½ : 12 ᵑ : 12 Ṁ : 12 -ĉ : 12 -< : 11 -q : 11 Q : 11 ᶻ : 11 ≡ : 11 @@ -59,7 +60,9 @@ Z : 11 c : 11 ± : 11 _ : 11 -J : 10 +ʷ : 10 +ᵗ : 10 +z : 10 Ţ : 10 ᵃ : 10 r : 10 @@ -70,17 +73,15 @@ E : 10 ∏ : 10 O : 10 ∆ : 10 -ʷ : 9 -ᵗ : 9 -z : 9 +ᶜ : 9 ũ : 9 ˡ : 9 ž : 9 ᶠ : 9 ŗ : 9 +≈ : 9 C : 9 P : 8 -ᶜ : 8 × : 8 ů : 8 ¬ : 8 @@ -89,9 +90,8 @@ P : 8 ‼ : 8 % : 8 ƒ : 8 -≈ : 8 ∙ : 8 -Ĩ : 8 +Ƶ : 7 f : 7 ∕ : 7 Ä : 7 @@ -100,18 +100,18 @@ f : 7 ᵚ : 7 Ĉ : 7 ṁ : 7 +Ĩ : 7 ä : 7 4 : 7 +i : 7 ᵈ : 7 @ : 7 -Ƶ : 6 ᵏ : 6 ƃ : 6 Ø : 6 Ĭ : 6 ¦ : 6 ş : 6 -i : 6 ∩ : 6 Ř : 6 į : 6 @@ -127,7 +127,9 @@ d : 5 ≤ : 5 Ç : 5 ʳ : 5 +G : 5 Å : 5 +s : 5 ɔ : 5 µ : 5 ĕ : 5 @@ -136,20 +138,19 @@ h : 5 8 : 5 √ : 5 5 : 5 +> : 5 Þ : 5 0 : 5 b : 5 A : 5 +ř : 4 ŧ : 4 -G : 4 k : 4 F : 4 ƥ : 4 -s : 4 Ħ : 4 D : 4 M : 4 -> : 4 ÷ : 4 § : 4 & : 4 @@ -159,12 +160,12 @@ M : 4 õ : 4 ĝ : 3 Ṃ : 3 -ř : 3 Y : 3 T : 3 7 : 3 X : 3 ƶ : 3 +þ : 3 ≠ : 3 ï : 3 å : 3 @@ -176,9 +177,9 @@ v : 3 g : 2 ɱ : 2 ^ : 2 +ē : 2 Ḟ : 2 K : 2 -þ : 2 6 : 2 m : 2 Š : 2 @@ -190,6 +191,9 @@ W : 1 ! : 1 | : 1 Ž : 1 +. : 1 +[ : 1 +] : 1 ṃ : 1 V : 1 ¡ : 1 diff --git a/analysis/freq_2gram.txt b/analysis/freq_2gram.txt index ed995a9..376e6d2 100644 --- a/analysis/freq_2gram.txt +++ b/analysis/freq_2gram.txt @@ -1,6 +1,6 @@ ᶦ{ : 11 ᵖ{ : 9 -ʷ{ : 7 +ʷ{ : 8 ˡ{ : 7 ᵑ{ : 7 ᶠ{ : 7 @@ -21,6 +21,7 @@ Jᵐ : 4 Ňᵖ : 4 aş : 4 ᵗz : 3 +{Ƶ : 3 ŢṂ : 3 ←½ : 3 ᵃƂ : 3 @@ -47,6 +48,7 @@ R: : 3 :∙ : 3 2R : 3 &Þ : 3 +ĉᵐ : 3 xŘ : 3 -_ : 3 u# : 3 @@ -72,7 +74,6 @@ qN : 2 ƀ= : 2 ↕= : 2 S= : 2 -{Ƶ : 2 3* : 2 →I : 2 ĭᵐ : 2 @@ -126,7 +127,6 @@ aj : 2 E∑ : 2 o; : 2 ↔ᶻ : 2 -$Ĩ : 2 *4 : 2 +→ : 2 Qƥ : 2 @@ -138,6 +138,7 @@ Oᵐ : 2 +1 : 2 12 : 2 {- : 2 +ᵗ{ : 2 {≈ : 2 xq : 2 §L : 2 @@ -145,7 +146,6 @@ xq : 2 ᵒ& : 2 Þ£ : 2 ŋ∑ : 2 -ĉᵐ : 2 Þ½ : 2 Sđ : 2 ∩z : 2 @@ -177,6 +177,7 @@ x→ : 2 ĭ$ : 2 ¢B : 2 $y : 2 +{i : 2 {Ť : 2 4* : 2 2÷ : 2 @@ -194,6 +195,7 @@ ut : 2 ,Ť : 2 Ťx : 2 Ṗ↕ : 2 +=} : 2 :# : 2 ĭ? : 2 {* : 2 @@ -420,7 +422,7 @@ y1 : 1 8* : 1 →√ : 1 R∫ : 1 -∫$ : 1 +∫ē : 1 Ṁä : 1 ä7 : 1 7+ : 1 @@ -481,7 +483,6 @@ Z3 : 1 RË : 1 Ë3 : 1 3÷ : 1 -ᵗ{ : 1 {± : 1 ±1 : 1 Ĩ$ : 1 @@ -534,6 +535,7 @@ jĭ : 1 ĭÐ : 1 Ðɗ : 1 ɗ$ : 1 +$Ĩ : 1 Ţ≡ : 1 ≡2 : 1 2= : 1 @@ -560,6 +562,16 @@ N↔ : 1 ∆$ : 1 $i : 1 i≥ : 1 +"+ : 1 ++, : 1 +,- : 1 +-. : 1 +.< : 1 +<> : 1 +>[ : 1 +[] : 1 +]" : 1 +"ē : 1 ïᶜ : 1 ᶜ_ : 1 Ď√ : 1 @@ -646,7 +658,6 @@ E$ : 1 y↔ : 1 ↔∫ : 1 Jᵖ : 1 -{i : 1 ix : 1 →ᶻ : 1 Uˡ : 1 @@ -737,7 +748,6 @@ $R : 1 ĉJ : 1 {J : 1 JS : 1 -=} : 1 }ş : 1 ᵐµ : 1 µṀ : 1 @@ -1267,3 +1277,19 @@ oO : 1 'B : 1 B∕ : 1 uo : 1 +ᶜ$ : 1 +$ᵗ : 1 +iq : 1 +q= : 1 +}s : 1 +s= : 1 +řJ : 1 +Jĉ : 1 +ᵐz : 1 +≈đ : 1 +đG : 1 +G← : 1 +Ƶþ : 1 +Jt : 1 +tđ : 1 +đ= : 1 diff --git a/analysis/freq_3gram.txt b/analysis/freq_3gram.txt index a176fa5..bded081 100644 --- a/analysis/freq_3gram.txt +++ b/analysis/freq_3gram.txt @@ -253,8 +253,7 @@ y1| : 1 2-ž : 1 8*→ : 1 *→√ : 1 -R∫$ : 1 -∫$Ĩ : 1 +R∫ē : 1 Ṁä7 : 1 ä7+ : 1 7+≥ : 1 @@ -405,6 +404,15 @@ pN↔ : 1 ∑ä< : 1 ∆$i : 1 $i≥ : 1 +"+, : 1 ++,- : 1 +,-. : 1 +-.< : 1 +.<> : 1 +<>[ : 1 +>[] : 1 +[]" : 1 +]"ē : 1 ïᶜ_ : 1 Ď√‼ : 1 √‼Ṁ : 1 @@ -1251,3 +1259,20 @@ Oᵐů : 1 'B∕ : 1 B∕u : 1 ∕uo : 1 +ᶜ$ᵗ : 1 +$ᵗ{ : 1 +ᵗ{i : 1 +{iq : 1 +iq= : 1 +q=} : 1 +=}s : 1 +}s= : 1 +řJĉ : 1 +Jĉᵐ : 1 +ĉᵐz : 1 +≈đG : 1 +đG← : 1 +ʷ{Ƶ : 1 +{Ƶþ : 1 +Jtđ : 1 +tđ= : 1 diff --git a/analysis/freq_4gram.txt b/analysis/freq_4gram.txt index 34f7169..5be652f 100644 --- a/analysis/freq_4gram.txt +++ b/analysis/freq_4gram.txt @@ -171,7 +171,6 @@ uᵐhů : 1 ƒy1| : 1 y1|∏ : 1 8*→√ : 1 -R∫$Ĩ : 1 Ṁä7+ : 1 ä7+≥ : 1 *5*4 : 1 @@ -277,6 +276,14 @@ sᵃN, : 1 RRᵐ↔ : 1 RpN↔ : 1 ∆$i≥ : 1 +"+,- : 1 ++,-. : 1 +,-.< : 1 +-.<> : 1 +.<>[ : 1 +<>[] : 1 +>[]" : 1 +[]"ē : 1 Ď√‼Ṁ : 1 Ɔᵈ∙+ : 1 oĉ~z : 1 @@ -1010,3 +1017,15 @@ Oᵐůj : 1 ∆±ĉđ : 1 'B∕u : 1 B∕uo : 1 +ᶜ$ᵗ{ : 1 +$ᵗ{i : 1 +ᵗ{iq : 1 +{iq= : 1 +iq=} : 1 +q=}s : 1 +=}s= : 1 +řJĉᵐ : 1 +Jĉᵐz : 1 +≈đG← : 1 +ʷ{Ƶþ : 1 +Jtđ= : 1 diff --git a/analysis/freq_5gram.txt b/analysis/freq_5gram.txt index 9b4b810..cefafb4 100644 --- a/analysis/freq_5gram.txt +++ b/analysis/freq_5gram.txt @@ -185,6 +185,13 @@ SƆ$đ+ : 1 ≠;sᵃN : 1 ;sᵃN, : 1 sᵃN,= : 1 +"+,-. : 1 ++,-.< : 1 +,-.<> : 1 +-.<>[ : 1 +.<>[] : 1 +<>[]" : 1 +>[]"ē : 1 ïƊj1Ĉ : 1 ᵉᵑ{ˣ∙ : 1 ᵑ{ˣ∙ɔ : 1 @@ -788,3 +795,10 @@ Ooᵐᵗž : 1 oᵐᵗžũ : 1 oOᵐůj : 1 'B∕uo : 1 +ᶜ$ᵗ{i : 1 +$ᵗ{iq : 1 +ᵗ{iq= : 1 +{iq=} : 1 +iq=}s : 1 +q=}s= : 1 +řJĉᵐz : 1 diff --git a/analysis/particles.txt b/analysis/particles.txt index 5cd6cff..03fd875 100644 --- a/analysis/particles.txt +++ b/analysis/particles.txt @@ -5,11 +5,11 @@ particle : with "{" / total ᶻ : 0 / 11 ᶾ : 0 / 1 ᵉ : 1 / 20 -ᵗ : 1 / 9 -ᶜ : 1 / 8 -ᵐ : 5 / 35 +ᶜ : 1 / 9 +ᵐ : 5 / 36 ᵚ : 1 / 7 ᵃ : 2 / 10 +ᵗ : 2 / 10 ᵒ : 4 / 18 ᵋ : 1 / 4 ᵑ : 7 / 12 @@ -17,5 +17,5 @@ particle : with "{" / total ᵏ : 4 / 6 ᶠ : 7 / 9 ˡ : 7 / 9 -ʷ : 7 / 9 +ʷ : 8 / 10 ᶦ : 11 / 12 diff --git a/doc/Builtins.md b/doc/Builtins.md index 0c74e4d..7ef98dd 100644 --- a/doc/Builtins.md +++ b/doc/Builtins.md @@ -1214,6 +1214,12 @@ Get the ordering of a list. The n'th element of the result is the index of the n'th element in the sorted list. +### `elem` (`ē`, `2 -> 1`) + +Check if an element is in a list. + +If it is, push the element, otherwise fail. + ## Particles ### `onBoth` (`ᵃ`, `(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 dfd8c71..e0f2320 100644 --- a/doc/CodePage.md +++ b/doc/CodePage.md @@ -19,7 +19,7 @@ The language is still in an early stage, so the code page is incomplete. Unassig |**A_**|`Ä`|`Å`|`Ƃ`|`Ç`|`Ĉ`|`Ď`|`Ð`|`Ɗ`|`Ë`|`Ḟ`|`Ĝ`|`Ģ`|`Ħ`|`Ĩ`|`Ĭ`|`Ļ`| |**B_**|`Ṁ`|`Ṃ`|`Ň`|`Ö`|`Ø`|`Ɔ`|`Ƥ`|`Ṗ`|`Ř`|`Š`|`Ş`|`Ţ`|`Ť`|`Ŭ`|`Ž`|`Ƶ`| |**C_**|`Þ`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`| -|**D_**|`ä`|`å`|`ƃ`|`ƀ`|`ç`|`ĉ`|`đ`|`ḍ`|`ɗ`|`ĕ`|`ƒ`|`ĝ`|`ï`|`ĭ`|`į`|`ṁ`| -|**E_**|`ṃ`|`ɱ`|`ň`|`ŋ`|`ṇ`|`õ`|`ɔ`|`ƥ`|`ŗ`|`ř`|`ş`|`ŧ`|`ũ`|`ů`|`ž`|`ƶ`| -|**F_**|`þ`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`| +|**D_**|`ä`|`å`|`ƃ`|`ƀ`|`ç`|`ĉ`|`đ`|`ḍ`|`ɗ`|`ē`|`ĕ`|`ƒ`|`ĝ`|`ï`|`ĭ`|`į`| +|**E_**|`ṁ`|`ṃ`|`ɱ`|`ň`|`ŋ`|`ṇ`|`õ`|`ɔ`|`ƥ`|`ŗ`|`ř`|`ş`|`ŧ`|`ũ`|`ů`|`ž`| +|**F_**|`ƶ`|`þ`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`|`�`| diff --git a/src/Nekomata/Builtin.hs b/src/Nekomata/Builtin.hs index e951554..03e3dad 100644 --- a/src/Nekomata/Builtin.hs +++ b/src/Nekomata/Builtin.hs @@ -1330,6 +1330,12 @@ builtins = "Get the ordering of a list.\n\ \The n'th element of the result is the index of the n'th element \ \in the sorted list." + , Builtin + "elem" + 'ē' + elem' + "Check if an element is in a list.\n\ + \If it is, push the element, otherwise fail." ] -- | The map from names to builtin functions diff --git a/src/Nekomata/Builtin/List.hs b/src/Nekomata/Builtin/List.hs index 866d742..78c915b 100644 --- a/src/Nekomata/Builtin/List.hs +++ b/src/Nekomata/Builtin/List.hs @@ -819,3 +819,13 @@ minValue = allValues .* minimum' maxValue :: Function maxValue = allValues .* maximum' + +elem' :: Function +elem' = binary elem'' + where + elem'' _ x (DListT ys) = liftList (elem_ x) ys + elem'' _ _ _ = Fail + elem_ :: (TryEq a) => a -> ListTry (Try a) -> Try a + elem_ _ Nil = Fail + elem_ x (Cons y ys) = + y >>= tryEq x >>= \b -> if b then Val x else ys >>= elem_ x diff --git a/src/Nekomata/CodePage.hs b/src/Nekomata/CodePage.hs index a009960..c9600db 100644 --- a/src/Nekomata/CodePage.hs +++ b/src/Nekomata/CodePage.hs @@ -22,9 +22,9 @@ codePage = ++ "ÄÅƂÇĈĎÐƊËḞĜĢĦĨĬĻ" ++ "ṀṂŇÖØƆƤṖŘŠŞŢŤŬŽƵ" ++ "Þ���������������" - ++ "äåƃƀçĉđḍɗĕƒĝïĭįṁ" - ++ "ṃɱňŋṇõɔƥŗřşŧũůžƶ" - ++ "þ���������������" + ++ "äåƃƀçĉđḍɗēĕƒĝïĭį" + ++ "ṁṃɱňŋṇõɔƥŗřşŧũůž" + ++ "ƶþ��������������" -- | Convert a character to a number. charToInt :: (Num a) => Char -> Maybe a diff --git a/test/Eval.hs b/test/Eval.hs index f1d5ec0..654344a 100644 --- a/test/Eval.hs +++ b/test/Eval.hs @@ -947,7 +947,7 @@ testEval = describe "Evaluation" $ do , ("999999", Check False) ] specEval - "R∫$Ĩ" + "R∫ē" [ ("1", Check True) , ("3", Check True) , ("6", Check True) @@ -1587,6 +1587,17 @@ testEval = describe "Evaluation" $ do , ("[1,1]", Check False) , ("[10,1]", Check False) ] + describe "q203330: Is it a brainfuck instruction?" $ do + specEval + "\"+,-.<>[]\"ē" + [ ("'+'", Check True) + , ("'#'", Check False) + , ("'<'", Check True) + , ("'>'", Check True) + , ("'.'", Check True) + , ("'P'", Check False) + , ("','", Check True) + ] describe "q203797: Generate list of numbers and their negative counterparts" $ do specEval "ïᶜ_" @@ -3346,3 +3357,66 @@ testEval = describe "Evaluation" $ do , ("\"ACWYBB\"", all_ ["ABCWY"]) , ("\"ACWYB\"", all_ ["ACWY"]) ] + describe "q268769: Can their first appearance happen together?" $ do + specEval + "ᶜ$ᵗ{iq=}s=" + [ ("\"01\" \"1\"", Check True) + , ("\"00\" \"0\"", Check False) + , ("\"01\" \"11\"", Check False) + , ("\"11\" \"11\"", Check True) + , ("\"0101\" \"1\"", Check False) + , ("\"111\" \"11\"", Check False) + ] + describe "q268918: How many Carlitz compositions are there?" $ do + specEval + "řJĉᵐz" + [ ("0", Count 1) + , ("1", Count 1) + , ("2", Count 1) + , ("3", Count 3) + , ("4", Count 4) + , ("5", Count 7) + , ("6", Count 14) + , ("7", Count 23) + , ("8", Count 39) + , ("9", Count 71) + , ("10", Count 124) + ] + describe "q269087: Counting Collinear Points" $ do + specEval + "≈đG←" + [ ("[5,10] [10,5]", all_ ["4"]) + , ("[-8,5] [0,5]", all_ ["7"]) + , ("[-3,-3] [2,2]", all_ ["4"]) + ] + describe "q269204: Divmod continuously until the remainder is 1 or 0, then get the remainder" $ do + specEval + "ʷ{Ƶþ" + [ ("4 15", all_ ["0"]) + , ("7 102", all_ ["1"]) + , ("2 20", all_ ["0"]) + , ("0 10", all_ ["0"]) + , ("1 11", all_ ["1"]) + , ("7 99", all_ ["1"]) + , ("45 45", all_ ["0"]) + , ("30 31", all_ ["1"]) + , ("7 999", all_ ["0"]) + , ("6 999", all_ ["1"]) + , ("7 88", all_ ["0"]) + , ("999 1", all_ ["1"]) + , ("7 98", all_ ["0"]) + , ("998 999", all_ ["1"]) + ] + describe "q269428: Doubleouble Talkalk" $ do + specEval + "Jtđ=" + [ ("\"SSS\"", Check True) + , ("\"SNYYY\"", Check True) + , ("\"SNYY\"", Check True) + , ("\"SNNYY\"", Check True) + , ("\"SNYNY\"", Check True) + , ("\"FALSYTESTCASES\"", Check False) + , ("\"FALSYTESTCASESXFALSYTESTCASES\"", Check False) + , ("\"FALSYTESTCASESFALSYTESTCASES\"", Check False) + , ("\"SMARTIEATIE\"", Check False) + ] \ No newline at end of file