introduction
Supposons que j'ai une liste d'entiers, disons L = [-1,2,2,1,2,7,1,4] . J'aime avoir l'équilibre dans ma vie, donc je suis heureux de voir qu'il a autant d'éléments impairs que d'éléments pairs. De plus, il a également un nombre égal d'éléments dans toutes les classes modulo de 3 dans lesquelles il a des éléments:
[-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
Malheureusement, pour les classes modulo de 4, cela ne tient plus. En général, nous disons qu'une liste non vide est équilibrée modulo N si elle a un nombre égal d'éléments dans toutes les classes modulo de N pour lesquelles ce nombre n'est pas 0. La liste ci-dessus L est modulo équilibrée 2 et 3, mais modulo déséquilibrée 4.
La tâche
Votre entrée est une liste non vide L d'entiers pris dans n'importe quel format raisonnable. Votre sortie est la liste de ces entiers N ≥ 2 tels que L est modulo N équilibré , là encore dans n'importe quel format raisonnable. L'ordre de sortie n'a pas d'importance, mais il ne doit pas contenir de doublons.
Il est garanti qu'il n'y a qu'un nombre fini de nombres dans la sortie, ce qui signifie précisément que tous les éléments de L n'y figurent pas autant de fois. Des exemples d'entrées non valides sont [3] , [1,2] et [0,4,4,0,3,3] . Notez que le plus grand nombre dans la sortie est au maximum max (L) - min (L) .
Le nombre d'octets le plus bas dans chaque langue gagne et le code-golf standard s'appliquent.
Cas de 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]
Réponses:
05AB1E , 11 octets
Essayez-le en ligne!
la source
Wolfram Language (Mathematica) ,
5652 octetsMerci à Not a tree d'avoir économisé 4 octets.
Essayez-le en ligne!
L'astuce principale du golf est d'utiliser la
somme des valeurs absolues (ou la norme 1)somme des valeurs au carré, calculée comme un produit scalaire avec lui-même, comme limite supérieure au lieu deMax@#-Min@#
. Sinon, il implémente juste la spécification très littéralement.la source
Perl 6 ,
5248 octetsEssaye-le
Essaye-le
Étendu:
la source
Haskell ,
8584 octetsEssayez-le en ligne! Utilise la somme des valeurs absolues comme maximum de la réponse de Martin Ender .
Edit: -1 octet grâce à Ørjan Johansen.
Explication:
la source
Husk , 13 octets
Essayez-le en ligne!
la source
R ,
7572 octetsEssayez-le en ligne!
Utilise
table
pour calculer les comptes de chaque module entierx
. L'écart typesd
d'un ensemble de nombres est égal à zéro s'ils sont tous égaux et positifs sinon. C'est!sd(table(L%%x))
doncTRUE
oùL
est mod mod-équilibréx
et faux sinon. Ces valeurs sont ensuite concaténées dansF
.which
renvoie ensuite les indices des valeurs vraies de la fonction. Puisque R utilise l'indexation basée sur 1 etF
est initialement un vecteur de longueur un avec valeurFALSE
, cela renverra correctement les valeurs commençant par2
.On pourrait s'attendre à ce que la fonction intégrée
range
calcule la plage d'un ensemble de données , c'est-à-diremax(D)-min(D)
, mais malheureusement, elle calcule et renvoie le vecteurc(min(D), max(D))
.la source
Nettoyer , 121 octets
Utilise l'astuce de la somme des absolus de la réponse de Martin Ender.
Golfé:
Lisible:
Essayez-le en ligne!
la source
Gelée , 12 octets
Essayez-le en ligne!
Merci à user202729 pour avoir sauvegardé un octet et à Martin Ender (indirectement) pour avoir sauvegardé un octet.
Comment ça fonctionne
Une alternative à une ligne de 12 octets peut être essayée en ligne!
la source
AS
(S
euh deA
bsolutes).ḟ0
n'est pas nécessaire dans le chat .Python 3,
120102 octetsPas assez golfique.
-18 octets grâce à M. Xcoder .
Essayez-le en ligne!
la source
MATL , 19 octets
-4 octets grâce à Luis Mendo!
Essayez-le en ligne!
Port de ma réponse dans R .
la source
S5L)d
au lieu deX>GX<-
et8#u
au lieu deFFFT#u
[1 0]
(mais je savais que c'était possible) donc5L
c'est pratique, et je*still* really need to go and properly read the docs for
# `:( mais merci!#
, la spécification d'un nombre supérieur au nombre maximal de sorties sélectionne simplement les sorties individuelles. Avec la fonction,u
le maximum est4
,5#u
estT#u
,6#u
estFT#u
etc.JavaScript (ES6), 117 octets
Génère une liste de valeurs séparées par des espaces.
Cas de test
Afficher l'extrait de code
la source
Clojure, 91 octets
L'utilisation
frequencies
n'est pas idéale dans le golf de code.la source
J, 38 octets
Le mérite revient à M. Xcoder pour la somme des valeurs absolues.
Modifiez-le dans un lien TIO si vous le souhaitez - je l'ai joué un peu rapidement.
Explication et lien TIO à venir (ish).
la source
APL (Dyalog) ,
43413830 octetsLes ⍨ dans le code racontent toute l'histoire.
8 octets économisés grâce à @ Adám
Essayez-le en ligne!
la source
∊x⊆⍨1=⊂(≢∘∪1⊥|∘.=|)¨⍨x←1+∘⍳1⊥|