Stwórz program, który pobiera wpisane słowo i dodaje to słowo z tyłu samego siebie minus pierwszą literę, a następnie powtarza, aż znikną wszystkie litery. Na przykład cat
stałby się catatt
i hello
stałby się helloellolloloo
.
Wpisz
dowolną z 26 liter alfabetu angielskiego. Może istnieć wiele słów oddzielonych spacjami, a zmianę należy zastosować do każdego słowa.
Wyjście
Wprowadzone słowo (a), z każdym słowem umieszczonym po sobie z brakującą pierwszą literą, a następnie z brakującą drugą literą i tak dalej, dopóki nie będzie więcej liter do dodania.
Więcej przykładów:
ill eel
wyjścia illlll eelell
laser bat
wyjścia laserasersererr batatt
darth vader
wyjścia dartharthrththh vaderaderdererr
To jest kod golfowy, więc wygrywa najkrótszy kod.
Wyjaśnienie:
Możesz traktować dane wejściowe lub wyjściowe jako listę. Możesz rozdzielić słowa używając znaku nowej linii zamiast spacji. Możesz dodać końcową spację do wejścia.
1.
Zaktualizuj specyfikację o nowe limity (tablica I / O, końcowe miejsce itp.)2.
Proszę poinformować istniejące rozwiązania na wypadek, gdyby któryś z nich mógł zaoszczędzić bajty.Odpowiedzi:
Japt
-m
,63 bajtyWejście i wyjście to tablice słów.
Spróbuj
Wyjaśnienie
źródło
£
w UTF-8 nie ma dwóch bajtów?pieprzenie mózgu ,
6056 bajtówWypróbuj online!
Wymaga spacji końcowej i drukuje spację wiodącą. Oba można obejść, ale kończy się to na 112 bajtach .
Wyjaśnienie
źródło
Haskell,
3621 bajtówWypróbuj online!
Edycja: -15 bajtów, z powodu nowego formatu IO (lista słów zamiast słów oddzielonych spacją)
źródło
scanr (:) ""
jetails
.import Data.List
dodania 17 bajtów do wyniku.Perl
-p
,362523 bajtówWypróbuj online!
To jest pojedynczy regsub. Po pierwsze, pasuje do wszystkich granic słów lub znaków spacji:
Pamiętaj, że każde z tych dopasowań należy zastąpić resztą słowa:
Możemy to osiągnąć za pomocą specjalnej zmiennej
$'
, która przechowuje część łańcucha po dopasowaniu. Musimy jednak zastosować do niego zagnieżdżony regsubs/ .*//
, który usuwa wszystko poza pierwszą spacją$'
, aby pozbyć się pozostałych słów na wejściu.Dzięki @nwellnhof za 2 bajty.
źródło
[^ ]
z\S
.Python 3 , 49 bajtów
Wypróbuj online!
Wykorzystuje to fakt, że
"".split()
zwraca pustą tablicę, co działa jak sprawdzanie przypadku podstawowego w rekurencji.źródło
Galaretka , 3 bajty
Wypróbuj online!
Nie potrzebuję
K
już s, ponieważ wejście / wyjście z tablicy jest teraz dozwolone.źródło
ḊƬẎ)
(lubḊƬF)
, jeśli wolisz).APL (Dyalog),
199 bajtów{⌽∊,\⌽⍵}¨
dzięki @ H.PWiz za jogging mój mózg
Działa to, ponieważ wszystkie ciągi w APL są tablicami znaków.
TIO
źródło
JavaScript (ES6), 33 bajty
Zapisano 1 bajt dzięki @ShieruAsakoto
Format I / O: tablica słów.
Wypróbuj online!
JavaScript (ES6), 35 bajtów
Format I / O: tablica słów.
Wypróbuj online!
źródło
s=>s.replace(/\S+/g,g=s=>s&&s+g(s.slice(1)))
$'
(lub$<backtick>
).R ,
827567 bajtówWypróbuj online!
Kilka bajtów zaoszczędzonych dzięki JayCe
Oddziela dane wyjściowe od nowych linii.
sapply(...)
Ekspresji generuje wektor osnowy / kolumnę odpowiedniego podciągów wyściółkę ze""
w razie potrzeby.write
następnie drukuje elementy macierzy,y
w linii, oddzielając je""
.źródło
...substring,1:1e6,1e6)...
lub podobnegopieprzenie mózgu ,
9493 bajtyWypróbuj online!
.[-]>[.>]<[<]>
w golfa[.>]<[<]>[-]>
.Wyjaśnienie
Wypróbuj online!
Przypisanie
Do początkowego obciążenia przestrzeni wykorzystano ciągłą kolekcję Esolanga .
źródło
05AB1E , 5 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
í€ηJí
bajtowa alternatywa: (ponieważ prefiksy to wbudowane 1-bajtowe rozszerzenie zamiast 2-bajtowych sufiksów; nadal wymaga dodatkowego odwrotności - jednak na początku, jednak liczba bajtów pozostaje równa 5).Vim , 47 bajtów (38 naciśnięć klawiszy)
Zacznij od wprowadzenia jako jedynej linii w buforze Vima.
Wyjaśnienie
To umieszcza każde słowo w osobnej linii, iteruje każdą linię, a następnie łączy je wszystkie. Łamie się, jeśli słowa są dłuższe niż 99 znaków lub jeśli dane wejściowe zawierają więcej niż 99 słów.
:s/<Space>/\r/g<CR>
zamienia spacje na nowe linie (\r
)gg
ustawia kursor na początku pierwszego wierszaqa
rozpoczyna rejestrowanie makra a :yw
szarpnie resztę słowaP
umieszcza go za kursoremlx
usuwa pierwszą literę tego ostatniego słowaq
zatrzymuje rejestrowanie makra aqb
rozpoczyna rejestrowanie makra b :99@a
wykonuje makro a dziewięćdziesiąt dziewięć razy (wprowadza limit znaków)j0
ustawia kursor na początku następnego wierszaq
zatrzymuje rejestrowanie makra b99@b
wykonuje makro b dziewięćdziesiąt dziewięć razy (wprowadza limit słów)gg
ustawia kursor w pierwszym wierszu99J
łączy następujące dziewięćdziesiąt dziewięć linii ze spacjami (ponownie limit słów)Dla kolejnych 2 bajtów (2 naciśnięcia klawiszy) możesz zwiększyć limit słów do 999. Kolejne 4 bajty, 9999 itd.
źródło
Łuska ,
64 bajtów-2 bajty dzięki Jonathanowi Allanowi (przyjmuje dane jako listę)!
Wypróbuj online!
Wyjaśnienie
Pobiera dane wejściowe jako listę ciągów i odwzorowuje następującą funkcję:
źródło
Retina 0.8.2 , 15 bajtów
Wypróbuj online! Uwaga: końcowe spacje. Wyjaśnienie:
Podziel na spacje.
Dołącz sufiks do każdej litery. Te
%
środki, które możemy dostać tylko przyrostek tego sformułowania.Połącz ze spacjami.
źródło
Pepe ,
167153 bajtówWypróbuj online!
źródło
16-bitowy kod zestawu x86, 24 bajty
Wywołaj si = wskaźnik do łańcucha źródłowego, di = wskaźnik do bufora wyjściowego.
Łańcuch źródłowy wymaga zerowego bajtu, aby go zakończyć.
Kod jest taki sam w 16-, 32- lub 64-bitowym (si / di stają się albo esi / edi albo rsi / rdi).
Kod 32-bitowy jest o dwa bajty większy z powodu rozszerzonego wywołania.
Kod 64-bitowy jest wciąż o trzy bajty większy, ponieważ inc / dec rsi / rdi przyciąga prefiks (ale jeśli wiadomo, że znajdują się w 32-bitowej przestrzeni pamięci, mogą być ponownie esi / edi, aby uniknąć tej kary) .
źródło
MATL ,
1816 bajtówDane wejściowe to tablica słów. Wypróbuj online!
Wyjaśnienie
źródło
K4 / K (oK) , 9 bajtów
Rozwiązanie:
Wypróbuj online!
Wyjaśnienie:
źródło
C ++ (clang) , 174 bajty
Wypróbuj online!
To moje pierwsze zgłoszenie i nie wiedziałem, czy zwracanie ciągu zamiast drukowania jest w porządku :)
źródło
return w!=""?
może byćreturn""!=w?
.Stax , 3 bajty
Uruchom i debuguj
Wyjaśnienie:
źródło
Węgiel drzewny , 14 bajtów
Wypróbuj online! Uwaga: końcowe miejsce. Link jest do pełnej wersji kodu. Wyjaśnienie:
źródło
C (gcc) , 79 bajtów
Wypróbuj online!
źródło
Pip
-s
, 11 bajtówPobiera rozdzieloną spacją listę słów ze standardowego wejścia. Wypróbuj online!
Wyjaśnienie
źródło
Rubin , 42 bajty
Wypróbuj online!
źródło
Python 2 , 63 bajty
Wypróbuj online!
źródło
Płótno , 6 bajtów
Wypróbuj tutaj!
5 bajtów z szalonym formatem wyjściowym
źródło
C #,
11190 bajtówWypróbuj online!
Zmieniając dane wejściowe i wyjściowe na tablice, zapisałem kilka bajtów:
Wypróbuj online!
źródło
K (oK) ,
1713 bajtówWypróbuj online!
Funkcja anonimowego prefiksu; Dane wejściowe są traktowane jako lista ciągów, które z kolei są listami znaków.
Dzięki @streetster za 4 bajty.
W jaki sposób:
źródło
{|,/,\|x}'
Common Lisp , 179 bajtów
Wypróbuj online!
To moja pierwsza próba gry w golfa. Wszelkie modyfikacje są mile widziane
źródło
car
zamiastfirst
icdr
zamiastrest
do dalszego golfa swojego zgłoszenia.Lua , 70 bajtów
Wypróbuj online!
Wyjaśnienie
Argumenty w Lua są przechowywane w tabeli
arg
począwszy od indeksu 1. Operator jednoargumentowy#
zwraca rozmiar tabeli, a funkcjas:sub(a,b)
zwraca podłańcuch oparty na ciągus
ograniczonym liczbami całkowitymi,a
ab
jeśli b nie zostanie przekazane, zwróci resztę ciągu.Musiałem użyć
io.write()
zamiast,print()
aby uniknąć łamania linii, i dodałemprint()
na końcu z przeciwnego powodu.źródło