Zasady
Program powinien otrzymać ciąg / tablicę słów jako dane wejściowe. Dla każdego słowa w łańcuchu znaków / tablicy rekonstruuje ono słowo, przyjmując znaki naprzemiennie od przodu i od tyłu słowa.
12345 678 9 -> 15243 687 9.
Następnie zmieni kolejność słów w naprzemienny sposób między najwcześniejszym a ostatnim słowem występującym w ciągu.
15243 687 9 -> 15243 9 687
Na koniec zrekonstruuje ciąg, umieszczając spacje, tabulatory i znaki nowej linii w indeksach, w których początkowo się znajdowały, przed wygenerowaniem wyniku.
12345 678 9-> 15243 687 9 -> 15243 9 687 -> 15243 968 7
Dane wyjściowe powinny być tego samego typu danych co dane wejściowe.
Standardowe luki są zabronione
Przykłady
Wejście:
Szybki brązowy lis przeskakuje nad leniwym psem.
Wyjście:
Teh d.ogq kucil yaz bnrwo tehf xoo rvej supmWejście:
Szybki brązowy lis przeskakuje
nad leniwym psem.
Wyjście:
Teh d.ogq kucil yaz bnrwo
tehf xoo rvej supmDane wejściowe:
Aflack Dane
wyjściowe:
Akfcla
To jest golf golfowy, więc wygrywa najkrótszy kod
źródło
Odpowiedzi:
Galaretka ,
15 148 bajtówFest 6 bajt oszczędzania od Dennis (przesuwając rozłożonego i pleśni wewnątrz ogniwa 1 nie ma potrzeby podzielony na dwa i głowy, a Spłaszczenie jest tam już tak, że stają się jednym!)
(z dwóch wierszy:
żṚFœs2Ḣ
iÇ€ÇFṁ⁸
)Wypróbuj online!
Pobiera tablicę słów i zwraca tablicę nowych słów. (Stopka w TIO nazywa to i łączy tablicę ze spacjami, dzięki czemu ładnie się drukuje.)
Uwaga - obsługa pojedynczego łańcucha, dzielenie spacji tabulatorami i znaków nowej linii, a następnie ponowne składanie okazało się dość trudne; kiedy zobaczyłem, że lista słów jest opcją, sprawy stały się znacznie łatwiejsze!
W jaki sposób?
źródło
JavaScript (ES6), 89 bajtów
Pobiera i wyprowadza tablicę słów.
Test
Pokaż fragment kodu
Wersja łańcuchowa, 112 bajtów
Bierze i wysyła ciąg.
Test
Pokaż fragment kodu
źródło
Perl , 77 bajtów
74 bajty kodu + 3 bajty na
-0pa
flagi.Wypróbuj online!
Zapisany 8 bajtów dzięki starej @Ton Hospel „s postu gdzie«ukradł»
s/../chop/reg
. (Wcześniej miałem$c=y///c/2,s/.{$c}$//
)źródło
Perl 6 , 84 bajtów
Wprowadza i wyprowadza listę słów.
Jak to działa
Wewnątrz lambdy zdefiniowałem kolejną lambdę do wykonywania „ kręcących znaków naprzemiennie z przodu i z tyłu ” skręcając:
Działa to, ponieważ
xx
operator bardziej przypomina makro niż funkcję, ponieważ zapewnia magiczną leniwą ocenę.Następnie w głównej lambda:
Perl 6 , 87 bajtów
Jest to wariant powyższego, który wprowadza i wysyła ciąg znaków - zachowując różne znaki białych znaków.
źródło
Haskell ,
115 95 93 9895 bajtówZadzwoń z
(!)=<<(f=<<).f.words $ "some string"
. Wypróbuj online!Dzięki @nimi za zwrócenie uwagi, że źle odczytałem wyzwanie wcześniej.
Funkcja
f
wykonuje skręcanie na liście, dzięki czemu można jej używać na ciągach znaków (liście znaków) i na liście ciągów znaków.a!b
wstawia spację łańcuchab
w łańcucha
.(!)=<<(f=<<).f.words
odpowiada\s0 -> (concatMap f . f . words $ s0) ! s0
:źródło