Ecco un elenco di alcune legature comuni in Unicode (quelle che potrei creare con la mia chiave Compose su 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
Sono disponibili due opzioni in questa sfida: utilizzare le legature UTF-8 effettive o utilizzare la variante solo ASCII. Se si utilizzano le varianti di legatura UTF-8 effettive, si ottiene un bonus del 20%. Se usi la variante solo ASCII, puoi presumere che le parentesi quadre non saranno mai coinvolte se non per indicare una legatura.
La sfida: data una stringa come input, genera la stessa stringa
con tutte le legature originali sostituite dalle loro controparti espanse.
- abbina avidamente:
affib
diventaaffib
(a[ffi]b
), nonaffib
(a[ff]ib
) oaffib
(af[fi]b
).
- abbina avidamente:
con tutte le sequenze di lettere "espanse" sostituite da legature.
- ad esempio,
æOEfoo
([ae]OEfoo
) diventaaeŒfoo
(ae[OE]foo
).
- ad esempio,
Fallo in modo completamente indipendente: ffi
( [ff]i
) diventa ffi
( ffi
), non ffi
( [ffi]
).
Sembra abbastanza semplice? C'è un problema: ogni volta che due non legature si sovrappongono esattamente di un carattere , entrambe le legature devono essere inserite nella stringa. Ecco alcuni casi di prova per dimostrare:
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
Fai attenzione: vale lo stesso avido abbinamento (nota soprattutto gli ultimi casi di test).
code-golf , vince il codice più breve in byte.