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 depro~gram~ming
)? Les nombres ne comptent-ils pas non plus (c'est-à-dire que seuls les caractères alphabétiques sont autorisés)?Réponses:
Pip,
6054 octetsDépôt GitHub pour Pip
Prend les entrées comme arguments de ligne de commande (ce qui nécessite des guillemets autour de l'entrée 1, en supposant qu'elle contient des espaces). Aucune nouvelle ligne de fin n'est imprimée (ajoutez un
x
à la fin du programme pour en ajouter un).Assez peu golfé, avec des commentaires:
Exemple d'exécution:
la source
Rétine , 88 octets
À des fins de comptage, chaque ligne va dans un fichier séparé,
\n
est remplacée par des caractères de nouvelle ligne réels et<empty>
est un fichier vide. Pour plus de commodité, vous pouvez exécuter le code ci-dessus à partir d'un seul fichier (où se<empty>
trouve une ligne vide) si vous utilisez l'-s
indicateur d'interpréteur.la source
Javascript ES6,
117141 caractèresTester:
la source
Javascript (ES6),
173169Recherche et remplacement de regex de base
Violon
Edit: correction d'un bug pour le cas de test
magic magic
,ma~gic
la source
f("magic magic", "ma~gic")
retours"ma~gic magic"
Perl, 146
Juste une première tentative, beaucoup de choses peuvent être raccourcies - continueront demain!
la source