Wyzwanie
¡Odwrócimy kumpli wykrzykniki i znaki zapytania!
Biorąc pod uwagę tekst zawierający zdania kończące się na .
, ?
lub !
poprzedzające odwrócone znaki zapytania, na pytania pytające ¿
(zdania kończące się na ?
) i odwrócone wykrzykniki ¡
, na wykrzyknik (zdania kończące się na !
). Zdania kończące się na .
są ignorowane.
Zdania będą oddzielone spacjami (spacje, tabulatory i / lub znaki nowej linii) i będą zawierać tylko znaki alfanumeryczne, przecinki, apostrofy i spacje. Każde zdanie będzie zawierało co najmniej jedno słowo. Pierwsze słowo każdego zdania gwarantuje wielkie litery. Wprowadzanie danych może rozpoczynać się i kończyć dowolną spacją.
Przykład
Wejście:
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.
Wynik:
¡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.
Zasady
- Obowiązują wszystkie domyślne reguły Code Golf.
- Program z najmniejszą ilością bajtów wygrywa.
Bonus (17% zniżki) - Analizuj wiele znaków
Zdanie może również kończyć się wieloma wykrzyknikami / znakami zapytania. Daj każdemu z tych znaków odwrotny wykrzyknik / znak zapytania za dodatkowe 17% zniżki na liczbę bajtów.
Przykład
Wejście:
I am a man in a can doing a dance?? Maybe...
Doing it for the views??!???!
Wynik:
¿¿I am a man in a can doing a dance?? Maybe...
¡¿¿¿¡¿¿Doing it for the views??!???!
Niepoprawna wydajność:
¿¿I am a man in a can doing a dance?? Maybe...
¿¿¡¿¿¿¡Doing it for the views??!???!
źródło
Odpowiedzi:
Retina ,
393734 bajtówWypróbuj online.
Wyjaśnienie
Dopasowuje zdanie kończące się wykrzyknikiem lub znakiem zapytania i dołącza do niego ten znak interpunkcyjny. Teraz wiemy, że wszystkie
!
lub?
które są następnie natychmiast ma charakteru przestrzeni muszą być te my włożona, ponieważ oryginalne powinny być oddzielone od następnego znaku spacją.Ten etap transliteracji zamienia wszystko
!
i?
na¡
i¿
, odpowiednio, o ile są one znaleźć w meczu\S\b
, który ma zastosowanie tylko do tych, które po prostu włożone. Zamieniając oba na dwa oddzielne podstawienia w tej samej liczbie bajtów, ale wolę tutaj semantykę etapu transliteracji.źródło
Mathematica 137 bajtów
Nie najkrótszy, ale było fajnie.
TextSentences
dzieli tekst wejściowy na zdania iStringPosition
znajduje pozycję początkową i końcową każdego zdania w tekście. Interpunkcja do góry nogami jest wstawiana na początku każdego zdania zgodnie z wymaganiami.Zastosowanie, przy założeniu, że tekst jest wprowadzany w
t
,źródło
Sed, 61 bajtów
Testowe uruchomienie :
źródło
-r
flagi do (GNU) sed, nie musisz uciekać od,(
a to)
powinno cię uratować 8. Musisz jednak dodać dodatkowy punkt, aby skorzystać z tej domyślnej opcji.JavaScript (ES6),
86796663 bajtówNie golfowany:
Stosowanie:
Wkrótce wprowadzi rozwiązanie premiowe.
Dzięki:
@ user81655 , 86 => 79 bajtów
źródło
i=>i.replace(/[A-Z][^.!?]*[.!?]/g,k=>(r=k.slice(-1))<'.'?'¡'+k:r>'.'?'¿'+k:k)
.
.Mathematica,
1019291 bajtówźródło
Python 2, 127,82 (154-17%) bajtów
źródło
𝔼𝕊𝕄𝕚𝕟, 36 znaków / 53 bajty
Try it here (Firefox only).
źródło