Символы японской каны соответствуют одному звуку на японском языке. За исключением ん ( n ), каждая другая кана состоит из согласной части и гласной части. Существует естественное упорядочение японской каны, своего рода «алфавитный порядок», который обычно упорядочен в таблице 10 на 5:
| a i u e o
-----------------------------
* | a i u e o
k | ka ki ku ke ko
s | sa si su se so
t | ta ti tu te to
n | na ni nu ne no
h | ha hi hu he ho
m | ma mi mu me mo
y | ya yu yo
r | ra ri ru re ro
w | wa wo
Этот порядок называется годзюон , или «пятьдесят звуков», хотя некоторые из пятидесяти ячеек в таблице фактически пусты.
Соревнование
Вход будет любой из перечисленных выше кана, за исключением wo . Ваша программа или функция должна выводить следующую кана в порядке чтения слева направо, сверху вниз, например:
Input Output
------------------
a -> i
i -> u
o -> ka
ke -> ko
so -> ta
ni -> nu
ya -> yu
yu -> yo
wa -> wo
wo -> (undefined behaviour)
За исключением необязательного одиночного завершающего символа новой строки, в выводе не должно быть начальных или конечных пробелов.
Это код-гольф , поэтому цель состоит в том, чтобы минимизировать размер программы в байтах.
Дополнительные замечания
Для простоты в этом вызове используется романизация Nihon-shiki . Романизация Хепберна более распространена, но имеет несколько изломов, которые делают вещи более раздражающими для гольфа (например, Си становится Ши , Ху становится Фу ).
Kana делать существует пустые места (см японского SE ), но они были либо нестандартными или устарели.
источник
wo
преобразование, дляn
которого выполняется циклa
.Ответы:
Retina ,
5453 байтаПопробуйте онлайн.
объяснение
Wooo, демонстрируя еще больше возможностей из сегодняшнего выпуска 0.7.2. :) ( Релиз предшествует этому испытанию примерно на 7 часов.)
Это транслитерация, которая заменяется
a
наi
иu
сe
, но только в совпаденияхy.
. Цель этого состоит в том, чтобы относитьсяya
и,yu
какyi
иye
, соответственно, чтобы пропустить пробелы.Замените
wa
на,we
чтобы пропустить этот пробел.Вот новая функция. При повороте наборов символов набор «from» и «to» в транслитерации обычно практически идентичен. Так что теперь у нас есть
o
(без обратной косой черты) ссылка на другой набор, который позволяет нам избавиться от некоторого дублирования.\o
Просто стоит за литералo
в этом случае. Таким образом, два набора расширяются до:Посторонние
a
во втором наборе игнорируются, и гласные заменяются циклически, как и ожидалось.Это делает то же самое для согласных, но используя
o
в первом наборе (только потому, что мы можем ...).h
иw
нужно убежать, потому что они являются классами персонажей. Расширенные наборы:Эта
.a
операция ограничивается толькоa
теми слогами, которые заканчиваются , т. Е. Теми, которые переносятся на следующую строку таблицы.Наконец, мы заменяем один
a
наka
, потому что этот случай не может быть обработан предыдущей транслитерацией.источник
Руби, 105
Комментарий в тестовой программе
источник
a=%w{wo wa}
."rymhntsk ".chars{|c|"oeuia".chars{|d|a<<c+d}}
, хотя у меня есть подозрения, что это может быть дальше в гольфе.GNU sed, 65
Комментарии не включены в оценку:
Ой, это начинает выглядеть как ответ Retina @ Martin (но, конечно, дольше).
источник
Pyth,
424038 байтЭто берет внешнее произведение между гласными и согласными, и удаляет элементы в порядках каждого числа в
$&./0
. Затем он выводит элемент после ввода.Попробуй это здесь .
источник
TXR Lisp,
13512712491 байтБег:
источник
Баш + Сед, 83
yi
,ye
,wi
,wu
иwe
источник
JavaScript,
145162131118 байтСогласись, ты не мог бы представить более нелепое решение для решения этой проблемы;)хорошо, сделал это более интересным способом.Демо-версия:
источник
Japt,
757068 байтПопробуйте онлайн!
источник
X=" kstnhmyrw"£"aiueo"mZ{X+Z} } r" |yi|ye|wiwuwe"P f"[^aiueo]?.")g1+XbU
} }
:)Haskell,
11496 байт[words[a,b]!!0|a<-" kstnhmyrw",b<-"aiueo"]
это список всех кан, включая "дыры". Я разбиваю список на части перед входным каном и от входного кана до конца. Из второй части я выбираю второй элемент. Исключения вокруг «дыр» уловлены ранее отдельными случаями.Редактировать: @xnor пришла в голову идея использовать
span
который сэкономил 18 байтов.источник
(snd$span(/=x)k)!!1
не работает для поиска?Perl 6, 105 байт
Это так коротко, как я могу сделать это с первого раза, у меня может быть еще один треск позже, но я чувствую себя довольно хорошо по этому поводу.
источник
JavaScript (ES6), 127 байт
объяснение
Тестовое задание
Показать фрагмент кода
источник
Perl 6, 96 байт
источник
Python 2, 107 байт
Ожидается ввод, заключенный в кавычки,
'he'
напримеристочник
Ракетка 151 байт
Ungolfed:
Тестирование:
Выход:
Если 'wo отправлено, появляется сообщение об ошибке.
источник
C
138135 байтовWandbox
источник