Japanische Kana-Zeichen entsprechen einem einzelnen Ton in der japanischen Sprache. Mit Ausnahme von ん ( n ) besteht jedes zweite Kana aus einem Konsonantenteil und einem Vokalteil. Es gibt eine natürliche Reihenfolge zum japanischen Kana, eine Art "alphabetische Reihenfolge", die normalerweise in einer 10 mal 5-Tabelle angeordnet ist:
| 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
Diese Reihenfolge wird als Gojuuon oder "fünfzig Töne" bezeichnet, obwohl einige der fünfzig Zellen in der Tabelle tatsächlich leer sind.
Die Herausforderung
Die Eingabe erfolgt in einem der oben aufgeführten Kana-Werte, mit Ausnahme von wo . Ihr Programm oder Ihre Funktion sollte das nächste Kana von links nach rechts und von oben nach unten ausgeben, z.
Input Output
------------------
a -> i
i -> u
o -> ka
ke -> ko
so -> ta
ni -> nu
ya -> yu
yu -> yo
wa -> wo
wo -> (undefined behaviour)
Mit Ausnahme einer optionalen einzelnen nachgestellten Zeile sollte die Ausgabe keine führenden oder nachgestellten Leerzeichen enthalten.
Dies ist Codegolf , daher besteht das Ziel darin, die Programmgröße in Bytes zu minimieren.
Zusätzliche Bemerkungen
Um die Dinge einfach zu halten, verwendet diese Herausforderung eine Nihon-Shiki-Romanisierung . Hepburn-Romanisierung ist häufiger, hat aber ein paar Knicke, die die Sache für das Golfspiel ärgerlicher machen (z. B. Si wird Shi , Hu wird Fu ).
Kana gibt es für die leeren Stellen (siehe japanische SE ), aber sie waren entweder nicht standardisiert oder sind jetzt veraltet.
quelle
wo
transformieren,n
wozu Schleifen führena
.Antworten:
Netzhaut ,
5453 BytesProbieren Sie es online aus.
Erläuterung
Wooo, zeigt noch mehr Funktionen aus der heutigen Version 0.7.2. :) ( Die Veröffentlichung liegt ungefähr 7 Stunden vor dieser Herausforderung .)
Dies ist eine Transliteration, die
a
miti
undu
mit ersetzte
, jedoch nur in Streichhölzern vony.
. Der Zweck davon ist , zu behandelnya
undyu
dergleichenyi
undye
jeweils um die Lücken zu überspringen.Ersetzen Sie
wa
durchwe
, um diese Lücke ebenfalls zu überspringen.Hier ist die neue Funktion. Beim Drehen von Zeichensätzen sind die in einer Transliteration festgelegten Zeichen "von" und "bis" in der Regel fast identisch. Jetzt müssen wir
o
(ohne Backslash) auf die andere Menge verweisen, wodurch wir einige Duplikate entfernen können. Das\o
Gerechte stehto
in diesem Fall für ein wörtliches Wort. Die beiden Sets erweitern sich also zu:Das Fremdwort
a
im zweiten Satz wird ignoriert und die Vokale werden wie erwartet zyklisch ersetzt.Dies macht das Gleiche für die Konsonanten, aber mit
o
dem ersten Satz (nur weil wir können ...).h
undw
müssen entkommen, weil sie Zeichenklassen sind. Die erweiterten Sets sind:Das
.a
beschränkt diese Operation auf Silben, die auf endena
, dh auf solche, die in die nächste Zeile der Tabelle umgebrochen werden.Schließlich ersetzen wir eine einzelne
a
durchka
, da dieser Fall von der vorherigen Transliteration nicht behandelt werden kann.quelle
Rubin, 105
Kommentiert im Testprogramm
quelle
a=%w{wo wa}
."rymhntsk ".chars{|c|"oeuia".chars{|d|a<<c+d}}
Obwohl ich einen Verdacht habe, könnte man weiter Golf spielen.GNU sed, 65
Kommentare, die nicht in der Partitur enthalten sind:
Oy, das sieht schon sehr nach Martins Retina-Antwort aus (aber natürlich länger).
quelle
Pyth,
424038 BytesDies nimmt das äußere Produkt zwischen Vokalen und Konsonanten und entfernt Elemente bei den Ordnungen jeder Zahl in
$&./0
. Dann gibt es das Element nach der Eingabe aus.Probieren Sie es hier aus .
quelle
TXR Lisp,
13512712491 BytesLauf:
quelle
Bash + Sed, 83
yi
,ye
,wi
,wu
undwe
quelle
JavaScript,
145162131118 BytesGib es zu, du könntest dir keine lächerlichere Lösung vorstellen, um dieses Problem zu lösen;)ok, das auf eine interessantere Art und Weise gemacht.Demo:
quelle
Japt,
757068 BytesProbieren Sie es online!
quelle
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"]
ist eine Liste aller Kanas, einschließlich der "Löcher". Ich zerlege die Liste in den Teil vor dem Eingabe-Kana und vom Eingabe-Kana bis zum Ende. Aus dem 2. Teil wähle ich das zweite Element. Die Ausnahmen rund um die "Löcher" werden vorher von einzelnen Fällen aufgefangen.Edit: @xnor hatte die Idee,
span
18 Bytes zu speichern.quelle
(snd$span(/=x)k)!!1
nicht für die Suche arbeiten?Perl 6, 105 Bytes
Das ist so kurz, wie ich es auf Anhieb kriegen kann. Vielleicht habe ich später noch einen Knall, aber ich fühle mich ziemlich gut dabei.
quelle
JavaScript (ES6), 127 Byte
Erläuterung
Prüfung
Code-Snippet anzeigen
quelle
Perl 6, 96 Bytes
quelle
Python 2, 107 Bytes
Erwartet
'he'
beispielsweise in Anführungszeichen eingeschlossene Eingabenquelle
Schläger 151 Bytes
Ungolfed:
Testen:
Ausgabe:
Es wird eine Fehlermeldung ausgegeben, wenn "wo" gesendet wird.
quelle
C
138-135BytesWandbox
quelle