(Littéralement: "Est-ce que cela suit / réalise la forme gismu ?")
Prémisse
La langue Lojban est une langue construite , ce qui signifie en partie que tous ses mots ont été créés plutôt que autorisés à se développer naturellement. La base sémantique de Lojban est son gismu , ou mots racines, qui ont été synthétisés en combinant des racines de langues naturelles largement parlées comme le chinois, l'hindi et l'anglais. Tous les gismu font 5 lettres et suivent une certaine forme stricte.
Information
Pour nos besoins, l'alphabet lojban est:
abcdefgijklmnoprstuvxz
Autrement dit, l'alphabet romain sans hqwy
.
Cet alphabet peut être divisé en quatre catégories:
Voyelles
aeiou
Consonnes sonores
lmnr
Consonnes non vocales
ptkfcsx
. Une fois exprimés, ceux-ci deviennent respectivement le ...Consonnes voisées
bdgvjz
(aucune consonne voisée ne correspond àx
.)
Pour être un gismu valide, une chaîne de 5 caractères doit:
Soyez dans l'un des modèles de voyelles consonnantes
CVCCV
ouCCVCV
, où C représente une consonne et V représente une voyelle.Suivez les règles de correspondance des consonnes.
Règles d'appariement des consonnes pour les mots CCVCV:
Les deux premiers caractères doivent constituer l'une des 48 paires suivantes ( source ):
ml mr
pl pr
bl br
tr tc ts
dr dj dz
kl kr
gl gr
fl fr
vl vr
cl cr cm cn cp ct ck cf
jm jb jd jg jv
sl sr sm sn sp st sk sf
zm zb zd zg zv
xl xr
Notez que cela semble plutôt plus agréable lorsqu'il est séparé en paires voisées et non voisées. En particulier, chaque paire voix-voix est valide si la paire voix-non-voix correspondante est valide. Cela ne s'étend pas aux paires avec une consonne sonorante; cl
est valide mais jl
ne l'est pas.
Règles d'appariement des consonnes pour les mots CVCCV ( source ):
Les troisième et quatrième caractères doivent suivre les règles suivantes:
Il est interdit que les deux consonnes soient les mêmes [...]
Il est interdit de faire entendre une consonne et l'autre sans voix. Les consonnes «l», «m», «n» et «r» sont exemptées de cette restriction. Par conséquent, "bf" est interdit, de même que "sd", mais "fl" et "vl", ainsi que "ls" et "lz", sont autorisés.
Il est interdit de tirer les deux consonnes de l'ensemble «c», «j», «s», «z».
Les paires spécifiques «cx», «kx», «xc», «xk» et «mz» sont interdites.
Notez qu'il y a 179 paires possibles.
Défi
Déterminez si la chaîne donnée suit les règles de formation de gismu . Il s'agit de code-golf , donc la solution la plus courte en octets l'emporte.
Entrée : une chaîne de longueur 5 issue de l'alphabet Lojban.
Sortie : Une valeur véridique si la chaîne peut être un gismu et une valeur falsey sinon.
Cas de test
Valide:
gismu
cfipu
ranxi
mupno
rimge
zosxa
Invalide:
ejram
xitot
dtpno
rcare
pxuja
cetvu
Plus de cas de test: ce fichier texte contient tous les gismu valides, un par ligne.
Je ne connais pas vraiment Lojban, donc je soupçonne que la traduction du titre est fausse. L'aide est appréciée.
la source
s
etk
font partie de la langue, que la prononciation nec
dispose?j
n'est pas prononcé comme anglais J, mais plutôt comme français J (sans le plosif au début.) À partir d'une des pages liéesThe regular English pronunciation of “James”, which is [dʒɛjmz], would Lojbanize as “djeimz.”, which contains a forbidden consonant pair......[additional rule to avoid this]
, nous voyons donc que le D plosif doit être ajouté. Le non facturé la version du français J est en effet SH. Les symboles IPA (pour ceux qui les comprennent) sont sur la page wikipedia.Réponses:
Rubis,
302252 octetsQuelques octets supplémentaires pourraient être enregistrés comme suit:
Initialiser
z
à false en utilisantz=!c='[cjsztdpbfvkgxmnlr]'
. Cela fonctionne mais donne l'avertissementwarning: found = in conditional, should be ==
.Passer d'un programme à une fonction (je l'ai laissé comme programme car selon la question, le "programme" le plus court en octets gagne.)
Résumé des changements depuis le premier message
Révision majeure de regex / pièce correspondante.
La constante 72 est passée à 69, de sorte que le code ASCII le plus bas de la chaîne magique est 10 au lieu de 13. Cela permet d'utiliser une nouvelle ligne littérale dans la version golfée au lieu d'une séquence d'échappement.
La chaîne magique
'mzxcxkx'
remplace les règles arithmétiques pour les 5 caractères interdits dans la table de types CVCCV.version non golfée
ajouté des espaces et changé la nouvelle ligne dans la chaîne magique en
\n
Explication de l'appariement
Les deux caractères de la chaîne d'entrée
s[n,2]
sont comparés à la paire de caractères de la boucle d'itération. S'ils correspondent et que le modèle d'expression régulière de voyelle consonne est correct, lai,j
validité des valeurs de ligne et de colonne est vérifiée. Un ordre soigneux des consonnes aide ici.Pour CVCCV:
Pour CCVCV
Un bitmap pour chaque colonne du tableau ci-dessous est codé dans la chaîne magique, à partir de laquelle 69 est soustrait. Pour toutes les colonnes à l'exception des deux dernières, seuls 6 bits sont requis. Pour les deux derniers, les bits d'ordre supérieur doivent être 1, donc un nombre négatif est généré (caractères
\n
et:
) afin d'avoir des 1 en tête au lieu de zéros en tête. Cependant, nous ne voulons pas inclure les trois dernières lignes de la table.Au lieu de décalage des droits et AND par 1, nous modifions les droits et AND,1-j/14
ce qui correspond normalement à 1, mais à 0 pour les 3 dernières lignes.Le programme suivant (avec les mêmes expressions que la soumission) a été utilisé pour générer les tableaux ci-dessous (décommenter la
if
ligne requise pour le tableau souhaité.la source
JavaScript (ES6),
366352 octetsExplication
Renvoie un tableau contenant la dernière lettre (véridique) s'il s'agit d'un gismu valide ou
null
s'il ne l'est pas.Une grande partie de la taille provient des
CCVCV
paires codées en dur (même après les avoir condensées). Il pourrait être possible de trouver un modèle pour les générer, mais j'ai déjà passé trop de temps là-dessus! xDTester
Afficher l'extrait de code
la source
Javascript ES6, 240 octets
Je suppose que c'est mon travail maintenant.
la source