... i prawdziwy golf dla moich znajomych z kodu.
Jest to wyzwanie oparte na rocznym komiksie XKCD, który składa się głównie z tostów (parodie pierwszego w komiksie) według wyraźnego wzoru, ale z pewnymi niewielkimi zmianami.
Twoim zadaniem jest napisanie programu (lub funkcji), który pobiera pierwszą połowę dowolnego tostu z komiksu (wszystko do włącznie friends
) jako dane wejściowe (przez stdin lub argument funkcji) i wyświetla (lub zwraca) dokładny tekst druga połowa. Nie musisz obsługiwać nieprawidłowych danych wejściowych, obowiązują standardowe luki, wygrywa najkrótszy kod w bajtach.
Przykłady
Aby pomóc tym, którzy nie chcą kopiować tostów z innych miejsc, oto wszystkie z nich, podzielone na dane wejściowe i wyjściowe.
Input: Champagne for my real friends
Output: and real pain for my sham friends!
Input: Pseudopods for my real friends
Output: and real pods for my pseudo-friends!
Input: Petticoats for my real friends
Output: and real coats for my petty friends.
Input: Loosestrife for my real friends
Output: and real strife for my loose friends!
Input: Ladybugs for my real friends
Output: and real bugs for my lady friends!
Input: Single-payer for my real friends
Output: and RealPlayer for my single friends.
Input: Tumbleweeds for my real friends
Output: and real weed for my Tumblr friends!
Input: Fauxhawks for my real friends
Output: and real hawks for my faux friends!
Input: Platonic solids for my real friends
Output: and real solids for my platonic friends!
Single-payer
(zamiastSingle-player
).Single-payer
.Odpowiedzi:
Siatkówka , 119 bajtów
Poprzednia wersja nie zarządzała poprawnie przestrzenią w „bryłach platońskich”, ta działa i jest krótsza :)
Wypróbuj online!
Przekształca to dane wejściowe w dane wyjściowe poprzez serię podstawień.
Najbardziej interesującą częścią jest ta zamiana (rodzaj golfa regularnego):
Który wykonuje prawie wszystkie zadania, dzieląc pierwsze słowo, umieszczając jego elementy we właściwych miejscach, usuwając dodatkowe spacje i budując strukturę wyników. Aby działać poprawnie w przypadku testowym „Tumbleweeds”, zależy to od wcześniejszego podstawienia „eds” -> „ed”.
Reszta składa się głównie z zastępstw, które dotyczą specjalnych przypadków. Inne interesujące części to:
To zmienia wszystko oprócz „T” (dla Tumblr) na małe litery.
To umieszcza „.” na końcu każdego zdania zawierającego słowo z „y”, kilka liter po „p” (w praktyce „drobny” i „płatnik”). Następnie umieszcza „!” na końcu wszystkich zdań kończących się na „s” (wszystkie pozostałe).
źródło
platonic
. Sugerowana poprawka: TIO (+5 bajtów)Python 2,
291269293255247 bajtówDzięki
Erik the Outgolfer
za zaoszczędzenie 22 bajtów!+24 bajty do uwzględnienia niektórych wyjść kończących się na
.
zamiast!
Proste rozwiązanie na początek. Sprawdza ósmą literę wejścia, jak zasugerowano w komentarzach, i wyszukuje odpowiednie dane wyjściowe w
słownikutablicy.Wypróbuj online!
źródło
Single-payer for my real friends
...RealPlayer
to szczególny przypadekSOGL , 143 bajty
Używa tego ciągu jako głównej części. „|” są rozdzielaczami, a „_” to symbole zastępcze, więc podział działałby poprawnie.
Przykład wprowadzania: „Bryły platońskie dla moich prawdziwych przyjaciół” Objaśnienie:
źródło
Python 3 ,
788,403,359396 bajtówOstatnia wersja
To teraz moja piąta próba. Udało mi się zmniejszyć o połowę rozmiar mojego oryginalnego programu. Zawiera teraz brakujące „-” i uważam, że jest to kompletne rozwiązanie. Nadal podejrzewam, że jest nieporęczny; ale znacznie bliżej celu. Miałem dużo pomocy . Dziękuję za wszystkie pomocne wskazówki.
Wypróbuj online!
Oryginalny post
To mój pierwszy post na temat golfa z kodem, więc z góry przepraszam za mój niezdarny program. Nie widzę, jak można stworzyć program do konwersji „szampana” na „ból”, „fikcję” przez parsowanie słów. Chciałbym jednak, aby ktoś inny to rozwiązał. Tak więc, ponieważ mój poziom umiejętności dyktuje, że mój program musi wiedzieć z góry, że „Szampan” to „ból”, „fikcja”, nie było sensu kodowanie żądania wprowadzania danych. W rezultacie zrezygnowałem z tego i byłem trochę dosłowny z moim wydrukiem. Mam nadzieję, że w porządku:)
źródło
Röda ,
299292288259 bajtów4 bajty zapisane dzięki @fergusq do użycia
,
zamiast..
wpush
instrukcjachBajty zapisane dzięki @fergusq pokazując mi drogę
indexOf
Wypróbuj online!
Tak blisko Pythona ... tak blisko ...
Twój ruch, Python.Wyjaśnienie
źródło
..
z,
.r=indexOf(a[7:8],"noarspekc")
.JavaScript (ES6),
230228221216 bajtówTest
Pokaż fragment kodu
źródło
PHP,
202220204203 bajtyźródło
Perl,
173168 bajtówUsuwając znaki nowej linii i wcięcia, staje się to 173 bajtów kodu Perl5. Bezwstydnie ukradł pierwsze wyrażenie regularne z odpowiedzi Leo na Retinę. (Mój był o kilka znaków dłużej)
Dla wersji perl5> = 5.14 można zgolić kolejne 5 bajtów za pomocą eval i nowego modyfikatora podstawienia / r regexp. Kończy się na 168 bajtów:
Wypróbuj online!
źródło
C, 367 bajtów
Nie skończyło się tak krótko, jak się wydawało.
źródło
Java 7,
585553 bajtów-32 bajtów dzięki @Zircon .
Można zdecydowanie zagrać w golfa, używając czegoś innego niż mapa ...
Wyjaśnienie:
Kod testowy:
Wypróbuj tutaj. (ideone.com jest ostatnio błędny, więc teraz używam TIO ..)
źródło
put
zamiastm.put
.C (gcc) , 311 bajtów
Jasne wzory, ale tyle wyjątków. Jednak musi istnieć lepszy sposób!
Wypróbuj online!
źródło