Zadanie
Biorąc pod uwagę tablicę dodatnich liczb całkowitych, zamień każdy element na parzystość sumy pozostałych elementów. Tablica ma co najmniej 2 elementy.
Definicja
- Parzystość: czy liczba jest nieparzysta, czy parzysta.
Przykład
Dla tablicy [1,2,3,1]
:
- Zamień
1
na parzystość2+3+1
, tjeven
. - Zamień
2
na parzystość1+3+1
, tjodd
. - Zamień
3
na parzystość1+2+1
, tjeven
. - Zamień
1
na parzystość1+2+3
, tjeven
.
Wydajność: [even, odd, even, even]
Wkład
Tablica dodatnich liczb całkowitych.
Możesz wziąć go jako odpowiednią tablicę lub jako ciąg liczb całkowitych dodatnich oddzielonych od linii.
Możesz założyć, że tablica i zawarte w niej wartości mieszczą się w możliwościach obsługi twojego języka.
Wydajność
Tablica dwóch spójnych wartości , jedna reprezentująca odd
, jedna reprezentująca even
.
Możesz wyprowadzić go jako ciąg znaków oddzielony wierszem dwóch wartości.
Przypadki testowe
Wejścia:
[1, 2, 3, 1]
[1, 2, 3, 2, 1]
[2, 2]
[100, 1001]
Wyjścia:
[even, odd, even, even]
[even, odd, even, odd, even]
[even, even]
[odd, even]
Uwaga: możesz wybrać inne spójne wartości inne niż odd
i even
.
Punktacja
To jest golf golfowy . Najkrótsza odpowiedź w bajtach wygrywa.
Obowiązuje standardowa luka .
źródło
_SḂ
JavaScript (ES6),
38 3632 bajtówUżywa
0
parzystych i1
nieparzystych.Test
źródło
c-b&1
zamiast(c-b)%2
eval(a.join`+`)
ponada.reduce((x,y)=>x+y)
. To sprytneHaskell, 20 bajtów
Wykorzystuje
True
wartości nieparzyste iFalse
parzyste.Wypróbuj online!
Odejmij każdy element od sumy listy i sprawdź, czy jest nieparzysty.
f
zwrócił się do pointfree posiada również 20 bajtów:map=<<(odd.).(-).sum
.źródło
MATL ,
5, 4 bajtyWypróbuj online!
Jeden bajt zapisany dzięki Dennisowi!
Daje to „1” dla nieparzystych i „0” dla parzystych. Wyjaśnienie:
źródło
Alice ,
3128 bajtówWypróbuj online!
Format wejściowy nie ma znaczenia, o ile liczby całkowite są rozdzielone. Format wyjściowy jest oddzielony od linii.
Układ prawdopodobnie nie jest jeszcze optymalny, ale nie znalazłem jeszcze sposobu na jego dalsze skrócenie.
Wyjaśnienie
źródło
Pyth,
76 bajtów-1 bajtów dzięki @KZhang
Wyjścia 1 dla nieparzystych, 2 dla parzystych.
Spróbuj!
Wyjaśnienie
źródło
%_2
na GCDi2_
, możesz nawet dokonaćd
niejawnej zmiany kodu nami2-sQ
, oszczędzając bajt. Wyjścia są zmieniane na 2 na parzyste i 1 na nieparzyste.05AB1E (starsza wersja) ,
43 bajtyWypróbuj online!
źródło
D
, ponieważ dane wejściowe są niejawne.Python 2 ,
3331 bajtów-2 bajty dzięki Leaky Nun
Wypróbuj online!
źródło
sum(x)-z&1
zamiast(sum(x)-z)%2
sum(x,z)%2
działałoby równieżR, 21 bajtów
czyta listę ze standardowego wejścia i zwraca 0 dla parzystej, 1 dla nieparzystej. wiąże dane wejściowe ze zmienną
n
wewnątrz wywołaniasum
zamiast wywoływać je na zewnątrz, tj.n=scan();(sum(n)-n)%%2
Wypróbuj online!
źródło
Mathematica, 13 bajtów
lub
źródło
Clojure, 30 bajtów
Odejmuje wszystkie wartości kolejno od każdej wartości, na przykład przy wprowadzaniu
[a b c d]
druga obliczona wartość tob - a - b - c - d
=-(a + c + d)
. Wyjście jestfalse
parzyste itrue
nieparzyste.Ale równie dobrze możesz użyć
+
i obliczyć każdy kolejny termin dwa razy, aby nie wpływał on na parzystość.źródło
CJam , 10 bajtów
Jest to anonimowy blok (funkcja), który pobiera dane wejściowe ze stosu i zastępuje je danymi wyjściowymi.
Wypróbuj online!
Wyjaśnienie
Rozważ wejście
[1 2 3 1]
.źródło
jot , 6 bajtów
Wypróbuj online!
źródło
APL (Dyalog Unicode) ,
197 bajtówGrał w golfa 12 bajtów dzięki @ Adám
Wypróbuj online!
źródło
Japt , 7 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Perl 5, 31 bajtów
Wyjścia
1
dla nieparzystych i0
parzystych.źródło
perldoc perlsub
mówi : „Podpis jest częścią ciała podprogramu. Zwykle ciało podprogramu jest po prostu wzmocnionym blokiem kodu”.sub
bez jego złamania.sub
, na przykład posort
lubgrep
lub jako argument do innego podprogramu. Może warto o to zapytać na Code Golf Meta .sub
tylko wtedy, gdy jest używany w prototypowanej funkcji (sort
igrep
jest mniej lub bardziej prototypowany). Ale w przeciwnym raziesub
jest to wymagane. Niezależnie od tego pominięcie gry w golfa o 3 bajtysub
nie jest naprawdę interesujące.Clojure (skrypt), 36 bajtów
Wyjście jest
true
nieparzyste ifalse
parzyste. Zarówno dane wyjściowe, jak i wejściowe są sekwencjami.źródło
PHP, 50 bajtów
Wersje online
1 dla nieparzystych, 0 dla parzystych
Dane wyjściowe jako ciąg oddzielony
_
PHP, 72 bajty
Dane wyjściowe jako użycie tablicy
array_map
źródło
?:0
to nic nie robi.foreach($_GET as$v)echo array_sum($_GET)-$v&1,_;
C,
6862 bajtów1 dla nieparzystych, 0 dla parzystych
Szczegółowe Wypróbuj online
źródło
Siatkówka ,
4038 bajtówWypróbuj online! Wyjścia 1 dla nieparzystych i 0 dla parzystych. Objaśnienie: Pierwsze dwa wiersze duplikują dane wejściowe jeden raz dla każdej liczby na wejściu, ale bez samego elementu. To tworzy dodatkową pustą linię, która jest następnie usuwana. Dane wejściowe są następnie konwertowane z dziesiętnej na unarną, spacje są usuwane, a parzystość obliczana. Nawet parzystość jest następnie konwertowana na zero, a wyniki ponownie łączone w jedną linię. Edycja: Zapisano 2 bajty dzięki @FryAmTheEggman. Wypróbowałem kilka innych wersji, które są koncepcyjnie bardziej przyjemne, ale do wyrażenia wymagają o wiele za dużo bajtów:
Zmienia wszystkie dane wejściowe na ich parzystość, a następnie odwraca wszystkie ich parytety, jeśli suma ma nieparzystą parzystość.
Sumuje duplikat danych wejściowych, a następnie przyjmuje parzystość wszystkiego, a następnie odwraca parzystości, jeśli suma jest nieparzysta, a następnie usuwa sumę ponownie.
źródło
;
pleców w spacje. Jeśli umieścisz;
na początku, możesz zapisać bajt, usuwając go natychmiast, a nie po konwersji na 0.Ohm , 4 bajty
Wypróbuj online!
Zasadniczo bezpośredni port odpowiedzi MATL i 05AB1E . Używa
true
parzystych ifalse
nieparzystych.źródło
k, 9 bajtów
Wyjście jest
1
naodd
, a0
na parzyste. Wypróbuj online.Przekształcony w pseudokod, będzie to:
źródło
Scala , 19 bajtów
Wypróbuj online!
źródło
Brain-Flak ,
946866 bajtówWypróbuj online!
To wydaje się trochę za długie na zadanie. Może to być wygodniejszy sposób.
Wyjaśnienie
Najpierw obliczamy sumę stosu za pomocą:
Przechodzimy przez cały stos, dodając ten wynik do każdego elementu i określając pary
Wykorzystuje całkiem fajny algorytm mod 2, który wymyśliłem do tego wyzwania.
Spycha to 1 poniżej dekretu wejściowego, aż sygnał wejściowy osiągnie zero za każdym razem, gdy wykonujemy
1-n
1, który umieściliśmy wcześniej, a następnie usuwa dane wejściowe.źródło
Wise ,
5452 bajtówWypróbuj online!
Wyjaśnienie
Ten kod byłby o wiele krótszy, gdyby nie zajęło tylu bajtów zamiana dwóch górnych elementów. Obecny rekord to
To niestety stanowi większość kodu.
Najpierw bierzemy sumę XOR stosu
Następnie XOR to z każdym elementem i elementem z ostatnim bitem zerowanym
źródło
Java ,
8178 bajtów3 bajty dzięki Kevin Cruissen
Wypróbuj online!
Zmienia tablicę w miejscu.
źródło
void f(int[]a){int s=0,i=a.length;for(int x:a)s+=x;for(;i-->0;a[i]=s-a[i]&1);}
AWK , 64 bajty
Wypróbuj online!
Wyprowadza
0
a1
dla liczb parzystych i dla liczb nieparzystych oddzielonych znakami nowej linii. Jedynym, nawet nieco nieszablonowym, pomysłem było umieszczenieprint
polecenia wewnątrzfor
kroku „przyrostu”. Próbowałem kilku „sprytnych” sposobów drukowania, ale nie oszczędzały bajtów.Tylko na chichot, jeśli nie chcesz nowych linii:
który ma taką samą liczbę bajtów jak powyżej, ale jest nieco bardziej rozwarty.
źródło
Szybki - 55 bajtów
Wreszcie bije C! Również 0 dla parzystej, 1 dla nieparzystej
Funkcja z użyciem:
g(a: [1,2,3,2,1] // => 0 1 0 1 0
Sprawdź to!
źródło
(x-y)%2
zx-y&1
Aksjomat, 45 bajtów
brak sprawdzania typu danych wejściowych, możliwe przeliczenie sumy „a” każdego elementu… testy
źródło
Julia 1.0 , 17 bajtów
Wypróbuj online!
źródło