Der Xorspace einer Menge von Ganzzahlen ist die Menge aller Ganzzahlen, die durch Kombinieren der Start-Ganzzahlen mit dem üblichen bitweisen xor-Operator ( ^
) erhalten werden können. Zum Beispiel kann die xorspace von (8, 4)
IST (0, 4, 8, 12)
: 0 4 ^ 4, 12 4 ^ 8, und es wird keine andere Zahlen erreicht werden können. Beachten Sie, dass die Startnummern nach dieser Definition immer enthalten sind (z. B. 4 ist 4 ^ 4 ^ 4).
Ihr Ziel ist es, das kürzeste Programm zu schreiben, das eine Liste nicht negativer Ganzzahlen als Eingabe verwendet und die Anzahl der Elemente in ihrem Xorspace ausgibt.
- Standardlücken sind verboten.
- Die Ein- und Ausgabe kann in einem der üblichen Formate erfolgen . Die Eingabe ist garantiert gültig, nicht leer und ohne Duplikate.
- Ihr Code sollte in der Lage sein, alle Testfälle in weniger als einem Tag zu verarbeiten .
Testfälle
Input: 0
Output: 1
Input: 6
Output: 2
Input: 8 4
Ouput: 4
Input: 0 256
Output: 2
Input: 256 259 3
Output: 4
Input: 60 62 94 101 115
Output: 32
Input: 60 62 94 101 115 40 91
Output: 32
Input: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
Output: 64
Input: 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384
Output: 32768
l{mxFdy
.y
für den Testfall 1 bis 63 ist viel zu langsam. Ich habe keinen 2 ^ 63 Speicher.MATL , 11 Bytes
Probieren Sie es online!
Der letzte Testfall wird aufgrund von Speicherbeschränkungen nicht im Online-Interpreter ausgeführt, sondern auf einem modernen Computer in weniger als 2 Sekunden offline ausgeführt.
Erläuterung
Bei der Eingabe der Größe
n
geschieht Folgendes:n
Zeiten:Kommentierter Code.
Beispiel
Die Zwischenergebnisse (Schritte 2.1 und 2.3) für die Eingabe
[256 259 3]
sind:Erste Iteration:
[256 259 3]
mit[256 259 3]
: Berechnung aller Paare von bitweisem XOR ergibt die MatrixAnhängen
[256 259 3]
und DeduplizierenZweite Iteration: aktuelles Ergebnis
[0 3 259 256]
mit[256 259 3]
. Nach dem Deduplizieren ergibt dies wiederDritte Iteration: wieder
Die Ausgabe ist also
4
(Anzahl der Einträge des Ergebnisses).quelle
M
. Die Größe des Vektors der Zwischenergebnisse überschreitet also nieM
, und die Komplexität ist O (M*M
). Das OP hat gesagt, dass die genaue Definition vonn
keine Rolle spielt. Wenn ich also definiere,n
wieM
ich behaupten kann, ist dies O (n*n
).Haskell , 64 Bytes
f
Nimmt eine Liste von ganzen Zahlen und gibt eine ganze Zahl zurück.Probieren Sie es online!
Dies behandelt keine leere Liste, dafür können Sie aber
$0:
statt des Leerzeichens nachmaximum
.Wie es funktioniert
m
der Liste Null ist, wird 1 zurückgegeben.quelle
Mathematica, 52 Bytes
quelle
05AB1E , 8 Bytes
Probieren Sie es online!
Alle Testfälle sind mit TIO in weniger als 1 Minute abgeschlossen.
quelle
2^n
Teil nicht gelesen : /âü^Ùg
erst, als ich sah, dass man mehr als einmal xor kann, nette Lösung.Python 2 , 55 Bytes
Probieren Sie es online!
Schlägt Funktionen aus:
Ørjan Johansens schöne Methode zur Zeilenbeseitigung ist ein Byte kürzer.
Python 2 , 54 Bytes
Probieren Sie es online!
quelle
Gelee ,
98 BytesBeendet alle Testfälle unter TIO in weniger als 8 Sekunden mit vernachlässigbarem Speicherbedarf.
Probieren Sie es online!
Wie es funktioniert
quelle
Python, 113 Bytes
quelle
u+=[c][c in s:]
was Ihrerif
Anweisung entspricht.