Einführung
Wenn Sie einen langweiligen Text erhalten, möchten Sie ihn nur so schnell wie möglich hinter sich bringen. Beobachten wir den folgenden Text:
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.
Hinweis: Dieser Text enthält zur besseren Lesbarkeit Zeilenumbrüche, während die zu behandelnden Testfälle keine Zeilenumbrüche enthalten.
Eine Möglichkeit, Text zu überfliegen, besteht darin, Fragen zu finden, die der Verfasser in den Text eingefügt hat. Zum Beispiel gibt es 1 Frage im obigen Text. Nämlich:
Adjuvetis hoc fortassis suspicari opportune obversari vix eam?
Dies kann durch Aufteilen des Textes in Sätze erfolgen. Ein Satz endet immer mit einem der folgenden Satzzeichen: .?!
(andere müssen nicht behandelt werden). Andere Symbole als diese sind Teil des Satzes.
Die Aufgabe
Bei einer Textzeile bestehend aus nur
- Buchstaben (A-Za-z)
- Zahlen (0-9)
- Leerzeichen
- Interpunktion (
,.;:?!
) (ein Satz kann nicht mit einer dieser beginnen).
Geben Sie die Fragen im Text in einem angemessenen Format aus. Sie können davon ausgehen, dass der Text immer mindestens 1 Frage enthält . Die Ausgabe von nachgestellten und führenden Leerzeichen vor und nach einer Frage ist zulässig.
Wichtig : Neben einem Interpunktionssymbol wird kein weiteres Interpunktionssymbol angezeigt (z. B. ??
ist ungültig und muss nicht behandelt werden).
Testfälle
Im Format:
Input
Output(s)
Die Testfälle:
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?
Das ist Code-Golf , also gewinnt die Einsendung mit der niedrigsten Anzahl von Bytes!
.?!
Andere dürfen nicht behandelt werden, wie in Ihren Regeln festgelegt, Sie haben jedoch angegeben, dass andere nicht behandelt werden müssen.Antworten:
Retina,
1311 BytesProbieren Sie es online!
Danke an @MartinEnder für 2 Bytes!
quelle
Python, 46 Bytes
Rufen Sie an mit:
Ausgabe bei Tests:
eine andere Idee, 77 Bytes (in python3 brauchst du eine Liste um Filter):
Ich bin neu darin, also könnte dies wahrscheinlich viel kürzer sein.
-17 (!) Bytes dank Martin
-2 Bytes durch Abgleichen von Elementen, die nicht "!", "?" oder "." (Ich komme den Shell-Lösungen sehr nahe, bezweifle aber, dass ich noch viel mehr sparen kann.)
quelle
[\w,:; ]*
Ungreedy machen (weil diese Gruppe ohnehin nicht an einem Interpunktionszeichen vorbeikommen kann), und dann müssen Sie.
Ihren Eingaben auch nichts voranstellen . Sie können die verbleibende Zeichenklasse auch auf kürzen[^.!?]
.JavaScript,
3524 BytesGibt alle Teilzeichenfolgen zurück, die nach a
.
,?
oder!
(oder dem Anfang des Texts) beginnen und in a enden?
.quelle
V , 12 Bytes
Probieren Sie es online!
Eine sehr einfache Antwort.
Zum Glück werden durch das Behandeln von Zeilenumbrüchen oder das Überprüfen aller Testfälle keine Bytes hinzugefügt.
quelle
Gelee , 16 Bytes
Probieren Sie es online! oder überprüfen Sie alle Testfälle
quelle
Shell-Dienstprogramme,
4338 BytesDank an rexkogitans für das Trimmen von 5 Bytes!
Pipe-Eingabe in etwa so:
Wenn es darauf ankommt, benutze ich:
tr
5.3.0sed
4.2.1cmd.exe
wird mit Windows 5.1.2600 ausgeliefertquelle
tr ? "\n"|sed "s/.*[\.!]//;s/.\+/&?/"
spart 5 Bytes (zwei hinzugefügttr
und 7 gespeichertsed
- dies wurde in Bash getestet)./g
ist nicht notwendig, da es zeilenweise abgearbeitet wird.[]
; mein erster versuch sah so aus\(\.|!\)
.Perl 5.10,
2118 Bytes (mit -n Flag)Einfache Umsetzung der Frage.
Probieren Sie es hier aus!
quelle
m
Ihres Regex loswerden , und dann können Sie das Leerzeichen zwischensay
und entfernen/
Ruby 1.9, 17 Bytes
Ein 5-Byte-Programm, das mit den folgenden Befehlszeilenoptionen aufgerufen werden muss:
quelle
Batch, 174 Bytes
Das Lesen einer Zeile aus STDIN ist ein Byte kürzer als die Verwendung
set s=%*
.quelle
PowerShell v4 +, 43 Byte
Wirklich unkompliziert. Übernimmt die Eingabe
$args
und gibt diese als ersten Parameter an eine[regex]::Matches(...)
statische .NET- Funktion weiter. Die Regex, mit der wir übereinstimmen, ist[^?!.]*\?
- das heißt, eine beliebige Anzahl von Zeichen ohne Satzende, denen ein Fragezeichen folgt. Die statische Funktion gibt ein Array von Objekten zurück, in denen angegeben ist, welche Erfassungsgruppe, welcher Index usw. vorhanden ist. Wir möchten jedoch nur das.Value
s, sodass die Rückgabe in Parens eingeschlossen ist und wir diese Eigenschaft aufrufen. Hier kommt die v4 + -Anforderung ins Spiel, da Sie in früheren Versionen stattdessen eine Schleife ausführen|%{$_.Value}
oder|Select Value
die entsprechenden Eigenschaften abrufen müssen.Beispiel ohne die Eltern und
.Value
Beispiel mit den Eltern und
.Value
quelle
Python 3, 91 Bytes
Speichert 1 Byte in Python 2:
quelle