Opis wyzwania
Przełącz wszystkie litery z pierwszej części alfabetu w jednym kierunku, a litery z drugiej połowy alfabetu w drugim. Inne postacie pozostają na miejscu.
Przykłady
1: Witaj świecie
Hello_world //Input
Hell ld //Letters from first half of alphabet
o wor //Letters from second half of alphabet
_ //Other characters
dHel ll //Cycle first letters
w oro //Cycle second letters
_ //Other characters stay
dHelw_oroll //Solution
2: codegolf
codegolf
c deg lf
o o
f cde gl
o o
focdeogl
3 .: pusty ciąg
(empty string) //Input
(empty string) //Output
Wkład
Sznurek, który musisz obrócić. Może być pusty. Nie zawiera nowych linii.
Wydajność
Obrócony ciąg wejściowy, dozwolony końcowy
znak nowej linii Może być zapisany na ekranie lub zwrócony przez funkcję.
Zasady
- Niedozwolone są luki
- To jest golf golfowy, więc wygrywa najkrótszy kod w bajtach rozwiązujący problem
- Program musi zwrócić prawidłowe rozwiązanie
Odpowiedzi:
MATL , 29 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Siatkówka , 55 bajtów
Wypróbuj online!
Wykorzystuje dwa etapy sortowania, aby oddzielnie obrócić pierwszą i drugą połowę litery.
źródło
05AB1E ,
444342 bajtówWyjaśnienie
Wygeneruj listę liter alfabetu obu przypadków.
['Aa','Bb', ..., 'Zz']
Podziel na 2 części i zachowaj kopię w rejestrze.
Wyodrębnić listów od wejścia, które są częścią 1. połowie alfabetu, obracać je i przechowywać w X .
Wyodrębnić listów od wejścia, które są częścią 2. połowie alfabetu, obracać je i przechowywać w Y .
Główna pętla
Wypróbuj online!
Uwaga: Wiodące
Ð
można pominąć w 2sable dla rozwiązania 41- bajtowego.źródło
<s>44</s>
wciąż wygląda jak 44.JavaScript (ES6),
155142138 bajtówEdycja: zapisano
34 bajty za pomocąunshift()
(inspirowane odpowiedzią edc65)Jak to działa
R
Funkcji zajmuje sposób tablicy jako parametrm
:Jest on po raz pierwszy używany w
push
metodzie do przechowywania wyodrębnionych znaków wa[]
(pierwsza połowa alfabetu) ib[]
(druga połowa alfabetu). Po obróceniu tych tablicR()
wywoływana jest po raz drugishift
metodą wstrzykiwania nowych znaków w końcowy ciąg.Stąd nieco nietypowa składnia:
R`push`
iR`shift`
.Próbny
źródło
a.unshift(a.pop(b.push(b.shift())))
CJam , 41 bajtów
Wypróbuj online!
Stosuje podobne podejście do mojej odpowiedzi na tasowanie samogłosek .
źródło
Python, 211 bajtów
Najlepsze, co mogłem zrobić. Pobiera ciąg ze STDIN i wypisuje wynik do STDOUT.
alternatywnie z 204 bajtami, ale niestety drukuje nowy wiersz po każdym znaku:
źródło
Python 2, 149 bajtów
źródło
JavaScript (ES6), 144
Używanie
parseInt
bazy 36 do rozdzielenia pierwszej, drugiej i drugiej połowy. Dla każdej postacic
oceniamy=parseInt(c,36)
takc '0'..'9' -> y 0..9
c 'a'..'m' or 'A'..'M' -> y 10..22
c 'n'..'z' or 'N'..'Z' -> y 23..35
c any other -> y NaN
Więc
y=parseInt(c,36), x=(y>22)+(y>9)
dajex==1
za pierwszą połowę,x==2
za drugą połowę ix==0
za każdą inną (ponieważNaN
> dowolna liczba jest fałszywa)Pierwszy krok: łańcuch wejściowy jest odwzorowywany na tablicę 0,1 lub 2. W międzyczasie wszystkie znaki łańcucha są dodawane do 3 tablic. Na końcu tego pierwszego kroku układ 1 i 2 są obracane w przeciwnych kierunkach.
Drugi krok: skanowana tablica jest skanowana, przebudowując łańcuch wyjściowy, biorąc każdy znak z 3 tablic tymczasowych.
Mniej golfa
Test
źródło
Perl 53 bajty
Obejmuje +1 dla
-p
Uruchom z wejściem na STDIN:
drotate.pl
:źródło
Python,
142133 bajtyLepsza odmiana na temat:
bez golfa:
wcześniejsze rozwiązanie:
bez golfa:
źródło
Rubinowy, 89 bajtów
źródło
PHP, 189 bajtów
Trudno grać w golfa ... Oto moja propozycja:
źródło