以下是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
在此挑战中,您有两个选择:使用实际的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]
)。
听起来很简单?有一个陷阱:每次两个非连字恰好重叠 一个字符时,必须将两个连字都插入到字符串中。这里有一些测试用例来演示:
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有什么大不了的?如果您选择的语言无法本地处理,则只需打印0xc3 0xa6(其UTF-8编码)即可。
—
丹尼斯
如果一种语言无法完成给定的任务,请不要将该语言用于该任务。没什么大不了的。
—
Alex A.