introduction
Lorsque vous recevez un texte ennuyeux, vous voulez simplement le terminer le plus rapidement possible. Observons le texte suivant:
Ens colligi timenda etc priorem judicem. De quascunque ii at contingere
repugnaret explicetur intellectu. Adjuvetis hoc fortassis suspicari opportune
obversari vix eam? Dei praemia prudens hominum iii constet requiri haberem. Ima
sane nemo modi fuit lus pro dem haud. Vestro age negare tactum hoc cui lor. Ne et
ut quod id soli soni deus. At constare innumera is occurret ea. Nia calebat seu
acquiro fraudem effingo dicimus.
Remarque: ce texte contient des retours à la ligne pour plus de lisibilité, tandis que les cas de test que vous devez gérer n'ont pas de caractères de retour à la ligne.
Une façon de parcourir le texte est de trouver des questions que l'auteur a posées dans le texte. Par exemple, il y a 1 question dans le texte ci-dessus. À savoir:
Adjuvetis hoc fortassis suspicari opportune obversari vix eam?
Cela peut être fait en divisant le texte en phrases. Une phrase se terminera toujours par l'un des symboles de ponctuation suivants: .?!
(les autres ne doivent pas être traités). D'autres symboles que ceux-ci font partie de la phrase.
La tâche
Étant donné une ligne de texte composée uniquement de
- lettres (A-Za-z)
- nombres (0-9)
- les espaces
- ponctuation (
,.;:?!
) (une phrase ne peut pas commencer par l'une d'entre elles).
Affichez les questions contenues dans le texte dans un format raisonnable. Vous pouvez supposer que le texte aura toujours au moins 1 question . Sortie arrière et menant des espaces avant et après une question est autorisée.
Important : à côté d'un symbole de ponctuation , il n'y aura jamais d' autre symbole de ponctuation (par exemple, il ??
n'est pas valide et il ne sera pas nécessaire de le gérer).
Cas de test
Au format:
Input
Output(s)
Les cas de test:
Huh? I haven't heard what you just said. Could you repeat that please?
Huh?
Could you repeat that please?
plz can i haz cheesburgr? i am cat pls.
plz can i haz cheesburgr?
This is a badly formatted question.Can u please help me,or my friends,with formatting this question ?thankyou.
Can u please help me,or my friends,with formatting this question ?
a.b.c.d?
d?
Does this question have a question mark? yes
Does this question have a question mark?
Why example.com resolves to 127.0.0.1 in 99.9 percent of cases?
9 percent of cases?
A? b? c? d!
A?
b?
c?
C'est du code-golf , donc la soumission avec le plus petit nombre d'octets gagne!
.?!
D'autres ne doivent pas être traités, comme vos règles le précisent, mais vous avez dit que d'autres ne doivent pas être traités.Réponses:
Rétine,
1311 octetsEssayez-le en ligne!
Merci à @MartinEnder pour 2 octets!
la source
Python, 46 octets
Appeler avec:
sortie sur les tests:
une autre idée, 77 octets (en python3 vous auriez besoin d'une liste autour du filtre):
Je suis nouveau dans ce domaine, donc cela pourrait donc être beaucoup plus court.
-17 (!) Octets grâce à Martin
-2 octets en faisant correspondre tout ce qui n'est pas "!", "?" ou "." (Se rapprocher des solutions shell, mais je doute que je pourrais économiser beaucoup plus)
la source
[\w,:; ]*
punitif (parce que ce groupe ne peut pas dépasser un caractère de ponctuation de toute façon), et alors vous n'avez pas non plus besoin de faire précéder.
votre entrée. Vous pouvez également raccourcir la classe de personnage restante à[^.!?]
.JavaScript,
3524 octetsRenvoie tous les sous - chaînes qui commencent après
.
,?
ou!
(ou le début du texte) et à la fin dans un?
.la source
V , 12 octets
Essayez-le en ligne!
Une réponse très simple.
Heureusement, la gestion des nouvelles lignes ou la vérification de tous les cas de test n'ajoute aucun octet.
la source
Gelée , 16 octets
Essayez-le en ligne! ou vérifier tous les cas de test
la source
Utilitaires Shell,
4338 octetsMerci à rexkogitans pour avoir coupé 5 octets!
Entrée de tuyau, comme ceci:
Si cela compte, j'utilise:
tr
5.3.0sed
4.2.1cmd.exe
, livré avec Windows 5.1.2600la source
tr ? "\n"|sed "s/.*[\.!]//;s/.\+/&?/"
enregistre 5 octets (deux ajoutéstr
et 7 enregistréssed
- cela a été testé en bash)./g
n'est pas nécessaire, car il est traité ligne par ligne.[]
; ma première tentative de faire ça ressemblait à quelque chose\(\.|!\)
.Perl 5.10,
2118 octets (avec le drapeau -n )Mise en œuvre simple de la question.
Essayez-le ici!
la source
m
de votre expression régulière, puis vous pourrez supprimer l'espace entresay
et/
Ruby 1.9, 17 octets
Un programme de 5 octets qui doit être appelé avec les options de ligne de commande suivantes:
la source
Lot, 174 octets
La lecture d'une ligne depuis STDIN est un octet plus court que l'utilisation
set s=%*
.la source
PowerShell v4 +, 43 octets
Vraiment simple. Prend les entrées
$args
et les alimente en tant que premier paramètre d'une[regex]::Matches(...)
fonction statique .NET . Le regex que nous faisons correspondre est[^?!.]*\?
- c'est-à-dire, n'importe quel nombre de caractères non-fin de phrase qui sont suivis d'un point d'interrogation. La fonction statique renvoie un tableau d'objets détaillant le groupe de capture, l'index, etc., mais nous voulons uniquement.Value
s, donc le retour est encapsulé en parens et nous appelons cette propriété. C'est là que l'exigence v4 + entre en jeu, car dans les versions précédentes, vous devriez plutôt faire quelque chose comme une boucle|%{$_.Value}
ou|Select Value
obtenir les propriétés appropriées.Exemple sans les parens et
.Value
Exemple avec les parens et
.Value
la source
Python 3, 91 octets
Enregistre 1 octet en Python 2:
la source