Japońskie znaki kana odpowiadają jednemu dźwiękowi w języku japońskim. Z wyjątkiem ん ( n ), każda inna kana składa się z części spółgłosek i samogłoski. Istnieje naturalna kolejność w japońskiej kanie, rodzaj „porządku alfabetycznego”, który zazwyczaj jest ułożony w tabeli 10 na 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
Ta kolejność nazywa się gojuuon lub „pięćdziesięcioma dźwiękami”, nawet jeśli niektóre z pięćdziesięciu komórek w tabeli są w rzeczywistości puste.
Wyzwanie
Wejściowy będzie dowolny z wymienionych powyżej kana, z wyjątkiem wo . Twój program lub funkcja powinna wypisać następny kana w kolejności od lewej do prawej, od góry do dołu, np .:
Input Output
------------------
a -> i
i -> u
o -> ka
ke -> ko
so -> ta
ni -> nu
ya -> yu
yu -> yo
wa -> wo
wo -> (undefined behaviour)
Z wyjątkiem opcjonalnego pojedynczego końcowego znaku nowej linii, na wyjściu nie powinno być żadnych początkowych ani końcowych białych znaków.
To jest golf golfowy , więc celem jest zminimalizowanie wielkości programu w bajtach.
Dodatkowe uwagi
Aby uprościć sprawę , w tym wyzwaniu zastosowano romanizację Nihon-shiki .Romanizacja Hepburn jest bardziej powszechna, ale ma kilka załamań, które sprawiają, że golf jest bardziej denerwujący (np. Si staje się shi , hu staje się fu ).
Kana zrobić istnieją dla pustych miejsc (patrz japoński SE ), ale były też niestandardowe lub są już nieaktualne.
źródło
wo
transformacji, don
której pętlea
.Odpowiedzi:
Retina ,
5453 bajtyWypróbuj online.
Wyjaśnienie
Wooo, pokazując jeszcze więcej funkcji z dzisiejszej wersji 0.7.2. :) ( Wydanie poprzedza to wyzwanie o około 7 godzin.)
Jest to transliteracja która zastępuje
a
sięi
iu
ze
, ale tylko w meczachy.
. Ma to na celu leczenieya
iyu
polubienieyi
orazye
, odpowiednio, pominięcie luk.Wymień
wa
sięwe
pominąć tę lukę, jak również.Oto nowa funkcja. Podczas obracania zestawów znaków „od” i „do” w transliteracji są zwykle prawie identyczne. Teraz mamy
o
(bez odwrotnego ukośnika) odniesienie do drugiego zestawu, który pozwala nam pozbyć się powielania. W tym przypadku\o
oznacza tylko literało
. Dwa zestawy rozwijają się do:Obce
a
w drugim zestawie są ignorowane, a samogłoski są wymieniane cyklicznie zgodnie z oczekiwaniami.To samo robi w przypadku spółgłosek, ale używa
o
w pierwszym zestawie (tylko dlatego, że możemy ...).h
iw
potrzebuję ucieczki, ponieważ są to klasy postaci. Rozszerzone zestawy to:W
.a
Ogranicza to operacja sylab, które kończą sięa
, to znaczy te, które owijają się do następnego wiersza tabeli.Wreszcie możemy zastąpić jeden
a
zka
, dlatego, że sprawa nie może być obsługiwane przez poprzedni transliteracji.źródło
Ruby, 105
Skomentowane w programie testowym
źródło
a=%w{wo wa}
."rymhntsk ".chars{|c|"oeuia".chars{|d|a<<c+d}}
chociaż mam podejrzenia, że można dalej grać w golfa.GNU sed, 65
Komentarze nieuwzględnione w wyniku:
Oy, zaczyna to przypominać odpowiedź Retina @ Martina (oczywiście dłuższą).
źródło
Pyth,
424038 bajtówTo przenosi iloczyn zewnętrzny między samogłosek i spółgłosek i usuwa elementy na rzędach każdej liczby w
$&./0
. Następnie wyprowadza element po wejściu.Wypróbuj tutaj .
źródło
TXR Lisp,
13512712491 bajtówBiegać:
źródło
Bash + sed, 83
yi
,ye
,wi
,wu
iwe
źródło
JavaScript,
145162131118 bajtówPrzyznaj się, nie wyobrażasz sobie bardziej śmiesznego rozwiązania tego problemu;)OK, zrobiłem to w bardziej interesujący sposób.Próbny:
źródło
Japt,
757068 bajtówWypróbuj online!
źródło
X=" kstnhmyrw"£"aiueo"mZ{X+Z} } r" |yi|ye|wiwuwe"P f"[^aiueo]?.")g1+XbU
} }
:)Haskell,
11496 bajtów[words[a,b]!!0|a<-" kstnhmyrw",b<-"aiueo"]
to lista wszystkich kanas, w tym „dziur”. Rozbijam listę na część przed wejściowym kana i od wejściowego kana do końca. Z drugiej części wybieram drugi element. Wyjątki wokół „dziur” zostały wcześniej złapane przez osobne przypadki.Edycja: @xnor wpadł na pomysł wykorzystania,
span
która pozwoliła zaoszczędzić 18 bajtów.źródło
(snd$span(/=x)k)!!1
nie zadziała podczas wyszukiwania?Perl 6, 105 bajtów
To jest tak krótkie, jak tylko mogę, za pierwszym razem, mogę mieć kolejny crack, ale czuję się z tym całkiem dobrze.
źródło
JavaScript (ES6), 127 bajtów
Wyjaśnienie
Test
Pokaż fragment kodu
źródło
Perl 6, 96 bajtów
źródło
Python 2, 107 bajtów
Oczekuje
'he'
na przykład danych wejściowych ujętych w cudzysłówźródło
Rakieta 151 bajtów
Nie golfowany:
Testowanie:
Wydajność:
Jeśli komunikat „wo” zostanie wysłany, pojawi się komunikat o błędzie.
źródło
C,
138135 bajtówWandbox
źródło