Podane są tablicę A z n ściśle dodatnimi liczbami całkowitymi, a n 2 .
Twoim zadaniem jest zmapowanie każdego wpisu A i do:
- 1, jeżeli A j mod A i jest nieparzyste dla każdego j, tak że 1 ≤ j ≤ n i j ≠ i
- 2, jeżeli A j mod Ai jest nawet dla każdego j taki, że 1 ≤ j ≤ n i j ≠ i
- 0 w przeciwnym razie (mieszane parytety)
Przykład
Dla A = [73, 50, 61] mamy:
- 50 mod 73 = 50 , 61 mod 73 = 61 → mieszany
- 73 mod 50 = 23 , 61 mod 50 = 11 → wszystkie nieparzyste
- 73 mod 61 = 12 , 50 mod 61 = 50 → wszystkie parzyste
Dlatego oczekiwany wynik to [0, 1, 2] .
Zasady
- Możesz użyć dowolnych trzech różnych wartości (dowolnego typu) zamiast 0 , 1 i 2, o ile są one spójne. Podaj swoje mapowanie, jeśli nie korzystasz z opisanego w wyzwaniu.
- W razie jakichkolwiek wątpliwości zero jest parzyste .
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach!
Przypadki testowe
[ 1, 2 ] --> [ 2, 1 ]
[ 3, 4 ] --> [ 1, 1 ]
[ 1, 2, 3 ] --> [ 2, 1, 0 ]
[ 4, 4, 4 ] --> [ 2, 2, 2 ]
[ 73, 50, 61 ] --> [ 0, 1, 2 ]
[ 941, 459, 533 ] --> [ 1, 0, 0 ]
[ 817, 19, 928, 177 ] --> [ 1, 2, 1, 1 ]
[ 312, 463, 336, 729, 513 ] --> [ 0, 2, 0, 0, 0 ]
[ 53, 47, 33, 87, 81, 3, 17 ] --> [ 0, 0, 0, 1, 0, 2, 0 ]
[1]
,[0, 1]
i[1, 1]
praca?Odpowiedzi:
Python 2 ,
686766 bajtów-1 bajt dzięki Mr. Xcoder
-1 bajt dzięki ovs
Wypróbuj online!
Zwraca
1,0,2
zamiast tego0,1,2
.źródło
(k<1)
się0**k
przez około 1 bajtu.Galaretka , 9 bajtów
Zwraca [1, 1], [0, 1], [1] zamiast 0, 1, 2 .
Wypróbuj online!
Jak to działa
źródło
‘ṬUḄ
zQ€Ḅ
zapisać bajt?Q€
może wrócić[0, 1]
lub[1, 0]
.[1]
,[1,1]
i[0,1]
są trzy różne wartości, tak%þœ-€0Ḃ‘Ṭ
powinno być do zaakceptowania dla 9. Edycja - ach widzę dokładnie pytasz to pytanie :)¹-Ƥ%"%2‘Ṭ
MATL , 12 bajtów
Wykorzystuje
0
,-1
,1
zamiast0
,1
,2
odpowiednio.Wypróbuj online! Lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie
źródło
C (gcc) ,
118114979291 bajtówczterydwadzieścia jeden bajtów dzięki Peterowi Cordesowi ; sugerowanie zastosowania innego mapowania wartości wyjściowej;[0 1 2] ~ [3 2 1]
.[0 1 2] ~ [ ]
.for(i=0;i<n;i++,putchar...
w golfafor(i=~0;++i<n;putchar...
.Wypróbuj online!
źródło
f(I,7)
nadpisuje pierwszy elementI[]
(A[]
in f ()) jednym z argumentów, których używasz jako miejscowych.f()
zakłada, że arg został przekazany na stos przez rozmówcę, ale dzwoniący nie wiedział o tym, a to, co faktycznie znajduje się na stosie powyżej adresu zwrotnego, toA[0]
. (tj. ten UB spowodowałt
iA[0]
ma ten sam adres). W każdym razie jest to tylko UB w twojej funkcji testowej na TIO.execlp("/usr/bin/objdump", "objdump", "-drwC", "-Mintel", argv[0], 0);
do main, aby uzyskać asm z gcc 7.2.1 TIO, który nie pasował dokładnie do mojego gcc Arch Linux 7.2.1. Po przekształceniu tego deasemblera z powrotem w źródło asm dla funkcji wywołującej, mogłem ponownie go lokalnie zainstalować w gdb i potwierdzić dokładnie, co się dzieje.o|=1<<(A[j]%A[i]%2)
bez potrzeby wymyślnego dekodowaniao
.o|=1<<...
zamiast czegoś podobnegoo|=1<<(t=...
.Mathematica,
574948 bajtówZwraca to:
False.True
dla 0 (mieszane)True.True
za 1 (wszystkie nieparzyste)False.False
za 2 (wszystkie parzyste)Wypróbuj online!
Oto nieco dłuższa alternatywa (49 bajtów):
Ten zwraca:
1
dla 0 (mieszane)-1
za 1 (wszystkie nieparzyste)0
za 2 (wszystkie parzyste)Wypróbuj online!
źródło
Czerwony , 101 bajtów
Wypróbuj online!
Zwraca
1 0
mieszane,1
nieparzyste i0
parzysteźródło
JavaScript (ES6), 46 bajtów
Zwraca -1 (parzysty), 1 (nieparzysty) i 0 (mieszany).
Jak to działa:
d
Akumulator będzie:!a[d+1]
== fałsz,!d
== 1,false - 1
== -1 )!a[d+1]
== true,!d
== 0,true - 0
== 1 )!a[d+1]
== fałsz,!d
== 0,false - 0
== 0 )Przypadki testowe:
Pokaż fragment kodu
źródło
jot ,
2720 bajtówWypróbuj online!
Używa [1 0] [1] [0] zamiast 0 1 2
Wyjaśnienie:
|/~
- tworzy stół z resztkami:2|
nieparzysty czy parzysty? :<@~.@}:@\:"1
- posortuj, upuść ostatni element (zawsze zero), zachowaj oryginalne elementy i zaznacz każdy wiersz:źródło
2/:~@:|"1]|1]\.]
zwróconą listą par.Rubin ,
5856 bajtówZwraca [0, 1], [1], [0] zamiast 0, 1, 2 (tj. [0] dla wszystkich parzystych, [1] dla wszystkich nieparzystych i [0, 1] dla mieszanych).
Wypróbuj online!
źródło
Perl, 38 bajtów
Obejmuje
+3
dla-p
Wyjścia 1 dla wszystkich parzystych, 2 dla wszystkich nieparzystych, 3 dla mieszanych
źródło
Czysty ,
956563 bajtówWypróbuj online!
Jako lambda, biorąc
[Int]
i wracając[Int]
, mapowanie na:0
: mieszane1
: wszystkie nawet-1
: wszystkie nieparzysteźródło
Perl 5 ,
7169 + 1 (-a
) = 70 bajtówWypróbuj online!
źródło
Pari / GP , 42 bajty
Zwraca
[0, 0], [0, 1], [1, 0]
zamiast0, 1, 2
.Wypróbuj online!
źródło
Java 8,
9189 bajtówtruetrue
zamiast2
parzystegofalsefalse
zamiast1
nieparzystychtruefalse
zamiast0
mieszanychWyjaśnienie:
Wypróbuj online.
źródło
Clojure, 82 bajty
Kompletny przykład z konwersją danych wyjściowych:
źródło