s←⊢⊆⍨' '≠⊢
a b c←2097144 131064 1957895
f←{(⊂⍵)∊(12↑v),(s'yi ya ye yao you yan yang yin ying yong yu yue yuan yun wu wa wo wai wei wan wang wen weng nv lv nve lve'),(,⊤(a-8)1966080 393208 1966064 2096720 1966072 1048568a a 2056184a 131048a 7288b 7280 106488b 7280b 0 1958911 73735c c 352263c 24583 1859591c,5⍴7)/,('bpmfdtnlgkhzcs',s'zh ch sh r j q x')∘.,v←'aoe',s'ai ei ao ou an ang en eng ong u ua uo uai ui uan uang un ueng i ia ie iao iu ian iang in ing iong u ue uan un'}
Essayez-le en ligne!
Golf en cours.
Non golfé
s←{⍵⊆⍨' '≠⍵}
con←s'b p m f d t n l g k h z c s zh ch sh r j q x'
vwl←s'a o e ai ei ao ou an ang en eng ong u ua uo uai ui uan uang un ueng i ia ie iao iu ian iang in ing iong u ue uan un'
tab←con∘.,vwl
bin←,⊤2097136 1966080 393208 1966064 2096720 1966072 1048568 2097144 2097144 2056184 2097144 131048 2097144 7288 131064 7280 106488 131064 7280 131064 0 1958911 73735 1957895 1957895 352263 1957895 24583 1859591 1957895 7 7 7 7 7
all←'aoe',(12↑vwl),(s'yi ya ye yao you yan yang yin ying yong yu yue yuan yun wu wa wo wai wei wan wang wen weng nv lv nve lve'),bin/,tab
f←{(⊂⍵)∊all}
Essayez-le en ligne!
La fonction d'assistance s
décompresse une chaîne délimitée par des espaces:
{⍵⊆⍨' '≠⍵} monadic function taking a string
' '≠⍵ 0s at spaces, 1s elsewhere
⍵⊆⍨ Partition (split at 0s)
Je stocke d'abord les chaînes initiales et finales possibles dans la syllabe, puis je crée un tableau tab
contenant la concaténation de chaque chaîne de la première liste avec chaque chaîne de la deuxième liste.
Ensuite, je stocke des données binaires sous forme de liste d'entiers. Certains des entiers sont répétés et peuvent donc être stockés dans des variables, ce qui permet également d'éliser certains espaces.
Chaque entier est décodé en binaire et représente une ligne du tableau. Chaque bit du nombre représente si une certaine syllabe de cette ligne est une syllabe valide, le MSB représentant la première colonne. Toutes les syllabes invalides sont supprimées du tableau.
Nous aplatissons le tableau dans une liste, ajoutons les formulaires sans consonne initiale comme cas spécial et vérifions enfin si notre entrée est dans la liste.
Autre potentiel de golf possible:
- Écrire le codage base64 ou base255
- Réorganisez les colonnes et les lignes pour réduire les nombres.
Générateur de scripts et de cas de test utile Python: essayez-le en ligne!
nar
? : P