La romanisation du japonais consiste à convertir du texte japonais en caractères latins. Dans ce défi, vous recevrez une chaîne de caractères japonais en entrée et vous demanderez de les convertir en chaîne ASCII correcte.
Ce que vous aurez besoin de savoir
Le japonais a trois systèmes d'écriture: hiragana (le curvy utilisé pour les mots courts), katakana (l'angle utilisé pour les sons et les mots empruntés à d'autres langues), et le kanji (les caractères denses d'origine chinoise). Dans ce défi, nous ne nous préoccuperons que de l'hiragana.
Le syllabaire hiragana comporte 46 caractères. Chaque caractère représente une syllabe. Les caractères sont organisés par premier son (consonne) et second son (voyelle). Les colonnes dans l'ordre sont aiueo
.
: あいうえお
k: かきくけこ
s: さしすせそ
t: たちつてと
n: なにぬねの
h: はひふへほ
m: まみむめも
y: や ゆ よ
r: らりるれろ
w: わ を
N: ん
(si vous copiez et collez ce tableau, notez que j'ai utilisé des espaces idéographiques U + 3000 pour espacer y et w)
Ainsi, par exemple, と め devrait produire une sortie de atome
. Le premier caractère est a
, le second est to
et le troisième estme
.
Exceptions
Comme toute bonne langue, le japonais a des exceptions à ses règles, et la table hiragana en a plusieurs. Ces caractères sont prononcés légèrement différemment que leur emplacement dans le tableau impliquerait:
: shi
, Pas si
ち: chi
, pas ti
つ: tsu
, pas tu
ふ: fu
, pashu
Dakuten
Le mot «dakuten» signifie «marque boueuse»: le dakuten transforme les sons en leurs équivalents exprimés (généralement); par exemple, かka
se transforme en かga
. Une liste complète des changements:
k
→ g
s
→ z
t
→ d
h
→b
Les exceptions changent aussi: し ゛: ji
(ou zhi
), pas zi
ち ゛: ji
, pas di
:, dzu
notdu
(゛ agit comme vous le voudriez; ce n'est pas une exception)
Le handakuten est un caractère supplémentaire qui s'applique à la h
ligne. Si placé après un caractère, il change le son du caractère p
plutôt queb
.
Le dakuten et le handakuten seront donnés individuellement. Vous n'aurez pas besoin de vous occuper des formes précomposées ni des caractères combinés.
Petits personnages
Enfin, il existe des versions réduites de certains personnages. Ils modifient les caractères qui viennent avant ou après eux.
ゅ ょ
Ce sont les petites formes de ya
, yu
et yo
. Ils sont seulement placés après les sons dans la i
colonne; ils enlèvent le i
et ajoutent leur son. Alors, や や se transforme en kiya
; ゃ se transforme enkya
.
Si placé après chi
ou shi
(ou leurs formes dakuten-ed), le y
est également supprimé. ゆ est shiyu
; ゅ estshu
.
La dernière chose à laquelle vous devez faire face est la petite tsu
. っ double la consonne qui vient après, quoi qu'il arrive; ça ne fait rien d'autre. Par exemple, est kita
; っ た estkitta
.
Résumé, entrée et sortie
Votre programme doit être capable de translittérer: les 46 hiragana de base, leurs formes dakuten et handakuten et leurs combinaisons avec des petits caractères.
Le comportement non défini inclut: petit ya
, yu
et yo
pas après un caractère avec i
, petit tsu
à la fin d'une chaîne, dakuten sur un caractère non affecté, handakuten sur un nonp
caractère et tout autre élément non mentionné dans les spécifications / introduction ci-dessus.
Vous pouvez supposer que toutes les entrées sont valides et ne contiennent que les caractères japonais mentionnés ci-dessus.
La casse n'a pas d'importance en sortie; vous pouvez également remplacer r
avec l
ou un seul n
avec m
. La sortie peut avoir un espace entre chaque syllabe ou aucun espace.
C'est code-golf : le code le plus court en octets gagne.
Cas de test
De nombreux cas de test pour chaque pièce individuelle sont donnés dans la spécification. Quelques cas supplémentaires:
か ゛ な → hiragana
た か な → katakana
ん ん ん → daigyakutensaiban
ろ → puroguramingupazurucoudogorufu
ん て → ganbatte
Remarques
Je ne connais pas beaucoup de japonais à part ce que j'ai écrit ici. S'il vous plaît laissez-moi savoir si j'ai commis des erreurs.
Au départ, je comptais aussi inclure katakana (mon cas de test de translittération en anglais pourrait être légèrement plus précis), mais ce serait trop pour un défi de golf de code.
Les noms Unicode incluent la translittération de chaque caractère individuellement, mais sans les exceptions. Cela peut ou peut ne pas vous être utile.
Merci à squeamishossifrage pour avoir corrigé deux fautes de frappe!
Je suis désolé si c'est trop long. J’ai essayé d’intégrer la plupart des bizarreries de hiragana au défi, mais certaines choses (comme une petite hiragana réservée aux voyelles, changer n en m devant certaines consonnes et la marque de répétition) ont dû être supprimées pour que le défi reste gérable.
Je ne suis pas du tout désolé pour le titre. C'est un chef d'oeuvre.
っし
être sshi
ou shshi
?
I'm not at all sorry for the title. It's a masterpiece.
Downvoted
きっった
?