前書き
As you all know, German has umlauts. They’re these things:
¨
しかし、ほとんどのキーボードにはウムラウトキーがありません。しかし、ö
、ä
、ü
を
oe
、 ae
、および ue
を選択します。
チャレンジ
- あなたの仕事は
ö
、ä
、ü
を
oe
、ae
、ue
(大文字の場合も同様です)。 - あなたは、分音記号と単一文字の両方を扱わなければなりません。
(これを指摘してくれてありがとう@ETHProductions) - 基本書簡の大文字はそのままです。
-
e
の大文字と小文字は、置換後の周囲の文字の大文字に依存します。両方の大文字に隣接している場合を除いてe
として記述してください。その場合はE
として記述してください。
(行とスペースの最後は大文字ではありません) - 標準の抜け穴とI/Oルールが適用されます。
- これはコードゴルフですので、 UTF-8 バイトの最短コードが勝ちます!
入力と出力の例
事前合成された文字を使用したテストケース
ü = ue
üb = ueb
üB = ueB
Ü = Ue
Üb = Ueb
ÜB = UEB
発音区別記号を組み合わせたテストケース
ö = oe
öb = oeb
öB = oeB
Ö = Oe
Öb = Oeb
ÖB = OEB
ベストアンサー
QuadR, 112 bytes
[öäüÖÄÜ].?
.̈.?
1(819⌶⍣(2=+/M≠819⌶M))(∊'oauOAU'M)['öäüÖÄÜ'⍳⊃M]'e',⍵p↓1↓M←⍵M
置換…
[öäüüÖÄÜ]。?
任意のウムラウト文字、任意に文字
…または…
。
任意の文字と結合ウムラウト、任意にキャラクタ
…次の関数の結果:
M
の M M
に
M←
を保存してください 1↓
左から1文字を削除する
一致がウムラウト(⍵p
は0でインデックス付けされたパターン番号)の場合は、⍵p
… 'e'、
に次の文字と e を追加します:
索引を使用して(
… )[
… ]
⊃M
M atchの最初の文字
'öäüüÄÄÜ'⍳
…ウムラウト文字のリストのインデックス … into:
'oauOAU'M
は、ウムラウトされていない文字と M
atchの2要素リストです ε
e nlisted(フラット)
1(
… )
を左引数として1を指定して次の派生関数を適用します。
次の場合、819⌶⍣(
… )
casefold(大文字にすると、左の引数は1になります) 819⌶M
小文字の
M M≠
M
のアーチが大文字であるブール値
+/
2 =
2はそれに等しい
暗黙のDyalog APL関数に相当する:
'[öäüÖÄÜ].?' '.̈.?'⎕R{1(819⌶⍣(2=+/M≠819⌶M))(∊'oauOAU'M)['öäüÖÄÜ'⍳⊃M]'e',⍵.PatternNum↓1↓M←⍵.Match}