Contexte
Il s'agit de la première partie d'un parcours de golf à 3 trous sur le traitement de texte. L'idée générale est que si vous prenez un texte d'entrée et le dirigez à travers les solutions aux trois défis (avec une petite quantité de code de colle), il crachera un paragraphe magnifiquement formaté. Dans ce premier défi, votre tâche consiste à césurer un morceau de texte en utilisant des modèles de césure donnés.
Contribution
Votre programme doit prendre deux entrées de chaîne: un morceau de texte et une liste de modèles de césure. La première entrée est simplement une chaîne non vide de caractères et d'espaces ASCII imprimables; il ne contiendra pas de sauts de ligne ou de tildes ~
. La deuxième entrée est une liste de mots séparés par des virgules, qui se composent de syllabes délimitées par des tilde de caractères ASCII minuscules. Un exemple est ex~cel~lent,pro~gram~ming,abil~i~ties
.
Production
Votre programme doit modifier la première entrée de la manière suivante. Tout mot (sous-chaîne maximale de caractères ASCII alphabétiques) dont la version en minuscule avec trait d'union se trouve dans la deuxième entrée doit être remplacé par cette version avec trait d'union, mais sa casse doit être préservée. Avec l'exemple de liste ci-dessus, si le texte contient le mot Excellent
, il doit être remplacé par Ex~cel~lent
; cependant, neExcellently
doit pas être modifié. Votre sortie doit être cette chaîne modifiée.
Règles détaillées et notation
Vous pouvez supposer ce qui suit sur les entrées:
- La première entrée ne contient ni tildes, ni espaces de début, de fin ou répétés. Ce n'est pas vide.
- La deuxième entrée contient au moins un mot et chaque mot contient au moins deux syllabes. Chaque syllabe n'est pas vide.
- La deuxième entrée ne contient pas de mot apparaissant comme syllabe dans un autre mot.
Vous pouvez modifier l'ordre des deux entrées, si vous le souhaitez, et éventuellement ajouter une nouvelle ligne de fin à la sortie.
Vous pouvez écrire une fonction ou un programme complet. Le nombre d'octets le plus bas gagne et les failles standard sont interdites.
Cas de test
Ceux-ci sont répertoriés dans le format 1st input [newline] 2nd input [newline] output
.
Excellent programming abilities, you work excellently!
ex~cel~lent,pro~gram~ming,abil~i~ties
Ex~cel~lent pro~gram~ming abil~i~ties, you work excellently!
Superman (sometimes incorrectly spelled "Super-man") is super #&%@ing strong.
su~per,some~times,in~cor~rectly,spell~ing
Superman (some~times in~cor~rectly spelled "Su~per-man") is su~per #&%@ing strong.
IncONsISTent caPItalizATIon!
in~con~sis~tent,cap~i~tal~iza~tion
In~cON~sIS~Tent caP~I~tal~izA~TIon!
Such short words.
awk~ward
Such short words.
Digits123 are456cool789.
dig~its,dig~i~tal,are~cool
Dig~its123 are456cool789.
magic magic
ma~gic
ma~gic ma~gic
Toute erreur de césure possible dans ce défi est due à cet outil de césure .
#programming!
sera toujours affectée par une deuxième entrée de pro~gram~ming
)? Les nombres ne comptent-ils pas non plus (c'est-à-dire que seuls les caractères alphabétiques sont autorisés)?