Wiraute! (ウムラウトが嫌い!)

前書き

As you all know, German has umlauts. They’re these things:
¨

しかし、ほとんどのキーボードにはウムラウトキーがありません。しかし、öäü
oeae 、および ue を選択します。

チャレンジ

  • あなたの仕事はöäü
    oeaeue
    (大文字の場合も同様です)。
  • あなたは、分音記号と単一文字の両方を扱わなければなりません。
    (これを指摘してくれてありがとう@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

Try it
online!

置換…

[öäüüÖÄÜ]。?任意のウムラウト文字、任意に文字

…または…

任意の文字と結合ウムラウト、任意にキャラクタ

…次の関数の結果:

MM 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}

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です