(Dosłownie: „Czy to następuje / realizuje formę gismu ?”)
Przesłanka
Język Lojban jest językiem skonstruowanym , co oznacza po części, że wszystkie jego słowa zostały stworzone, a nie rozwinięte w sposób naturalny. Podstawą semantyczną Lojban są gismu , czyli słowa rdzeniowe , które zostały zsyntetyzowane poprzez połączenie rdzeni z powszechnie używanych języków naturalnych, takich jak chiński, hindi i angielski. Wszystkie gismu mają 5 liter i mają ściśle określoną formę.
Informacja
Dla naszych celów alfabet Lojban to:
abcdefgijklmnoprstuvxz
Oznacza to, że alfabet rzymski bez hqwy
.
Ten alfabet można podzielić na cztery kategorie:
Samogłoski
aeiou
Spółgłoski Sonorant
lmnr
Bezdźwięczne spółgłosek
ptkfcsx
. Po wypowiedzeniu stają się odpowiednio ...Spółgłoski dźwięczne
bdgvjz
(żadna spółgłoska dźwięczna nie odpowiadax
.)
Aby być prawidłowym gismu, ciąg o długości 5 znaków musi:
Być w jednym ze wzorów spółgłosek-samogłoski
CVCCV
lubCCVCV
, gdzie C oznacza spółgłoskę, a V oznacza samogłoskę.Przestrzegaj reguł dopasowywania spółgłoski.
Reguły dopasowania spójnego dla słów CCVCV:
Pierwsze dwa znaki muszą stanowić jedną z następujących 48 par ( źródło ):
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
Zauważ, że wygląda to ładniej, gdy jest podzielone na pary dźwięczne i bezdźwięczne. W szczególności każda para z dźwięcznym dźwiękiem jest ważna, jeśli odpowiednia para bezdźwięcznie bezdźwięczna jest ważna. Nie obejmuje to par ze spółgłoską sonorancką; cl
jest ważny, ale jl
nie jest.
Reguły dopasowania spójnego dla słów CVCCV ( źródło ):
Trzeci i czwarty znak muszą przestrzegać następujących zasad:
Obie spółgłoski są takie same [...]
Zabrania się wyrażania jednej spółgłoski, a drugiej bezdźwięczności. Spółgłoski „l”, „m”, „n” i „r” są wyłączone z tego ograniczenia. W rezultacie „bf” jest zabronione, podobnie jak „sd”, ale dozwolone są zarówno „fl”, jak i „vl” oraz zarówno „ls”, jak i „lz”.
Zabrania się rysowania obu spółgłosek ze zbioru „c”, „j”, „s”, „z”.
Określone pary „cx”, „kx”, „xc”, „xk” i „mz” są zabronione.
Pamiętaj, że istnieje 179 możliwych par.
Wyzwanie
Ustal, czy podany ciąg znaków jest zgodny z regułami formowania gismu . To jest golf golfowy , więc wygrywa najkrótsze rozwiązanie w bajtach.
Dane wejściowe : ciąg o długości 5 z alfabetu Lojban.
Wyjście : prawdziwa wartość, jeśli łańcuch może być gismu, w przeciwnym razie wartość falsey.
Przypadki testowe
Ważny:
gismu
cfipu
ranxi
mupno
rimge
zosxa
Nieważny:
ejram
xitot
dtpno
rcare
pxuja
cetvu
Więcej przypadków testowych: ten plik tekstowy zawiera wszystkie prawidłowe gismu, po jednym w wierszu.
Tak naprawdę nie znam Lojbana, więc podejrzewam, że tłumaczenie tytułu jest nieprawidłowe. Pomoc jest doceniana.
źródło
s
ik
są częścią języka, co wymowa niec
ma?j
nie jest wymawiane jako angielski J, ale raczej jako francuski J (bez plosive na początku.) Z jednej z połączonych stron,The regular English pronunciation of “James”, which is [dʒɛjmz], would Lojbanize as “djeimz.”, which contains a forbidden consonant pair......[additional rule to avoid this]
więc widzimy, że plosive D należy dodać. wersja francuskiego J jest rzeczywiście SH. Symbole IPA (dla tych, którzy je rozumieją) znajdują się na stronie wikipedii.Odpowiedzi:
Rubinowy,
302252 bajtówKilka dodatkowych bajtów można zapisać w następujący sposób:
Zainicjuj
z
na false, używającz=!c='[cjsztdpbfvkgxmnlr]'
. To działa, ale daje ostrzeżeniewarning: found = in conditional, should be ==
.Zmień program na funkcję (zostawiłem go jako program, ponieważ zgodnie z pytaniem wygrywa najkrótszy „program” w bajtach).
Podsumowanie zmian od pierwszego postu
Poważny przegląd części regularnej / dopasowania.
Stała 72 została zmieniona na 69, tak że najniższy kod ASCII w magicznym ciągu znaków to 10 zamiast 13. To pozwala na użycie dosłownego nowego wiersza w wersji golfowej zamiast sekwencji ucieczki.
'mzxcxkx'
Liczby magiczne zastępują reguły arytmetyczne dla 5 zabronionych znaków w tabeli typów CVCCV.wersja bez golfa
dodano biały znak i zmieniono znak nowej linii w magicznym ciągu znaków na
\n
Objaśnienie dopasowania
Dwa znaki w ciągu wejściowym
s[n,2]
są porównywane z parą znaków pętli iteracyjnej. Jeśli są zgodne, a wzór wyrażenia regularnego spółgłosek-samogłosek jest poprawny, wartości wiersza i kolumnyi,j
są sprawdzane pod kątem ważności. Pomaga w tym staranne uporządkowanie spółgłosek.W przypadku CVCCV:
Dla CCVCV
Bitmapa dla każdej kolumny poniższej tabeli jest zakodowana w magicznym ciągu, z którego odejmuje się 69. Dla wszystkich kolumn oprócz dwóch ostatnich wymagane jest tylko 6 bitów. Dla ostatnich dwóch bitów wyższego rzędu musi być 1, więc generowana jest liczba ujemna (znaki
\n
i:
), aby mieć wiodące 1 zamiast wiodących zer. Nie chcemy jednak uwzględniać ostatnich trzech wierszy tabeli, więc zamiast przesunięcia w prawo i AND przez 1, przesuwamy w prawo i ORAZ, przez1-j/14
co normalnie jest to 1, ale w przypadku ostatnich 3 wierszy jest to 0.Poniższy program (z tymi samymi wyrażeniami, co przesłanie) został użyty do wygenerowania poniższych tabel (odkomentuj którykolwiek
if
wiersz jest wymagany dla tabeli, którą chcesz.źródło
JavaScript (ES6),
366352 bajtówWyjaśnienie
Zwraca tablicę zawierającą ostatnią literę (prawdę), jeśli jest to poprawny gismu lub
null
jeśli nie jest.Wiele rozmiarów pochodzi z zakodowanych
CCVCV
par (nawet po ich kondensacji). Możliwe, że uda się znaleźć wzór do ich wygenerowania, ale spędziłem już na tym zbyt dużo czasu! xDTest
Pokaż fragment kodu
źródło
JavaScript ES6, 240 bajtów
Myślę, że to teraz moja praca.
źródło