introduzione
Supponiamo che io abbia un elenco di numeri interi, diciamo L = [-1,2,2,1,2,7,1,4] . Mi piace avere l'equilibrio nella mia vita, quindi sono felice di vedere che ha tanti elementi dispari quanti elementi pari. Inoltre, ha anche un numero uguale di elementi in tutte le classi modulo di 3 in cui ha elementi in:
[-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
Purtroppo, per le classi modulo di 4 questo non vale più. In generale, diciamo che un elenco non vuoto è bilanciato modulo N se ha un numero uguale di elementi in tutte le classi modulo di N per cui questo numero non è 0. L'elenco L sopra è bilanciato modulo 2 e 3, ma modulo sbilanciato 4.
L'obiettivo
Il tuo input è un elenco non vuoto L di numeri interi presi in qualsiasi formato ragionevole. Il tuo output è l'elenco di quegli interi N ≥ 2 tali che L è bilanciato modulo N , sempre in qualsiasi formato ragionevole. L'ordine dell'output non ha importanza, ma non deve contenere duplicati.
È garantito che ci sono solo molti numeri nell'output, il che significa precisamente che non tutti gli elementi di L si verificano un numero uguale di volte in esso. Esempi di input non validi sono [3] , [1,2] e [0,4,4,0,3,3] . Si noti che il numero più grande nell'output è al massimo max (L) - min (L) .
Vince il conteggio dei byte più basso in ogni lingua e si applicano le regole standard per il golf del codice .
Casi test
[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]