Introdução
Suponha que eu tenha uma lista de números inteiros, digamos L = [-1,2,2,1,2,7,1,4] . Eu gosto de ter equilíbrio na minha vida, então estou feliz em ver que tem tantos elementos estranhos quanto pares. Além disso, ele também possui um número igual de elementos em todas as classes de módulo de 3 e possui elementos em:
[-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
Infelizmente, para as classes de módulo 4, isso não se aplica mais. Em geral, dizemos que uma lista não vazia é o módulo N balanceado se tiver um número igual de elementos em todas as classes de módulo de N para as quais esse número não é 0. A lista L acima é o módulo balanceado 2 e 3, mas o módulo desbalanceado 4)
A tarefa
Sua entrada é uma lista não vazia L de números inteiros, obtidos em qualquer formato razoável. Sua saída é a lista desses números inteiros N ≥ 2, de modo que L é um módulo N balanceado , novamente em qualquer formato razoável. A ordem da saída não importa, mas não deve conter duplicatas.
É garantido que haja apenas muitos números finitos na saída, o que significa precisamente que nem todos os elementos de L ocorrem um número igual de vezes nela. Exemplos de entradas inválidas são [3] , [1,2] e [0,4,4,0,3,3] . Observe que o maior número na saída é no máximo max (L) - min (L) .
A contagem de bytes mais baixa em cada idioma vence e aplicam -se regras padrão de código de golfe .
Casos de teste
[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]
Respostas:
05AB1E , 11 bytes
Experimente online!
fonte
Wolfram Language (Mathematica) ,
5652 bytesObrigado a Não é uma árvore por salvar 4 bytes.
Experimente online!
O principal truque do golfe é usar a
soma dos valores absolutos (ou a norma 1)dos valores ao quadrado, computados como um produto escalar consigo, como o limite superior em vez deMax@#-Min@#
. Caso contrário, apenas implementa as especificações literalmente.fonte
Perl 6 ,
5248 bytesTeste-o
Teste-o
Expandido:
fonte
Haskell ,
8584 bytesExperimente online! Usa a soma dos valores absolutos como máximo da resposta de Martin Ender .
Edit: -1 byte graças a Ørjan Johansen.
Explicação:
fonte
Casca , 13 bytes
Experimente online!
fonte
R ,
7572 bytesExperimente online!
Usa
table
para calcular as contagens de cada módulo inteirox
. O desvio padrãosd
de um conjunto de números é zero se todos forem iguais e positivos caso contrário. Daí!sd(table(L%%x))
éTRUE
onde quer queL
seja mod mod equilibradox
e falso caso contrário. Esses valores são concatenados emF
.which
em seguida, retorna os índices de valores verdadeiros da função Como R usa indexação baseada em 1 eF
é inicialmente um vetor de comprimento um com valorFALSE
, isso retornará corretamente valores começando com2
.Pode-se esperar que a função interna
range
calcule o intervalo de um conjunto de dados , ou sejamax(D)-min(D)
, mas, infelizmente, calcula e retorna o vetorc(min(D), max(D))
.fonte
Limpo , 121 bytes
Usa o truque da soma dos absolutos da resposta de Martin Ender.
Golfe:
Legível:
Experimente online!
fonte
Gelatina , 12 bytes
Experimente online!
Agradecemos a user202729 por salvar um byte e a Martin Ender (indiretamente) por salvar um byte.
Como funciona
Uma alternativa de uma linha de 12 bytes pode ser experimentada online!
fonte
AS
(S
um dosA
bsolutes) também.ḟ0
não é necessário no bate-papo .Python 3,
120102 bytesNão é muito golfista.
-18 bytes graças ao Sr. Xcoder .
Experimente online!
fonte
MATL , 19 bytes
-4 bytes graças a Luis Mendo!
Experimente online!
Porto de minha resposta em R .
fonte
S5L)d
vez deX>GX<-
e em8#u
vez deFFFT#u
[1 0]
(mas sabia que era possível), por isso5L
é útil, e eu*still* really need to go and properly read the docs for
# `:( mas obrigado!#
, especificar um número maior que o número máximo de saídas seleciona apenas saídas individuais. Com função,u
o máximo é4
,5#u
éT#u
,6#u
éFT#u
etc.JavaScript (ES6), 117 bytes
Produz uma lista de valores separados por espaço.
Casos de teste
Mostrar snippet de código
fonte
Clojure, 91 bytes
O uso
frequencies
não é ideal no código de golfe.fonte
J, 38 bytes
O crédito é para o Sr. Xcoder pela soma dos truques de valores absolutos.
Edite em um link TIO, se quiser - joguei isso com pressa.
Explicação e link TIO em breve (ish).
fonte
APL (Dyalog) ,
43413830 bytesOs ⍨s no código contam a história toda.
8 bytes salvos graças a @ Adám
Experimente online!
fonte
∊x⊆⍨1=⊂(≢∘∪1⊥|∘.=|)¨⍨x←1+∘⍳1⊥|