Biorąc pod uwagę listę lub łańcuch rozdzielany, wypisz listę lub łańcuch rozdzielany z pierwszym znakiem każdego słowa o jedno słowo później.
W przypadku tego wyzwania „słowo” składa się tylko ze wszystkich drukowalnych znaków ASCII, z wyjątkiem spacji, nowego wiersza i tabulacji.
Weźmy na przykład ciąg „Dzień dobry, świecie!” (rozdzielane spacjami):
1. String
"Good afternoon, World!"
2. Get the first characters:
"[G]ood [a]fternoon, [W]orld!"
3. Move the characters over. The character at the end gets moved to the beginning.
"[W]ood [G]fternoon, [a]orld!"
4. Final string
"Wood Gfternoon, aorld!"
To jest golf golfowy , więc wygrywa najkrótszy kod!
Przypadki testowe:
Input -> output (space-delimited)
"Good afternoon, World!" -> "Wood Gfternoon, aorld!"
"This is a long sentence." -> "shis Ts i aong lentence."
"Programming Puzzles and Code Golf" -> Grogramming Puzzles Pnd aode Colf"
"Input -> output" -> "onput I> -utput"
"The quick brown fox jumped over the lazy dog." -> "dhe Tuick qrown box fumped jver ohe tazy log."
"good green grass grows." -> "good green grass grows."
Odpowiedzi:
05AB1E ,
76 bajtówWyjaśnienie:
Wypróbuj online!
źródło
Japt ,
111098 bajtówKorzysta z owijania indeksów Japt i indeksowania ujemnego.
Wypróbuj online
Wyjaśnienie
źródło
¸
h
było dobrym pomysłem. Wymyśliłem,£g´Y ¯1 +XÅ
która może stać się X XHUg'Y using1 przy użyciu twojej techniki.Haskell , 43 bajty
Wypróbuj online! Używa listy ciągów wejściowych i wyjściowych.
Zapamiętuje pierwszą literę poprzedniego słowa
p
i rekurencyjnie czyni ją pierwszą literą bieżącego słowa podczas wysyłania nowej pierwszej litery w dół łańcucha. Poprzednia pierwsza litera jest inicjowana jako pierwsza litera ostatniego słowa.źródło
Rubinowy,
857763 bajtówJestem pewien, że może to być znacznie krótsze.
Edycja: Dzięki za @manatwork za kolekcję -> mapę
źródło
.collect
i.each
z.map
.-p
flag (+1 bajt) ii=-2;gsub(r=/\b\w/){$_.scan(r)[i+=1]}
dla ostatecznego golfaGalaretka , 6 bajtów
Wypróbuj online!
Dzięki Dennisowi za przeczytanie zasad lepiej niż ja, to zwraca listę słów. Nie działa jako pełny program.
źródło
CJam ,
12109 bajtówZaoszczędzono 1 bajt dzięki jimmy23013
Pobiera dane wejściowe jako listę słów.
Wypróbuj online!
Wyjaśnienie
źródło
)o
dla1m>
.V , 7 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
JavaScript (ES6), 46 bajtów
Wykorzystuje fakt, że
slice(-1)
zwraca ostatni element tablicy.Skrawek
Pokaż fragment kodu
źródło
Vim,
16, 9 bajtów7 bajtów zapisanych dzięki @Wossname!
Wymaga wprowadzenia jednego słowa w wierszu, np
Uważam, że powinno to być w porządku, ponieważ przyjmowanie danych jako listy jest dozwolone.
Wypróbuj online!
źródło
^vGdjPGd$ggP
(gdzie ^ v to kombinacja klawiszy [control + v], po prostu zacznij od kursora w lewym górnym rogu idd -> D
,gg -> }
) Dzięki za wskazówkę!> <> ,
4445 bajtówZakłada słowa oddzielone spacją.
Korekta Aarona dodała 1 bajt
źródło
Python 2, 74 bajty
Wypróbuj online
-5 bajtów, dzięki @Rod
źródło
S[:-1]
można skrócić doS
; kompresowanie list o różnych długościach automatycznie obcinane jest w zależności od tego, który jest dłuższyHaskell , 50 bajtów
Dane wejściowe i wyjściowe są jak listy słów.
źródło
f=
.PHP, 62 bajty
źródło
C #,
7877 bajtówKompiluje do wersji
Func<List<string>, IEnumerable<string>>
pełnej / sformatowanej:źródło
Brachylog , 12 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
R,
7270 bajtówfunction(x)paste0(substr(x,1,1)[c(y<-length(x),2:y-1)],substring(x,2))
Wypróbuj online
2 bajty zapisane dzięki Giuseppe.
Dane wejściowe i wyjściowe są listami. Pobiera podciąg składający się z pierwszych liter, przesuwa cyklicznie ostatnią do przodu i wkleja razem z podłańcem reszty każdego słowa. Krok na rowerze jest zabójcą, ale nie mogę znaleźć sposobu, aby go zmniejszyć.
źródło
2:y-1
zamiast tego,1:(y-1)
ponieważ:
ma pierwszeństwo przed tym,-
co oszczędza 2 bajty.substring
jako argument funkcjiPython 2 + Numpy, 104 bajty
źródło
APL (Dyalog) , 6 bajtów
Zajmuje macierz z jednym słowem na kolumnę.
Wypróbuj online!
¯1∘⌽
obróć jeden krok w prawo@
w1
rząd 1źródło
Mathematica, 59 bajtów
Wypróbuj online!
Pobiera i zwraca listę słów.
Jeśli wolisz pobierać i zwracać ciągi, działa to dla 87 bajtów:
źródło
Retina,
463731 bajtówWypróbuj online
Wciąż gra w golfa ..
źródło
(.*)
i$3
?+
pierwszy wiersz na a,*
zmienisz(.* .)
trzeci wiersz(.*)
na -2 bajty. Wypróbuj online!kdb +,
2522 bajtówRozwiązanie:
Przykład:
Wyjaśnienie:
Dodatkowy:
Wersja, która pobiera zwykły ciąg (37 bajtów):
źródło
Perl 5 , 40 bajtów
39 bajtów kodu + 1 dla
-a
Wypróbuj online!
źródło
Siatkówka ,
2520 bajtówLiczba bajtów zakłada kodowanie ISO 8859-1.
Wypróbuj online!
Wejścia i wyjścia są oddzielone od linii. Zestaw testowy wykonuje niezbędną konwersję I / O z separacji przestrzeni.
źródło
Mathematica, 134 bajty
źródło
Pyth, 12 bajtów
Pobiera listę słów i zwraca listę słów.
Spróbuj!
źródło
Java (OpenJDK 8) , 97 bajtów
Wypróbuj online!
źródło
C,
10677 bajtów-29 bajtów z scottinet
Modyfikuje ciąg w miejscu.
Nie golfowany:
źródło
J , 34 bajty
Wypróbuj online!
źródło
Łuska , 11 bajtów
Dane wejściowe i wyjściowe jako lista ciągów, spróbuj online!
(Nagłówek po prostu przekształca dane wejściowe w listę słów i łączy listę wyników ze spacjami.)
Wyjaśnienie
Alternatywnie, 11 bajtów
Wypróbuj online!
źródło
AWK , 63 bajty
Wypróbuj online!
Wydaje się, że powinien istnieć sposób na zmniejszenie nadmiarowości, ale nie widzę tego.
Uwaga: łącze TIO ma 4 dodatkowe bajty, aby umożliwić wprowadzenie danych wielowierszowych.
źródło