Zadanie
Odwrotne przebiegi liczb nieparzystych na podanej liście od 2 do 2 15 liczb całkowitych nieujemnych.
Przykłady
0 1
→ 0 1
1 3
→ 3 1
1 2 3
→ 1 2 3
1 3 2
→ 3 1 2
10 7 9 6 8 9
→ 10 9 7 6 8 9
23 12 32 23 25 27
→ 23 12 32 27 25 23
123 123 345 0 1 9
→ 345 123 123 0 9 1
Odpowiedzi:
Python 2,
756863 bajtów5 bajtów dzięki Dennisowi.
I obezwładniłem Dennisa .
Podziękowania dla Byeonggon Lee za rdzeń algorytmu.
Ideone to!
Stara wersja: 75 bajtów
źródło
print
nie potrzebuje parens. Ponadto używasz tylkoa
raz, więc nie potrzebujesz żadnej zmiennej.Python 2,
797573 bajtówJest to funkcja, która modyfikuje argument w miejscu. Drugi poziom wcięcia to tabulator.
Przetestuj na Ideone .
źródło
APL,
2120 bajtówWypróbuj || Wszystkie przypadki testowe
Wyjaśnienie:
Edycja: Zapisano
~
dzięki prawom De Morganaźródło
Haskell,
4644 bajtówDzięki @xnor za rozpoznanie złożenia i zapisanie dwóch bajtów.
źródło
(h*)
! Możesz zapisać bajt na podstawie, piszącf x=x
drugi, aby dopasować pustą listę, choć wygląda na to, żefoldr
jest jeszcze krótszyh%p|(l,r)<-span(odd.(h*))p=l++h:r;foldr(%)[]
::foldr
koniec! Dziękuję Ci.Galaretka , 10 bajtów
Wypróbuj online! lub zweryfikuj wszystkie przypadki testowe .
Jak to działa
źródło
Python 2,
7875 bajtówSuper hacky :)
źródło
k.i
?k.i=0
w ostatniej linii. To tylko zmienna.k
ik.i
powiązane?k.i
to stała zmienna między wywołaniamik
. Zobacz to jako prowizoryczny globalny bez konieczności używaniaglobal
słowa kluczowego.Python3, 96 bajtów
Zaoszczędź dużo bajtów dzięki Dziurawej Zakonnicy!
źródło
C, 107 bajtów
źródło
MATL , 20 bajtów
Dane wejściowe to tablica kolumn, używana
;
jako separator.Wypróbuj online!
Wyjaśnienie
Rozważ jako przykład tablicę wejściową
[1;2;3;5;7;4;6;7;9]
. Pierwsza część koduTiodgv
konwertuje tę tablicę na[1;1;1;0;0;1;0;1;0]
, gdzie1
wskazuje zmianę parzystości . (W szczególności kod uzyskuje parzystość każdego wpisu tablicy wejściowej, oblicza kolejne różnice, konwertuje wartości niezerowe na1
i wstawia a1
.)Następnie
Ys
oblicza łączną sumę , dając[1;2;3;3;3;4;4;5;5]
. Każda z tych liczb będzie używana jako etykieta , na podstawie której zostaną zgrupowane elementy wejścia . Odbywa się to poprzezG8XQ!
podział tablicy wejściowej na tablicę komórkową zawierającą grupy. W tym przypadku daje{[1] [2] [3;5;7] [4;6] [7;9]}
.Reszta kodu iteruje (
"
) w tablicy komórek. Każda składowa tablica numeryczna jest wypychana@g
.to
wykonuje kopię i oblicza jej parzystość . Jeśli (?
) wynik jest prawdziwy, tzn. Zawartość tablicy jest nieparzysta, tablica jest odwracana (P
).Stos jest domyślnie wyświetlany na końcu. Wyświetlana jest każda numeryczna tablica pionowa, podająca listę liczb oddzielonych znakami nowej linii.
źródło
Pyth, 14 bajtów
Przypadki testowe
źródło
J ,
333130 bajtówStosowanie
źródło
C #,
179178177 bajtówUżywam C # lambda. Możesz spróbować na .NETFiddle .
Kod minus minify:
Wyrazy uznania dla Byeonggon Lee za oryginalny algorytm.
źródło
foreach(var
i zmienić,if(n%2==1)
abyif(n%2>0)
zapisać 2 bajty (a właściwie 1, ponieważ twoja aktualna odpowiedź to 179 bajtów zamiast 178).Pyth,
2928 bajtówZestaw testowy.
Bezpośrednie tłumaczenie mojej odpowiedzi na python (kiedy tłumaczenie z python na pyth stało się dobrym pomysłem?)
źródło
TSQL 118 bajtów
Skrzypce
źródło
Clojure, 86 bajtów
Oto wersja bez golfa
Zasadniczo przechodzi przez sekwencję wejściową i jeśli napotka liczbę parzystą, dodaje liczbę i pusty wektor, w przeciwnym razie, jeśli jest liczbą nieparzystą, zastępuje ostatni element tą liczbą plus to, co było w ostatnim elemencie.
Na przykład dla tego seq
2 4 6 1 3 7 2
wygląda następująco:[]<=2
[2 []]<=4
[2 [] 4 []]<=6
[2 [] 4 [] 6 []]<=1
[2 [] 4 [] 6 [1 []]]<=3
[2 [] 4 [] 6 [3 [1 []]]]<=7
[2 [] 4 [] 6 [7 [3 [1 []]]]]<=2
[2 [] 4 [] 6 [7 [3 [1 []]]] 2 []]
A następnie spłaszczenie tego wektora daje prawidłową moc wyjściową. Możesz to zobaczyć online tutaj: https://ideone.com/d2LLEC
źródło
JavaScript (ES6)
7066Edytuj 4 bajty zapisane thx @Neil
źródło
:r=r.concat(o,x,o=[]),
oszczędza ci kilka bajtów. Myślę, że można następnie przejść, aby zapisać kolejne dwie tak:a=>[...a,[]].map(x=>x&1?o=[x,...o]:r=r.concat(o,x,o=[]),r=o=[])&&r
....o
?Stax ,
1510 bajtów CP437Wypróbuj online!
Wiązana galaretka! Tak smutne, że pakowanie pozwoliło zaoszczędzić tylko jeden bajt.
Wersja rozpakowana z 11 bajtami:
Wyjaśnienie
{|e_^*}
Jest to blok, który odwzorowuje wszystkie liczby parzysten
don+1
i wszystkie numery nieparzysten
do0
.źródło
Łuska , 7 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Rubinowy , 51 bajtów
Wypróbuj online!
Niektóre niewielkie różnice:
źródło
Perl 5 z
-p
42 bajtamiWypróbuj online!
źródło