(Wörtlich: "Folgt / realisiert dies der Gismu-Form ?")
Prämisse
Die Sprache Lojban ist eine konstruierte Sprache , was teilweise bedeutet, dass alle ihre Wörter geschaffen wurden, anstatt sich auf natürliche Weise entwickeln zu dürfen. Die semantische Basis von Lojban sind seine Gismu oder Wurzelwörter, die durch die Kombination von Wurzeln aus weit verbreiteten natürlichen Sprachen wie Chinesisch, Hindi und Englisch synthetisiert wurden . Alle Gismu sind 5 Buchstaben lang und folgen einer bestimmten strengen Form.
Information
Für unsere Zwecke lautet das Lojban-Alphabet:
abcdefgijklmnoprstuvxz
Das heißt, das römische Alphabet ohne hqwy
.
Dieses Alphabet kann in vier Kategorien unterteilt werden:
Vokale
aeiou
Sonorante Konsonanten
lmnr
Stimmlose Konsonanten
ptkfcsx
. Wenn sie geäußert werden, werden diese jeweils die ...Stimmhafte Konsonanten
bdgvjz
(Kein stimmhafter Konsonant entsprichtx
.)
Um ein gültiges Gismu zu sein, muss eine 5 Zeichen lange Zeichenfolge:
Seien Sie in einem der Konsonant-Vokal-Muster
CVCCV
oderCCVCV
, wobei C einen Konsonanten darstellt und V einen Vokal darstellt.Befolgen Sie die Konsonanten-Matching-Regeln.
Konsonantenübereinstimmungsregeln für CCVCV-Wörter:
Die ersten beiden Zeichen müssen eines der folgenden 48 Paare ( Quelle ) bilden:
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
Beachten Sie, dass dies besser aussieht, wenn Sie es in stimmhafte und stimmlose Paare aufteilen. Insbesondere ist jedes stimmhafte Paar gültig, wenn das entsprechende stimmlose Paar gültig ist. Dies gilt nicht für Paare mit einem sonoranten Konsonanten. cl
ist gültig aber jl
nicht.
Konsonantenübereinstimmungsregeln für CVCCV-Wörter ( Quelle ):
Das dritte und vierte Zeichen müssen den folgenden Regeln entsprechen:
Es ist verboten, dass beide Konsonanten gleich sind [...]
Es ist verboten, dass ein Konsonant stimmlos und der andere stimmlos ist. Die Konsonanten "l", "m", "n" und "r" sind von dieser Einschränkung ausgenommen. Infolgedessen ist "bf" und "sd" verboten, aber sowohl "fl" als auch "vl" und "ls" und "lz" sind zulässig.
Es ist verboten, beide Konsonanten aus der Menge "c", "j", "s", "z" zu ziehen.
Die spezifischen Paare "cx", "kx", "xc", "xk" und "mz" sind verboten.
Beachten Sie, dass 179 mögliche Paare vorhanden sind.
Herausforderung
Bestimmen Sie, ob die angegebene Zeichenfolge den Regeln für die Gismu- Bildung entspricht. Das ist Code-Golf , also gewinnt die kürzeste Lösung in Bytes.
Eingabe : Eine Zeichenfolge der Länge 5 aus dem Lojban-Alphabet.
Ausgabe : Ein wahrer Wert, wenn der String ein Gismu sein kann ansonsten und ein Falsey-Wert sein kann.
Testfälle
Gültig:
gismu
cfipu
ranxi
mupno
rimge
zosxa
Ungültig:
ejram
xitot
dtpno
rcare
pxuja
cetvu
Weitere Testfälle: Diese Textdatei enthält alle gültigen gismu, eine pro Zeile.
Ich kenne Lojban nicht wirklich, daher vermute ich, dass die Titelübersetzung falsch ist. Hilfe wird geschätzt.
quelle
s
und eink
Teil der Sprache sind, welche Aussprache hatc
das?j
es nicht als Englisch J ausgesprochen wird, sondern als Französisch J (ohne den Plosivstoff am Anfang). Auf einer der verlinkten Seiten sehenThe regular English pronunciation of “James”, which is [dʒɛjmz], would Lojbanize as “djeimz.”, which contains a forbidden consonant pair......[additional rule to avoid this]
wir, dass der Plosivstoff D hinzugefügt werden muss Version von Französisch J ist in der Tat SH. Die IPA-Symbole (für diejenigen, die sie verstehen) befinden sich auf der Wikipedia-Seite.Antworten:
Ruby,
302252 BytesEin paar weitere Bytes könnten wie folgt gespeichert werden:
Mit
z
auf false initialisierenz=!c='[cjsztdpbfvkgxmnlr]'
. Dies funktioniert, gibt aber die Warnungwarning: found = in conditional, should be ==
.Wechsel von einem Programm zu einer Funktion (Ich habe es als Programm verlassen, weil laut Frage das kürzeste "Programm" in Bytes gewinnt.)
Zusammenfassung der Änderungen seit dem ersten Beitrag
Generalüberholung des Regex / Matching-Teils.
Die Konstante 72 wurde in 69 geändert, sodass der niedrigste ASCII-Code in der magischen Zeichenfolge 10 statt 13 ist. Dadurch kann in der Golf-Version anstelle einer Escape-Sequenz eine wörtliche Newline verwendet werden.
Die magische Zeichenfolge
'mzxcxkx'
ersetzt die Rechenregeln für die 5 verbotenen Zeichen in der CVCCV-Typentabelle.ungolfed version
Whitespace hinzugefügt und Newline in Magic String zu a geändert
\n
Erklärung zum Matching
Die beiden Zeichen in der Eingabezeichenfolge
s[n,2]
werden mit dem Zeichenpaar der Iterationsschleife verglichen. Wenn sie übereinstimmen und das Konsonanten-Vokal-Regex-Muster korrekt ist, werden die Zeilen- und Spaltenwertei,j
auf Gültigkeit überprüft. Hier hilft eine sorgfältige Bestellung der Konsonanten.Für CVCCV:
Für CCVCV
Eine Bitmap für jede Spalte der folgenden Tabelle wird in die magische Zeichenfolge codiert, von der 69 subtrahiert werden. Für alle Spalten außer den letzten beiden sind nur 6 Bits erforderlich. Für die letzten beiden müssen die höherwertigen Bits 1 sein, daher wird eine negative Zahl (Zeichen
\n
und:
) generiert, um führende Einsen anstelle führender Nullen zu erhalten. Wir möchten jedoch nicht die letzten drei Zeilen der Tabelle einschließen. Anstatt also Rechteverschiebung und UND-Verknüpfung um 1, werden Rechteverschiebung und UND-Verknüpfung1-j/14
normalerweise zu 1 ausgewertet, die letzten drei Zeilen jedoch zu 0.Das folgende Programm (mit den gleichen Ausdrücken wie die Übermittlung) wurde verwendet, um die folgenden Tabellen zu generieren (kommentieren
if
Sie die für die gewünschte Tabelle erforderliche Zeile aus.quelle
JavaScript (ES6),
366.352ByteErläuterung
Gibt ein Array mit dem letzten Buchstaben (wahr) zurück, wenn es ein gültiges Gismu ist oder
null
nicht.Ein Großteil der Größe stammt von den fest codierten
CCVCV
Paaren (auch nach deren Verdichtung). Es könnte möglich sein, ein Muster zu finden, um sie zu generieren, aber ich habe bereits viel zu viel Zeit damit verbracht! xDPrüfung
Code-Snippet anzeigen
quelle
Javascript ES6, 240 Bytes
Ich denke, das ist jetzt meine Arbeit.
quelle