La romanizzazione del giapponese sta convertendo il testo giapponese in caratteri latini. In questa sfida, ti verrà data una stringa di caratteri giapponesi come input e dovrai convertirli nella stringa ASCII corretta.
Cosa devi sapere
La lingua giapponese ha tre sistemi di scrittura: hiragana (quello sinuoso usato per le parole brevi), katakana (quello angolare usato per i suoni e le parole presi in prestito da altri linguaggi) e kanji (i caratteri densi originari del cinese). In questa sfida ci preoccuperemo solo degli hiragana.
Ci sono 46 personaggi nel sillabario hiragana. Ogni personaggio rappresenta una sillaba. I personaggi sono organizzati per primo suono (consonante) e secondo suono (vocale). Le colonne in ordine sono aiueo
.
: あいうえお
k: かきくけこ
s: さしすせそ
t: たちつてと
n: なにぬねの
h: はひふへほ
m: まみむめも
y: や ゆ よ
r: らりるれろ
w: わ を
N: ん
(se copi e incolli questa tabella, nota che ho usato gli spazi ideografici U + 3000 per spaziare y ew)
Quindi, per esempio, あ と め dovrebbe produrre un output di atome
. Il primo personaggio è a
, il secondo è to
e il terzo lo è me
.
eccezioni
Come ogni buona lingua, il giapponese ha delle eccezioni alle sue regole e la tabella hiragana ne ha diverse. Questi personaggi sono pronunciati in modo leggermente diverso rispetto alla loro posizione nella tabella:
し: shi
, non si
ち: chi
, non ti
つ: tsu
, non tu
ふ: fu
, nonhu
Dakuten ゛
La parola "dakuten" significa "marchio fangoso": i dakuten trasformano i suoni nei loro equivalenti espressi (di solito); ad esempio, かka
si trasforma in か ゛ga
. Un elenco completo delle modifiche:
k
→ g
s
→ z
t
→ d
h
→b
Anche le eccezioni cambiano: し ゛: ji
(o zhi
), non zi
ち ゛: ji
, non di
つ ゛: dzu
, non du
(ふ ゛ agisce come ti aspetteresti; non è un'eccezione)
Il handakuten è un carattere aggiuntivo゜ che si applica alla h
riga. Se posto dopo un personaggio, cambia il suono del personaggio in p
piuttosto che b
.
Sia il dakuten che il handakuten verranno dati come singoli personaggi. Non dovrai occuparti delle forme precomposte o dei personaggi combinati.
Piccoli personaggi
Infine, ci sono piccole versioni di alcuni dei personaggi. Modificano i personaggi che li precedono o li seguono.
ゃ ゅ ょ
Queste sono le piccole forme di ya
, yu
e yo
. Sono posizionati solo dopo i suoni nella i
colonna-; rimuovono i
e aggiungono il loro suono. Quindi, き や si trasforma in kiya
; き ゃ si trasforma in kya
.
Se posizionato dopo chi
o shi
(o le loro forme modificate), y
viene rimosso anche. し ゆ è shiyu
; し ゅ è shu
.
L'ultima cosa che dovrai affrontare è la piccola tsu
. っ raddoppia la consonante che lo segue, qualunque cosa accada; non fa nient'altro. Ad esempio, き た è kita
; き っ た è kitta
.
Riepilogo, input e output
Il tuo programma deve essere in grado di traslitterare: i 46 hiragana di base, le loro forme dakuten e handakuten e le loro combinazioni con caratteri piccoli.
Il comportamento indefinito include: piccolo ya
, yu
e yo
non dopo un carattere con i
, piccolo tsu
alla fine di una stringa, dakuten su un personaggio non interessato, handakuten su un non p
carattere e qualsiasi altra cosa non menzionata nella specifica / introduzione di cui sopra.
Puoi presumere che tutti gli input siano validi e contengano solo i caratteri giapponesi sopra menzionati.
Il caso non ha importanza in uscita; puoi anche sostituire r
con l
o solo n
con m
. L'output può avere uno spazio tra ogni sillaba o nessuno spazio.
Questo è code-golf : vince il codice più corto in byte.
Casi test
Nella specifica sono riportati molti casi di test per ogni singola parte. Alcuni casi aggiuntivi:
ひ ら か ゛ な → hiragana
か た か な → katakana
た ゛ い き ゛ ゃ く て ん さ い は ゛ ん → daigyakutensaiban
ふ ゜ ろ く ゛ ら み ん く ゛ は ゜ す ゛ る こ う と ゛ こ ゛ る ふ → puroguramingupazurucoudogorufu
か ゛ ん ほ ゛ っ て → ganbatte
Gli appunti
Non conosco molto il giapponese oltre a quello che ho scritto qui. Per favore fatemi sapere se ho commesso degli errori.
Inizialmente avevo intenzione di includere anche il katakana (quindi il mio caso di test di traslitterazione in inglese potrebbe essere leggermente più accurato), ma sarebbe troppo per una sfida di golf del codice.
I nomi Unicode includono la traslitterazione di ciascun carattere singolarmente, ma senza eccezioni. Questo può o non può esserti utile.
Grazie a squeamishossifrage per aver corretto due errori di battitura!
Mi dispiace se è troppo lungo; Ho cercato di inserire la maggior parte delle stranezze di Hiragana nella sfida, ma alcune cose (come il piccolo Hiragana solo vocale, cambiando n in m davanti ad alcune consonanti e il segno di ripetizione) hanno dovuto essere tagliate per mantenere gestibile la sfida.
Non mi dispiace per il titolo. È un capolavoro.
っし
essere sshi
o shshi
?
I'm not at all sorry for the title. It's a masterpiece.
Downvoted
きっった
?