Wprowadzenie
Kiedy dostajesz nudny tekst, po prostu chcesz go rozwiązać tak szybko, jak to możliwe. Zobaczmy następujący tekst:
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.
Uwaga: Ten tekst ma znaki nowej linii dla czytelności, podczas gdy przypadki testowe, które musisz obsługiwać, nie mają znaków nowej linii.
Jednym ze sposobów na przeglądanie tekstu jest znalezienie pytań, które pisarz umieścił w tekście. Na przykład w powyższym tekście jest 1 pytanie. Mianowicie:
Adjuvetis hoc fortassis suspicari opportune obversari vix eam?
Można tego dokonać dzieląc tekst na zdania. Zdanie zawsze kończy się jednym z następujących symboli interpunkcyjnych: .?!
(inne nie muszą być obsługiwane). Inne symbole niż te są częścią zdania.
Zadanie
Podany wiersz składa się tylko z
- litery (A-Za-z)
- liczby (0–9)
- spacje
- interpunkcja (
,.;:?!
) (zdanie nie może zaczynać się od jednego z nich).
Wypisz pytania, które są w tekście w dowolnym rozsądnym formacie. Możesz założyć, że w tekście zawsze będzie co najmniej jedno pytanie . Wyprowadzanie końcowego i wiodącego spacji przed i po pytaniu jest dozwolone.
Ważne : Obok symbolu interpunkcyjnego nigdy nie będzie innego symbolu interpunkcyjnego (np. ??
Jest niepoprawny i nie będzie musiał być obsługiwany).
Przypadki testowe
W formacie:
Input
Output(s)
Przypadki testowe:
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?
To jest golf golfowy , więc wygrywa zgłoszenie z najmniejszą liczbą bajtów!
.?!
Innych nie wolno traktować zgodnie z twoimi regułami, ale powiedziałeś, że inni nie muszą być traktowani.Odpowiedzi:
Siatkówka,
1311 bajtówWypróbuj online!
Dzięki @MartinEnder za 2 bajty!
źródło
Python, 46 bajtów
Zadzwoń z:
wynik na testach:
inny pomysł, 77 bajtów (w python3 potrzebujesz listy wokół filtra):
Jestem nowy w tym, więc to, więc prawdopodobnie mogłoby to być znacznie krótsze.
-17 (!) Bajtów dzięki Martinowi
-2 bajty poprzez dopasowanie czegokolwiek, co nie jest „!”, „?” lub „.” (Zbliżam się do rozwiązań powłoki, ale wątpię, czy mógłbym zaoszczędzić znacznie więcej)
źródło
[\w,:; ]*
niewdzięczności (ponieważ ta grupa i tak nie może przejść obok znaku interpunkcyjnego), a następnie nie musisz też przygotowywać się.
na swój wkład. Możesz także skrócić pozostałą klasę postaci do[^.!?]
.JavaScript,
3524 bajtówZwraca wszystkie podciągi zaczynające się po a
.
,?
lub!
(lub na początku tekstu) i kończą się na a?
.źródło
V , 12 bajtów
Wypróbuj online!
Bardzo prosta odpowiedź.
Na szczęście obsługa nowego wiersza lub weryfikacja wszystkich przypadków testowych nie dodaje żadnych bajtów.
źródło
Galaretka , 16 bajtów
Wypróbuj online! lub zweryfikuj wszystkie przypadki testowe
źródło
Narzędzia Shell,
4338 bajtówDzięki rexkogitans za przycinanie 5 bajtów!
Wejście rurowe, takie jak to:
Jeśli to ważne, używam:
tr
5.3.0sed
4.2.1cmd.exe
, dostarczany z systemem Windows 5.1.2600źródło
tr ? "\n"|sed "s/.*[\.!]//;s/.\+/&?/"
zapisuje 5 bajtów (dwa dodanetr
i 7 zapisanych wsed
- przetestowano to w bash)./g
nie jest konieczne, ponieważ jest przetwarzany wiersz po wierszu.[]
; moja pierwsza próba zrobienia tego wyglądała mniej więcej tak\(\.|!\)
.Perl 5.10,
2118 bajtów (z flagą -n )Prosta realizacja pytania.
Wypróbuj tutaj!
źródło
m
wyrażenia regularnego, a wtedy będziesz w stanie usunąć odstęp międzysay
i/
Ruby 1.9, 17 bajtów
5-bajtowy program, który należy wywołać z następującymi opcjami wiersza poleceń:
źródło
Partia, 174 bajty
Odczytywanie linii ze STDIN jest bajtem krótszym niż użycie
set s=%*
.źródło
PowerShell v4 +, 43 bajty
Naprawdę proste. Pobiera dane wejściowe
$args
i przekazuje je jako pierwszy parametr do[regex]::Matches(...)
funkcji statycznej .NET . Wyrażenie, które dopasowujemy, to[^?!.]*\?
- dowolna liczba znaków nie kończących zdania, po których następuje znak zapytania. Funkcja statyczna zwraca tablicę obiektów wyszczególniającą grupę przechwytywania, indeks itp., Ale chcemy tylko.Value
s, więc powrót jest enkapsulowany w parens i nazywamy tę właściwość. Tutaj właśnie pojawia się wymóg v4 +, ponieważ we wcześniejszych wersjach trzeba zamiast tego zrobić coś w rodzaju pętli|%{$_.Value}
lub|Select Value
uzyskać odpowiednie właściwości.Przykład bez parens i
.Value
Przykład z parens i
.Value
źródło
Python 3, 91 bajtów
Zapisuje 1 bajt w Pythonie 2:
źródło