Ось перелік деяких поширених лігатур у Unicode (тих, які я міг би створити за допомогою мого клавіша Compose на Debian):
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 , тому виграє найкоротший код у байтах.