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