Die heutige Herausforderung ist einfach: Ohne Eingabe eine gültige Sudoku-Karte ausgeben.
Falls Sie mit Sudoku nicht vertraut sind, beschreibt Wikipedia, wie ein gültiges Forum aussehen sollte :
Das Ziel besteht darin, ein 9 × 9-Raster mit Ziffern zu füllen, sodass jede Spalte, jede Zeile und jedes der neun 3 × 3-Teilraster, aus denen das Raster besteht (auch als "Felder", "Blöcke" oder "Regionen" bezeichnet), enthält alle Ziffern von 1 bis 9.
Hier ist die Sache ... Es gibt 6.670.903.752.021.072.936.960 verschiedene gültige Sudoku-Boards . Einige von ihnen sind möglicherweise sehr schwer zu komprimieren und in weniger Bytes auszugeben. Andere von ihnen können einfacher sein. Ein Teil dieser Herausforderung besteht darin, herauszufinden, welche Karten am komprimierbarsten sind und in den wenigsten Bytes ausgegeben werden können.
Ihr Beitrag muss nicht jedes Mal dasselbe Board ausgeben. Wenn jedoch mehrere Ausgänge möglich sind, müssen Sie beweisen, dass jeder mögliche Ausgang eine gültige Karte ist.
Sie können dieses Skript (dank Magic Octopus Urn) oder eine dieser Antworten verwenden , um zu überprüfen, ob ein bestimmtes Raster eine gültige Lösung ist. Es wird ein [1]
für eine gültige Karte und alles andere für eine ungültige Karte ausgegeben .
Ich bin nicht sehr wählerisch, in welchem Format Sie Ihre Antwort ausgeben, solange es eindeutig zweidimensional ist. Sie können beispielsweise eine 9x9-Matrix, neun 3x3-Matrizen, eine Zeichenfolge, ein Array von Zeichenfolgen, ein Array von 9-stelligen Ganzzahlen oder neun 9-stellige Zahlen mit einem Trennzeichen ausgeben. Die Ausgabe von 81 Ziffern in einer Dimension ist nicht zulässig. Wenn Sie etwas über ein bestimmtes Ausgabeformat wissen möchten, können Sie mich gerne in den Kommentaren fragen.
Wie üblich ist dies Codegolf , schreiben Sie also die kürzeste Antwort, die Sie finden können, in die Sprache (n) Ihrer Wahl!
quelle
Antworten:
Pyth,
22141210 Bytes2 Bytes gespart dank Mr. Xcoder.
Probieren Sie es hier aus
quelle
m.<S9d%D3 9
..<LS9%D3 9
.Python 2 , 47 Bytes
Probieren Sie es online!
quelle
T-SQL,
9689 BytesFand einen kürzer als die triviale Ausgabe!
Extrahiert Zeichenfolgen mit 9 Zeichen, die an verschiedenen Punkten beginnen, wie in der von erstellten In-Memory-Tabelle definiert
STRING_SPLIT
(die in SQL 2016 und höher unterstützt wird). Das0+value
war der kürzeste Weg, wie ich eine implizite Umwandlung in eine Ganzzahl durchführen konnte.Ursprüngliche triviale Ausgabe (96 Bytes):
quelle
Gelee , 7 Bytes
Probieren Sie es online!
Und ein bisschen davon ...
-1 danke an Jonathan Allan (überlegt?)
quelle
Python 2 , 53 Bytes
Probieren Sie es online!
Alternativen:
Python 2 , 53 Bytes
Probieren Sie es online!
Python 2 , 54 Bytes
quelle
Python 3 ,
58-55BytesProbieren Sie es online!
Die Elemente der Bytekette ergeben am Ende die Zahlen, mit
[1, 4, 7, 2, 5, 8, 3, 6, 9]
denen die Rotationen von permutiert werden[0..9]
. Das0
wird in entfernt,l[1:i]
und es ist kein Null-Byte erforderlich, das zwei Zeichen (\0
) für die Darstellung in einem Byte-Objekt benötigt.55 Bytes
quelle
Gelee ,
98 BytesProbieren Sie es online!
quelle
Batch, 84 Bytes
Verwendet die Ausgabe von @ Mnemonic.
call
wird verwendet, um die Variable in die Slicing-Operation zu interpolieren (normalerweise akzeptiert sie nur numerische Konstanten).quelle
JavaScript (Node.js) , 47 Byte
Ausgabe als Array der Zeilen.
Probieren Sie es online!
Erzeugt dies:
quelle
Perl 6 ,
40 3227 Bytes-5 bytes dank nwellnhof
Probieren Sie es online!
Anonymer Codeblock, der eine 9x9-Matrix zurückgibt. Ordnet jede Zeile einer anderen Drehung des Bereichs 1 bis 9 zu.
quelle
J , 18 Bytes
Probieren Sie es online!
Ausgabe
Wie es funktioniert
Ausgefallene Version, 23 Bytes
Probieren Sie es online!
Ausgabe:
Wie es funktioniert
quelle
05AB1E ,
1412 Bytes-2 Bytes durch Erstellen eines Ports von @Mnemonics Pyth-Antwort .
Probieren Sie es online aus. (Die Fußzeile wird hinzugefügt, um sie hübsch auszudrucken. Das tatsächliche Ergebnis ist eine 9x9-Matrix. Sie können die Fußzeile auch entfernen, um sie zu sehen.)
Erläuterung:
Ursprüngliche 14- Byte- Lösung:
Probieren Sie es online aus. (Die Fußzeile wird hinzugefügt, um sie hübsch auszudrucken. Das tatsächliche Ergebnis ist eine 9x9-Matrix. Sie können die Fußzeile auch entfernen, um sie zu sehen.)
Erläuterung:
Beide Antworten ergeben das Sudoku:
quelle
Octave & Matlab,
504829 BytesProbieren Sie es online!
-2 danke an Johnathon frech
-14 Dank an Sanchises Broadcast Hinzufügungsvorschlag, der auch auf die Nichtkompatibilität hinwies.
-5, indem festgestellt wird, dass der Vektor mit einer Zeichenfolge und einer Transposition in matlab geschrieben werden kann.
War intuitiv, jetzt nicht so. Verwendet die Broadcast-Summierung, um 1: 9 auf 9 Zeilen zu verteilen, verteilt nach Werten, die durch die Zeichenfolge bestimmt werden.
Sudoku Board hergestellt:
quelle
Haskell , 41 Bytes
Probieren Sie es online!
quelle
s=
da es nicht notwendig istJava 10,
8275 Bytes-7 Bytes, indem Sie einen Port für eine der Python 2-Antworten von @TFeld erstellen .
Probieren Sie es online aus.
Erläuterung:
Gibt das folgende Sudoku aus (Leerzeichen anstelle von Zeilenumbrüchen wie unten):
quelle
Python - 81 Bytes
Probieren Sie es online
Ich mag 81 Bytes, aber nach einigem Optimieren :(
Python 2 -
75 68 5958 Bytes-7 Bytes dank @DLosc
-9 Bytes dank @Mnemonic
-1 Byte dank @JoKing
Probieren Sie es online
quelle
r=range(1,10)
aber ich konnte die Schönheit nicht ruinierenl
Ruby , 34 Bytes
Probieren Sie es online!
quelle
R , 54 Bytes
Ausgabe:
Probieren Sie es online!
quelle
Vielen Dank an @Shaggy!
JavaScript (Node.js) , 61 Byte
Probieren Sie es online!
quelle
MathGolf ,
1611 BytesProbieren Sie es online!
5 Bytes gespart dank JoKing
quelle
Canvas ,
1311 BytesProbieren Sie es hier aus!
quelle
C (clang) , 65 Bytes
Die Funktion kann jetzt wieder verwendet werden
Probieren Sie es online!
quelle
f(); f()
dieselbe Karte zweimal ausgegeben wird, aber nicht, wenn der zweite Aufruf überhaupt nicht funktioniert.f(i){for(i=81;i--;)printf("%d%c",(i/9*10/3+i)%9+1,i%9?9:10);}
K (ngn / k) , 16 Bytes
Probieren Sie es online!
Erste Antwort in ngn / k, mit großer Hilfe des Mannes selbst, @ngn.
Wie:
quelle
Japt,
1110 BytesProbieren Sie es aus oder überprüfen Sie die Ausgabe
Erläuterung
quelle
Holzkohle , 14 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Verwendet die Ausgabe von @ Mnemonic. Erläuterung:
quelle