以下は、Unicodeの一般的な合字のリストです (DebianのComposeキーで作成できるもの):
Orig Ascii Lig
ae [ae] æ
AE [AE] Æ
oe [oe] œ
OE [OE] Œ
ij [ij] ij
IJ [IJ] IJ
ff [ff] ff
fi [fi] fi
fl [fl] fl
ffi [ffi] ffi
ffl [ffl] ffl
この課題には2つのオプションがあります。実際のUTF-8合字を使用するか、ASCIIのみのバリアントを使用します。実際のUTF-8合字バリアントを使用すると、20%のボーナスが得られます。ASCIIのみのバリアントを使用する場合、合字を示す場合を除いて、角括弧は関係しないと想定できます。
課題:入力として文字列を与え、同じ文字列を出力する
元のすべての合字が展開された対応物に置き換えられます。
- 貪欲に一致:
affib
となりaffib
(a[ffi]b
)ではなく、affib
(a[ff]ib
)またはaffib
(af[fi]b
)。
- 貪欲に一致:
すべての「展開された」文字列が合字に置き換えられます。
- たとえば、
æOEfoo
([ae]OEfoo
)はaeŒfoo
(ae[OE]foo
)になります。
- たとえば、
:完全に独立してこれを行うffi
([ff]i
となり)ffi
(ffi
、)ではありませんffi
([ffi]
)。
簡単に聞こえますか?キャッチがあります:2つの非合字がちょうど1文字重複するたびに 、両方の合字を文字列に挿入する必要があります。以下に、いくつかのテストケースを示します。
Input Ascii-output Output
fij [fi][ij] fiij
fIJ f[IJ] fIJ * remember, capitalization matters!
fffi [ff][ffi] ffffi
fff [ff][ff] ffff
ffffi [ff][ff][ffi] ffffffi
ffffij [ff][ff][ffi][ij] ffffffiij
注意:同じ貪欲なマッチングが適用されます(特に最後のいくつかのテストケースに注意してください)。
code-golfなので、バイト単位の最短コードが優先されます。
7
@Mego大したことは何ですか?選択した言語でネイティブに処理できない場合は、UTF-8エンコーディングである0xc3 0xa6を出力します。
—
デニス
言語が特定のタスクを促進できない場合は、そのタスクにその言語を使用しないでください。それは大したことではないはずです。
—
アレックスA.