(Буквально: «Это следует / реализует форму gismu ?»)
посылка
Язык ложбан является составным языком , отчасти это означает, что все его слова были созданы, а не допущены к естественному развитию. Семантическая основа ложбана - его gismu , или коренные слова, которые были синтезированы путем объединения корней от широко распространенных естественных языков, таких как китайский, хинди и английский. Все гисму состоят из 5 букв и следуют определенной строгой форме.
Информация
Для наших целей ложбанский алфавит:
abcdefgijklmnoprstuvxz
То есть без латинского алфавита hqwy
.
Этот алфавит можно разделить на четыре категории:
Гласные
aeiou
Сонорантные согласные
lmnr
Согласные без голоса
ptkfcsx
. Когда они озвучены, они становятся соответственно ...Озвученные согласные
bdgvjz
(Никакой звонкой согласной не соответствуетx
.)
Чтобы быть действительным gismu, строка длиной 5 символов должна:
Будьте в одном из образцов согласных гласных
CVCCV
илиCCVCV
, где C представляет согласный, а V представляет гласный.Следуйте правилам соответствия согласных.
Правила соответствия согласных для слов CCVCV:
Первые два символа должны составлять одну из следующих 48 пар ( источник ):
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
Обратите внимание, что это выглядит лучше, если разделить их на голосовые и невокализованные пары. В частности, каждая вокализованная пара действительна, если действительная соответствующая невокализованная пара является действительной. Это не распространяется на пары с согласной звуковой сигнал; cl
действителен, но jl
нет.
Правила соответствия согласных для слов CVCCV ( источник ):
Третий и четвертый символы должны следовать следующим правилам:
Запрещено, чтобы обе согласные были одинаковыми [...]
Запрещено произносить одну согласную, а другую - невокализованную. Согласные «l», «m», «n» и «r» освобождены от этого ограничения. В результате «bf» запрещен, как и «sd», но разрешены как «fl», так и «vl», а также «ls» и «lz».
Запрещено извлекать обе согласные из набора «c», «j», «s», «z».
Определенные пары «cx», «kx», «xc», «xk» и «mz» запрещены.
Обратите внимание, что есть 179 возможных пар.
Вызов
Определите, соответствует ли данная строка правилам формирования гизму . Это код-гольф , поэтому выигрывает самое короткое решение в байтах.
Входные данные : строка длиной 5 из ложбанского алфавита.
Вывод : истинное значение, если строка может быть gismu и значением false, в противном случае.
Контрольные примеры
Действительно:
gismu
cfipu
ranxi
mupno
rimge
zosxa
Недействителен:
ejram
xitot
dtpno
rcare
pxuja
cetvu
Больше тестов: этот текстовый файл содержит все допустимые gismu, по одному на строку.
Я действительно не знаю ложбана, поэтому подозреваю, что перевод названия неправильный. Помощь приветствуется.
источник
s
иk
являются частью языка, какое произношениеc
имеет?j
он не произносится как английский J, а скорее как французский J (без взрывного элемента в начале). На одной из связанных страниц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]
мы видим, что необходимо добавить добавочный D. Невозвученный Версия французского J действительно SH. Символы IPA (для тех, кто их понимает) находятся на странице википедии.Ответы:
Рубин,
302252 байтаЕще несколько байтов могут быть сохранены следующим образом:
Инициализировать
z
на ложное использованиеz=!c='[cjsztdpbfvkgxmnlr]'
. Это работает, но выдает предупреждениеwarning: found = in conditional, should be ==
.Переход от программы к функции (я оставил ее как программу, потому что, в зависимости от вопроса, выигрывает самая короткая «программа» в байтах).
Сводка изменений с первого поста
Капитальный ремонт регулярного выражения / соответствующей части.
Константа 72 была изменена на 69, так что наименьший код ASCII в магической строке равен 10 вместо 13. Это позволяет использовать буквальную новую строку в версии для гольфа вместо escape-последовательности.
Волшебная струна
'mzxcxkx'
заменяет арифметические правила для 5 запрещенных символов в таблице типов CVCCV.негольфированная версия
добавил пробел и изменил символ новой строки в магической строке на
\n
Объяснение соответствия
Два символа во входной строке
s[n,2]
сравниваются с парой символов цикла итерации. Если они совпадают и шаблон регулярных выражений согласных гласных верен, значения строки и столбцаi,j
проверяются на достоверность. Тщательный порядок согласных помогает здесь.Для CVCCV:
Для CCVCV
Растровое изображение для каждого столбца таблицы ниже кодируется в магическую строку, из которой вычитается 69. Для всех столбцов, кроме двух последних, требуется только 6 битов. Для последних двух биты старшего порядка должны быть равны 1, поэтому генерируется отрицательное число (символы
\n
и:
), чтобы иметь первые 1 вместо ведущих нулей. Мы не хотим включать последние три строки таблицы, поэтому вместо правого смещения и AND на 1 мы получаем правое смещение и AND,1-j/14
которые обычно оцениваются в 1, но оцениваются в 0 для последних 3 строк.Следующая программа (с теми же выражениями, что и в представлении) использовалась для генерации таблиц ниже (раскомментируйте, какая
if
строка требуется для нужной вам таблицы.источник
JavaScript (ES6),
366352 байтаобъяснение
Возвращает массив, содержащий последнюю букву (правдивую), если это действительный gismu или
null
если это не так.Большая часть размера происходит от жестко закодированных
CCVCV
пар (даже после их сгущения). Может быть возможно найти шаблон для их генерации, но я уже потратил слишком много времени на это! XDТест
Показать фрагмент кода
источник
Javascript ES6, 240 байт
Я думаю, это моя работа сейчас.
источник