Os caracteres kana japoneses correspondem a um único som no idioma japonês. Com exceção de ん ( n ), todos os outros kana consistem em uma parte consoante e uma parte da vogal. Há uma ordem natural para o kana japonês, uma espécie de "ordem alfabética", que geralmente é organizada em uma tabela de 10 por 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
Essa ordem é chamada gojuuon , ou "cinquenta sons", mesmo que algumas das cinquenta células da tabela estejam de fato vazias.
O desafio
A entrada será qualquer um dos kana listados acima, com exceção de wo . Seu programa ou função deve produzir o próximo kana na ordem de leitura da esquerda para a direita e de cima para baixo, por exemplo:
Input Output
------------------
a -> i
i -> u
o -> ka
ke -> ko
so -> ta
ni -> nu
ya -> yu
yu -> yo
wa -> wo
wo -> (undefined behaviour)
Com exceção de uma nova linha opcional à direita, não deve haver espaço em branco à esquerda ou à esquerda na saída.
Isso é código-golfe , então o objetivo é minimizar o tamanho do programa, em bytes.
Notas Adicionais
Para manter as coisas simples, esse desafio usa a romanização de Nihon-shiki . A romanização de Hepburn é mais comum, mas tem algumas torções que tornam as coisas mais irritantes para o golfe (por exemplo, si se torna shi , hu se torna fu ).
Kana fazer existir para os espaços vazios (ver Japanese SE ), mas eles ou eram não-padrão ou são agora obsoleto.
fonte
wo
transformação paran
qual loopa
.Respostas:
Retina ,
5453 bytesExperimente online.
Explicação
Wooo, mostrando ainda mais recursos da versão 0.7.2 de hoje. :) ( O lançamento antecede esse desafio em cerca de 7 horas.)
Esta é uma transliteração que substitui
a
pori
eu
come
, mas apenas em correspondências dey.
. O objetivo disso é tratarya
eyu
gostaryi
eye
, respectivamente, a fim de eliminar as lacunas.Substitua
wa
porwe
para ignorar essa lacuna também.Aqui está o novo recurso. Ao girar conjuntos de caracteres, os "de" e "para" definidos em uma transliteração são geralmente quase idênticos. Então agora temos
o
(sem uma barra invertida) para nos referirmos ao outro conjunto, o que nos permite livrar-nos de alguma duplicação. O\o
just significa literalo
nesse caso. Portanto, os dois conjuntos se expandem para:O estranho
a
no segundo conjunto é ignorado e as vogais são substituídas ciclicamente conforme o esperado.Isso faz o mesmo com as consoantes, mas usando
o
no primeiro conjunto (apenas porque podemos ...).h
ew
precisam escapar porque são classes de personagens. Os conjuntos expandidos são:Os
.a
restringe esta operação para sílabas que terminam ema
, ou seja, aqueles que são moldados para a próxima linha da tabela.Por fim, substituímos um único
a
porka
, porque esse caso não pode ser tratado pela transliteração anterior.fonte
Ruby, 105
Comentado no programa de teste
fonte
a=%w{wo wa}
."rymhntsk ".chars{|c|"oeuia".chars{|d|a<<c+d}}
embora eu tenha uma suspeita furtiva, ele pode ser jogado ainda mais.GNU sed, 65
Comentários não incluídos na pontuação:
Oi, isso está começando a se parecer muito com a resposta Retina de Martin (mas mais longa, é claro).
fonte
Pitão,
424038 bytesIsso pega o produto externo entre vogais e consoantes e remove elementos nas ordenações de cada número em
$&./0
. Em seguida, ele gera o elemento após a entrada.Experimente aqui .
fonte
TXR Lisp,
13512712491 bytesCorre:
fonte
Bash + sed, 83
yi
,ye
,wi
,wu
ewe
fonte
JavaScript,
145162131118 bytesAdmita, você não poderia imaginar uma solução mais ridícula para resolver esse problema;)ok, fiz isso de uma maneira mais interessante.Demo:
fonte
Japt,
757068 bytesExperimente online!
fonte
X=" kstnhmyrw"£"aiueo"mZ{X+Z} } r" |yi|ye|wiwuwe"P f"[^aiueo]?.")g1+XbU
} }
:)Haskell,
11496 bytes[words[a,b]!!0|a<-" kstnhmyrw",b<-"aiueo"]
é uma lista de todos os kanas, incluindo os "buracos". Eu divido a lista na parte antes do kana de entrada e do kana de entrada até o fim. Na segunda parte, eu escolho o segundo elemento. As exceções em torno dos "buracos" já foram capturados por casos separados.Edit: @xnor surgiu com a idéia de usar o
span
que salvou 18 bytes.fonte
(snd$span(/=x)k)!!1
não funcionaria para a pesquisa?Perl 6, 105 bytes
Isso é o mais curto que posso conseguir na primeira vez, posso ter uma outra chance mais tarde, mas me sinto muito bem com isso.
fonte
JavaScript (ES6), 127 bytes
Explicação
Teste
Mostrar snippet de código
fonte
Perl 6, 96 bytes
fonte
Python 2, 107 bytes
Espera entrada entre aspas,
'he'
por exemplofonte
Raquete 151 bytes
Ungolfed:
Teste:
Saída:
Há uma mensagem de erro se 'wo for enviado.
fonte
C,
138135 bytesWandbox
fonte