Los caracteres kana japoneses corresponden a un solo sonido en el idioma japonés. Con la excepción de ん ( n ), cada otra kana consiste en una parte consonante y una parte vocal. Hay una ordenación natural de la kana japonesa, una especie de "orden alfabético", que generalmente se organiza en una tabla 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
Este orden se llama gojuuon , o "cincuenta sonidos", aunque algunas de las cincuenta celdas de la tabla están vacías.
El reto
La entrada será cualquiera de los kana enumerados anteriormente, con la excepción de wo . Su programa o función debe mostrar el siguiente kana en orden de lectura de izquierda a derecha, de arriba a abajo, por ejemplo:
Input Output
------------------
a -> i
i -> u
o -> ka
ke -> ko
so -> ta
ni -> nu
ya -> yu
yu -> yo
wa -> wo
wo -> (undefined behaviour)
Con la excepción de una nueva línea final opcional, no debe haber espacios en blanco iniciales o finales en la salida.
Este es el código de golf , por lo que el objetivo es minimizar el tamaño del programa, en bytes.
Notas adicionales
Para simplificar las cosas, este desafío utiliza la romanización Nihon-shiki . La romanización de Hepburn es más común, pero tiene algunos problemas que hacen que las cosas sean más molestas para el golf (por ejemplo, si se convierte en shi , hu se convierte en fu ).
Kana hacer existe para el espacios vacíos (ver japonesa SE ), pero eran bien no estándar o ya son obsoletos.
fuente
wo
transformación an
qué buclesa
.Respuestas:
Retina ,
5453 bytesPruébalo en línea.
Explicación
Wooo, mostrando aún más características de la versión 0.7.2 de hoy. :) ( El lanzamiento es anterior a este desafío en aproximadamente 7 horas).
Esta es una transliteración que reemplaza
a
coni
yu
cone
, pero solo en coincidencias dey.
. El propósito de esto es tratarya
y dar meyu
gustayi
yye
, respectivamente, para saltear las brechas.Reemplace
wa
conwe
para omitir ese espacio también.Aquí está la nueva característica. Al rotar conjuntos de caracteres, los conjuntos "de" y "a" en una transliteración suelen ser casi idénticos. Entonces ahora tenemos
o
(sin una barra invertida) para referirnos al otro conjunto, lo que nos permite deshacernos de algunas duplicaciones. El\o
justo representa un literalo
en ese caso. Entonces los dos conjuntos se expanden a:Lo extraño
a
en el segundo conjunto se ignora y las vocales se reemplazan cíclicamente como se esperaba.Esto hace lo mismo para las consonantes, pero se usa
o
en el primer conjunto (solo porque podemos ...).h
yw
necesitan escapar porque son clases de personajes. Los conjuntos expandidos son:El
.a
restringe esta operación a sílabas que terminan ena
, es decir, aquellas que se ajustan a la siguiente línea de la tabla.Finalmente, reemplazamos un solo
a
conka
, porque ese caso no puede ser manejado por la transliteración previa.fuente
Ruby, 105
Comentó en el programa de prueba
fuente
a=%w{wo wa}
."rymhntsk ".chars{|c|"oeuia".chars{|d|a<<c+d}}
aunque tengo una sospecha furtiva, podría jugar más.GNU sed, 65
Comentarios no incluidos en la puntuación:
Oy, esto está comenzando a parecerse mucho a la respuesta de Retina de @ Martin (pero más larga, por supuesto).
fuente
Pyth,
424038 bytesEsto toma el producto externo entre vocales y consonantes, y elimina elementos en los ords de cada número en
$&./0
. Luego emite el elemento después de la entrada.Pruébalo aquí .
fuente
TXR Lisp,
13512712491 bytesCorrer:
fuente
Bash + sed, 83
yi
,ye
,wi
,wu
ywe
fuente
JavaScript,
145162131118 bytesAdmítelo, no podrías imaginar una solución más ridícula para resolver este problema;)ok, hecho esto de una manera más interesante.Manifestación:
fuente
Japt,
757068 bytesPruébalo en línea!
fuente
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"]
es una lista de todos los kanas, incluidos los "agujeros". Divido la lista en la parte anterior a la entrada kana y desde la entrada kana hasta el final. De la segunda parte elijo el segundo elemento. Las excepciones en torno a los "agujeros" fueron atrapados antes por casos separados.Editar: a @xnor se le ocurrió la idea de usar lo
span
que ahorró 18 bytes.fuente
(snd$span(/=x)k)!!1
no funcionaría para la búsqueda?Perl 6, 105 bytes
Esto es lo más corto que puedo obtener en mi primer intento, podría tener otra oportunidad más tarde, pero me siento bastante bien con esto.
fuente
JavaScript (ES6), 127 bytes
Explicación
Prueba
Mostrar fragmento de código
fuente
Perl 6, 96 bytes
fuente
Python 2, 107 bytes
Espera entradas entre comillas,
'he'
por ejemplofuente
Raqueta 151 bytes
Sin golf:
Pruebas:
Salida:
Hay un mensaje de error si se envía 'wo.
fuente
C,
138135 bytesCaja de varitas
fuente