Wprowadzenie
Załóżmy, że mam listę liczb całkowitych, powiedzmy L = [-1,2,2,1,2,7,7,1,4] . Lubię w życiu zachować równowagę, więc cieszę się, że ma tyle nieparzystych elementów, co parzystych. Co więcej, ma również taką samą liczbę elementów we wszystkich klasach modulo 3, w których ma elementy:
[-1,2,2,1,2,7,1,4]
0 mod 3:
1 mod 3: 1 7 1 4
2 mod 3: -1 2 2 2
Niestety w przypadku klas modulo 4 to już nie obowiązuje. Mówimy ogólnie, że niepusta lista jest zrównoważona modulo N, jeśli ma taką samą liczbę elementów we wszystkich klasach modulo N, dla których ta liczba nie jest równa 0. Powyższa lista L jest zrównoważona modulo 2 i 3, ale niezrównoważona modulo 4
Zadanie
Twoje dane wejściowe to niepusta lista L liczb całkowitych pobrana w dowolnym rozsądnym formacie. Twoje wyjście to lista liczb całkowitych N ≥ 2, tak że L jest zbalansowanym modułem N , ponownie w dowolnym rozsądnym formacie. Kolejność danych wyjściowych nie ma znaczenia, ale nie powinna zawierać duplikatów.
Gwarantuje się, że na wyjściu jest tylko skończenie wiele liczb, co oznacza dokładnie, że nie wszystkie elementy L występują w nim tyle samo razy. Przykładami nieprawidłowych danych wejściowych są [3] , [1,2] i [0,4,4,0,3,3] . Zauważ, że największa liczba na wyjściu wynosi co najwyżej maks. (L) - min (L) .
Wygrywa najniższa liczba bajtów w każdym języku i obowiązują standardowe zasady gry w golfa .
Przypadki testowe
[1,1,2] -> []
[1,1,5] -> [2,4]
[1,1,24] -> [23]
[1,2,3,2] -> [2]
[12,12,-4,20] -> [2,3,4,6,8,12,24]
[1,1,12,12,-3,7] -> [3,10]
[-1,2,2,1,2,7,1,4] -> [2,3]
[4,-17,-14,-18,-18,3,5,8] -> []
[-18,0,-6,20,-13,-13,-19,13] -> [2,4,19]
[-11,-19,-19,3,10,-17,13,7,-5,16,-20,20] -> []
[3,0,1,5,3,-6,-16,-20,10,-6,-11,11] -> [2,4]
[-18,-20,14,13,12,-3,14,6,7,-19,17,19] -> [2,3]
[-16,-9,6,13,0,-17,-5,1,-12,-4,-16,-4] -> [3,9]
[-97,-144,3,53,73,23,37,81,-104,41,-125,70,0,111,-88,-2,25,-112,54,-76,136,-39,-138,22,56,-137,-40,41,-141,-126] -> [2,3,6]
Odpowiedzi:
05AB1E , 11 bajtów
Wypróbuj online!
źródło
Wolfram Language (Mathematica) ,
5652 bajtówDzięki Nie drzewo za zapisanie 4 bajtów.
Wypróbuj online!
Główną sztuczką golfa jest użycie
sumy wartości bezwzględnych (lub 1-normalnej)sumy wartości kwadratowych, obliczonych jako iloczyn skalarny z samym sobą, jako górnej granicy zamiastMax@#-Min@#
. W przeciwnym razie po prostu implementuje specyfikację bardzo dosłownie.źródło
Perl 6 ,
5248 bajtówSprawdź to
Sprawdź to
Rozszerzony:
źródło
Haskell ,
8584 bajtówWypróbuj online! Wykorzystuje sumę wartości bezwzględnych jako maksimum z odpowiedzi Martina Endera .
Edycja: -1 bajt dzięki Ørjan Johansen.
Wyjaśnienie:
źródło
Łuska , 13 bajtów
Wypróbuj online!
źródło
R ,
7572 bajtówWypróbuj online!
Wykorzystuje
table
do obliczenia liczby każdego modulo liczby całkowitejx
. Standardowe odchyleniesd
zestawu liczb wynosi zero, jeśli wszystkie są równe, a w przeciwnym razie dodatnie. Stąd!sd(table(L%%x))
jestTRUE
wszędzie tam, gdzieL
mod jest zrównoważony mod,x
a fałsz inaczej. Wartości te są następnie łączone wF
.which
następnie zwraca indeksy prawdziwych wartości z funkcji. Ponieważ R używa indeksowania opartego na 1 iF
jest początkowo wektorem długości o wartości 1FALSE
, to poprawnie zwróci wartości zaczynające się od2
.Można oczekiwać, że wbudowana funkcja
range
obliczy zakres zestawu danych , tj.max(D)-min(D)
, Ale niestety oblicza i zwraca wektorc(min(D), max(D))
.źródło
Czysty , 121 bajtów
Wykorzystuje sztuczkę sumy absolutów z odpowiedzi Martina Endera.
Gra w golfa:
Czytelny:
Wypróbuj online!
źródło
Galaretka , 12 bajtów
Wypróbuj online!
Podziękowania dla user202729 za zapisanie bajtu i do Martinowi Enderowi (pośrednio) za zapisanie bajtu.
Jak to działa
Alternatywny 12-bajterowy wariant z jedną linią można wypróbować online!
źródło
AS
(S
umA
bsolutes) też.ḟ0
nie jest potrzebny na czacie .Python 3,
120102 bajtówNiezbyt golfowy.
-18 bajtów dzięki Mr. Xcoder .
Wypróbuj online!
źródło
MATL , 19 bajtów
-4 bajty dzięki Luisowi Mendo!
Wypróbuj online!
Port w mojej odpowiedzi w badania .
źródło
S5L)d
zamiastX>GX<-
i8#u
zamiastFFFT#u
[1 0]
(ale wiedziałem, że to możliwe), więc5L
jest to przydatne, a ja*still* really need to go and properly read the docs for
# `:( ale dziękuję!#
, podanie większej ilości niż maksymalna ilość wyjść właśnie wybiera poszczególne wyjścia. Z funkcjąu
maksimum jest4
, tak5#u
jestT#u
,6#u
jestFT#u
itd.JavaScript (ES6), 117 bajtów
Zwraca rozdzieloną spacjami listę wartości.
Przypadki testowe
Pokaż fragment kodu
źródło
Clojure, 91 bajtów
Używanie
frequencies
nie jest idealne w golfie kodu.źródło
J, 38 bajtów
Podziękowania należą się panu Xcoderowi za sumę sztuczki wartości bezwzględnych.
Jeśli chcesz, edytuj link do TIO - trochę się spieszyłem.
Wyjaśnienie i link TIO już wkrótce (ish).
źródło
APL (Dyalog) ,
43413830 bajtówLitery w kodzie opowiadają całą historię.
8 bajtów zapisanych dzięki @ Adám
Wypróbuj online!
źródło
∊x⊆⍨1=⊂(≢∘∪1⊥|∘.=|)¨⍨x←1+∘⍳1⊥|