Les caractères kana japonais correspondent à un seul son dans la langue japonaise. À l'exception de ん ( n ), tous les autres kana se composent d'une partie consonne et d'une partie voyelle. Il existe un ordre naturel pour le kana japonais, une sorte d '"ordre alphabétique", qui est généralement organisé dans un tableau de 10 par 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
Cet ordre est appelé gojuuon , ou "cinquante sons", même si certaines des cinquante cellules du tableau sont en fait vides.
Le défi
L'entrée sera l'un des kana répertoriés ci-dessus, à l'exception de wo . Votre programme ou fonction doit sortir le kana suivant dans l'ordre de lecture de gauche à droite, de haut en bas, par exemple:
Input Output
------------------
a -> i
i -> u
o -> ka
ke -> ko
so -> ta
ni -> nu
ya -> yu
yu -> yo
wa -> wo
wo -> (undefined behaviour)
À l'exception d'un retour à la ligne unique facultatif, il ne doit pas y avoir d'espaces de début ou de fin dans la sortie.
Il s'agit de code-golf , donc l'objectif est de minimiser la taille du programme, en octets.
Notes complémentaires
Afin de garder les choses simples, ce défi utilise la romanisation Nihon-shiki . La romanisation de Hepburn est plus courante, mais présente quelques plis qui rendent les choses plus ennuyeuses pour le golf (par exemple, si devient shi , hu devient fu ).
Kana ne existent pour les endroits vides (voir japonais SE ), mais ils étaient soit non standard ou sont désormais obsolètes.
la source
wo
transformations versn
quelles bouclesa
.Réponses:
Rétine ,
5453 octetsEssayez-le en ligne.
Explication
Wooo, présentant encore plus de fonctionnalités de la version 0.7.2 d'aujourd'hui. :) ( La version est antérieure à ce défi d'environ 7 heures.)
Il s'agit d'une translittération qui remplace
a
pari
etu
pare
, mais uniquement dans les correspondances dey.
. Le but de cela est de traiterya
et d'yu
aimeryi
etye
, respectivement, afin de sauter les lacunes.Remplacez
wa
parwe
pour sauter cet écart également.Voici la nouvelle fonctionnalité. Lors de la rotation d'ensembles de caractères, les ensembles "de" et "à" dans une translittération sont généralement presque identiques. Alors maintenant, nous devons
o
(sans barre oblique inverse) faire référence à l'autre ensemble, ce qui nous permet de nous débarrasser de certains doublons. Le\o
juste représente un littéralo
dans ce cas. Les deux ensembles s'étendent donc à:L'étranger
a
dans le deuxième ensemble est ignoré et les voyelles sont remplacées cycliquement comme prévu.Cela fait la même chose pour les consonnes, mais en utilisant
o
dans le premier set (juste parce qu'on peut ...).h
et ontw
besoin de s'échapper car ce sont des classes de caractères. Les ensembles étendus sont:Le
.a
restreint cette opération aux syllabes se terminant para
, c'est- à -dire celles qui se terminent par la ligne suivante du tableau.Enfin, nous remplaçons un single
a
parka
, car ce cas ne peut pas être traité par la translittération précédente.la source
Rubis, 105
Commenté dans le programme de test
la source
a=%w{wo wa}
."rymhntsk ".chars{|c|"oeuia".chars{|d|a<<c+d}}
même si j'ai des soupçons furtifs, il pourrait être joué plus loin.GNU sed, 65
Commentaires non inclus dans la partition:
Oy, cela commence à ressembler beaucoup à la réponse @ Martin's Retina (mais plus longtemps, bien sûr).
la source
Pyth,
424038 octetsCela prend le produit extérieur entre les voyelles et les consonnes, et supprime les éléments aux ords de chaque nombre en
$&./0
. Ensuite, il sort l'élément après l'entrée.Essayez-le ici .
la source
TXR Lisp,
13512712491 bytesCourir:
la source
Bash + sed, 83
yi
,ye
,wi
,wu
etwe
la source
JavaScript,
145162131118 118 octetsAdmettez-le, vous ne pouviez pas imaginer une solution plus ridicule pour résoudre ce problème;)ok, faites cela d'une manière plus intéressante.Démo:
la source
Japt,
757068 octetsEssayez-le en ligne!
la source
X=" kstnhmyrw"£"aiueo"mZ{X+Z} } r" |yi|ye|wiwuwe"P f"[^aiueo]?.")g1+XbU
} }
:)Haskell,
11496 octets[words[a,b]!!0|a<-" kstnhmyrw",b<-"aiueo"]
est une liste de tous les kanas, y compris les "trous". Je décompose la liste dans la partie avant le kana d'entrée et du kana d'entrée jusqu'à la fin. Dans la 2ème partie, je choisis le deuxième élément. Les exceptions autour des «trous» ont été prises auparavant par des cas distincts.Edit: @xnor a eu l'idée d'utiliser
span
ce qui a permis d'économiser 18 octets.la source
(snd$span(/=x)k)!!1
ne fonctionnerait pas pour la recherche?Perl 6, 105 octets
C'est aussi court que possible pour la première fois, je pourrais avoir une autre fissure plus tard, mais je me sens plutôt bien à ce sujet.
la source
JavaScript (ES6), 127 octets
Explication
Tester
Afficher l'extrait de code
la source
Perl 6, 96 octets
la source
Python 2, 107 octets
Attend une entrée entre guillemets,
'he'
par exemplela source
Raquette 151 octets
Non golfé:
Essai:
Sortie:
Il y a un message d'erreur si 'wo est envoyé.
la source
C,
138135 octetsWandbox
la source