Einführung
Angenommen, ich habe eine Liste von ganzen Zahlen, sagen wir L = [-1,2,2,1,2,7,1,4] . Ich mag Balance in meinem Leben, deshalb bin ich froh zu sehen, dass es so viele seltsame Elemente wie gerade Elemente hat. Darüber hinaus enthält es in allen Modulo-Klassen von 3 die gleiche Anzahl von Elementen, in denen es Elemente enthält:
[-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
Leider gilt dies für die Modulo-Klassen von 4 nicht mehr. Im Allgemeinen sagen wir, dass eine nicht leere Liste ausgeglichenes Modulo N ist, wenn sie eine gleiche Anzahl von Elementen in allen Moduloklassen von N hat, für die diese Zahl nicht 0 ist. Die obige Liste L ist ausgeglichenes Modulo 2 und 3, aber unsymmetrisches Modulo 4.
Die Aufgabe
Ihre Eingabe ist eine nicht leere Liste L von ganzen Zahlen, die in einem angemessenen Format erstellt wurden. Ihre Ausgabe ist die Liste dieser ganzen Zahlen N ≥ 2, so dass L modulo N ausgeglichen ist , wiederum in jedem vernünftigen Format. Die Reihenfolge der Ausgabe spielt keine Rolle, sie sollte jedoch keine Duplikate enthalten.
Es ist garantiert, dass die Ausgabe nur endlich viele Zahlen enthält, was genau bedeutet, dass nicht alle Elemente von L gleich oft darin vorkommen. Beispiele für ungültige Eingaben sind [3] , [1,2] und [0,4,4,0,3,3] . Beachten Sie, dass die größte Zahl in der Ausgabe höchstens max (L) - min (L) beträgt .
Die niedrigste Byteanzahl in jeder Sprache gewinnt, und es gelten die Standardregeln für Code-Golf .
Testfälle
[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]
Antworten:
05AB1E , 11 Bytes
Probieren Sie es online!
quelle
Wolfram Language (Mathematica) ,
5652 BytesDanke an Not a tree für das Speichern von 4 Bytes.
Probieren Sie es online!
Der Haupttrick beim Golfen besteht darin, die
Summe der Absolutwerte (oder die 1-Norm)der quadrierten Werte, die als Skalarprodukt mit sich selbst berechnet wurden, als Obergrenze anstelle von zu verwendenMax@#-Min@#
. Ansonsten wird die Spezifikation nur sehr wörtlich umgesetzt.quelle
Perl 6 ,
5248 BytesProbier es aus
Probier es aus
Erweitert:
quelle
Haskell ,
8584 BytesProbieren Sie es online! Verwendet die Summe der absoluten Werte als Maximum aus Martin Enders Antwort .
Edit: -1 Byte danke an Ørjan Johansen.
Erläuterung:
quelle
Schale , 13 Bytes
Probieren Sie es online!
quelle
R ,
7572 BytesProbieren Sie es online!
Verwendet
table
, um die Anzahl der einzelnen Ganzzahlmodule zu berechnenx
. Die Standardabweichungsd
einer Reihe von Zahlen ist Null, wenn sie alle gleich sind, und ansonsten positiv. Daher!sd(table(L%%x))
istTRUE
überallL
mod-balanciertx
und sonst falsch. Diese Werte werden dann in verkettetF
.which
gibt dann die Indizes der wahren Werte von der Funktion zurück. Da R eine 1-basierte Indizierung verwendet undF
anfänglich ein Vektor der Länge eins mit Wert istFALSE
, gibt dies Werte zurück, die mit beginnen2
.Man könnte die eingebaute Funktion erwarten
range
die zur Berechnung Bereich eines Datensatzes , das heißtmax(D)-min(D)
, aber leider es berechnet und gibt den Vektorc(min(D), max(D))
.quelle
Sauber , 121 Bytes
Verwendet die Summe der absoluten Tricks aus Martin Enders Antwort.
Golf gespielt:
Lesbar:
Probieren Sie es online!
quelle
Gelee , 12 Bytes
Probieren Sie es online!
Vielen Dank an user202729 für das Speichern eines Bytes und an Martin Ender (indirekt) für das Speichern eines Bytes.
Wie es funktioniert
Eine einzeilige Alternative 12-Byte kann online ausprobiert werden!
quelle
AS
(S
ähm vonA
bsolutes).ḟ0
dies im Chat nicht benötigt wird .Python 3,
120102 BytesNicht ganz so golfen.
-18 Bytes dank Mr. Xcoder .
Probieren Sie es online!
quelle
MATL , 19 Bytes
-4 Bytes dank Luis Mendo!
Probieren Sie es online!
Port meiner Antwort in R .
quelle
S5L)d
anstelle vonX>GX<-
und8#u
anstelle vonFFFT#u
[1 0]
(aber ich wusste, dass es möglich ist), so5L
ist es praktisch, und ich*still* really need to go and properly read the docs for
# `:( aber danke!#
eine Zahl angeben, die größer als die maximale Anzahl von Ausgängen ist, werden nur einzelne Ausgänge ausgewählt. Mit der Funktionu
ist das Maximum4
, so5#u
istT#u
,6#u
istFT#u
usw.JavaScript (ES6), 117 Byte
Gibt eine durch Leerzeichen getrennte Liste von Werten aus.
Testfälle
Code-Snippet anzeigen
quelle
Clojure, 91 Bytes
Verwenden
frequencies
ist im Code-Golf nicht ideal.quelle
J, 38 Bytes
Die Summe der absoluten Werte wird Herrn Xcoder gutgeschrieben.
Bearbeiten Sie in einem TIO-Link, wenn Sie möchten.
Erklärung und TIO-Link folgen in Kürze (ish).
quelle
APL (Dyalog) ,
43413830 BytesDas ⍨s im Code erzählt die ganze Geschichte.
8 Bytes gespart dank @ Adám
Probieren Sie es online!
quelle
∊x⊆⍨1=⊂(≢∘∪1⊥|∘.=|)¨⍨x←1+∘⍳1⊥|