Défi
¡Nous allons donner des copains d'exclamation et de points d'interrogation inversés!
Étant donné un corps de texte contenant des phrases se terminant par .
, ?
ou !
, préfixe les points d'interrogation inversés,, ¿
aux phrases interrogatives (phrases se terminant par ?
) et aux points d'exclamation inversés,, ¡
à exclamatoire (phrases se terminant par !
). Les peines se terminant par .
doivent être ignorées.
Les phrases seront séparées par des espaces (espaces, tabulations et / ou sauts de ligne) et ne contiendront que des caractères alphanumériques, des virgules, des apostrophes et des espaces. Chaque phrase aura au moins un mot. Le premier mot de chaque phrase est garanti en majuscule. L'entrée peut commencer et se terminer avec n'importe quel espace.
Exemple
Contribution:
Hello there! What is your name?
My name is Ron. What's your name?
My name is Alex. Nice to meet you!
Nice to meet you to! How was your break?
It was great, I spent all my time code golfing!
What's that?
Wow, you're such a n00b! Here, let me show you.
Production:
¡Hello there! ¿What is your name?
My name is Ron. ¿What's your name?
My name is Alex. ¡Nice to meet you!
¡Nice to meet you to! ¿How was your break?
¡It was great, I spent all my time code golfing!
¿What's that?
¡Wow, you're such a n00b! Here, let me show you.
Règles
- Toutes les règles par défaut de Code Golf s'appliquent.
- Le programme avec le plus petit nombre d'octets gagne.
Bonus (17% de réduction) - Analyser plusieurs notes
Une phrase peut également se terminer par plusieurs points d'exclamation / d'interrogation. Donnez à chacun de ces points un point d'exclamation / d'interrogation inversé pour une remise supplémentaire de 17% sur votre nombre d'octets.
Exemple
Contribution:
I am a man in a can doing a dance?? Maybe...
Doing it for the views??!???!
Production:
¿¿I am a man in a can doing a dance?? Maybe...
¡¿¿¿¡¿¿Doing it for the views??!???!
Sortie incorrecte :
¿¿I am a man in a can doing a dance?? Maybe...
¿¿¡¿¿¿¡Doing it for the views??!???!
la source
Réponses:
Rétine ,
393734 octetsEssayez-le en ligne.
Explication
Cela correspond à une phrase se terminant par un point d'exclamation ou un point d'interrogation et ajoute ce caractère de ponctuation à la phrase. Maintenant, nous savons que tous les
!
ou?
qui sont immédiatement suivis d'un caractère non espace doivent être ceux que nous avons insérés, car les caractères originaux doivent être séparés du caractère suivant par un espace.Cette étape de translittération se transforme tous
!
et?
en¡
et¿
, respectivement, à condition qu'ils se trouvent dans une correspondance de\S\b
, qui s'applique uniquement à ceux que nous venons d'insérer. Remplacer les deux dans deux substitutions distinctes dans le même nombre d'octets, mais je préfère ici la sémantique d'une étape de translittération.la source
Mathematica 137 octets
Pas le plus court, mais c'était amusant à faire.
TextSentences
décompose le texte d'entrée en phrases etStringPosition
trouve les positions de début et de fin de chaque phrase dans le texte. La ponctuation à l'envers est insérée au début de chaque phrase selon les besoins.Utilisation, en supposant que le texte est entré à
t
,la source
Sed, 61 octets
Essai :
la source
-r
drapeau de (GNU) sed, vous n'avez pas besoin d'échapper à(
et)
qui devrait vous faire économiser 8. Vous devez cependant ajouter un point supplémentaire pour l'utilisation de cette option non par défaut.Javascript (ES6),
86796663 octetsNon golfé:
Usage:
Implémentera bientôt une solution de bonus.
Merci à:
@ user81655 , 86 => 79 octets
la source
i=>i.replace(/[A-Z][^.!?]*[.!?]/g,k=>(r=k.slice(-1))<'.'?'¡'+k:r>'.'?'¿'+k:k)
.
.Mathematica,
1019291 octetsla source
Python 2, 127,82 (154-17%) octets
la source
𝔼𝕊𝕄𝕚𝕟, 36 caractères / 53 octets
Try it here (Firefox only).
la source