Le défi d'aujourd'hui est simple: sans prendre aucune entrée, sortir n'importe quelle carte sudoku valide.
Dans le cas où vous n'êtes pas familier avec le sudoku, Wikipedia décrit à quoi devrait ressembler un tableau valide :
L'objectif est de remplir une grille 9 × 9 avec des chiffres afin que chaque colonne, chaque ligne et chacune des neuf sous-grilles 3 × 3 qui composent la grille (également appelées "boîtes", "blocs" ou "régions") contiennent tous les chiffres de 1 à 9.
Maintenant, voici la chose ... Il existe 6 670 903 752 021 022 936 960 différents conseils sudoku valides . Certains d'entre eux peuvent être très difficiles à compresser et à produire en moins d'octets. D'autres peuvent être plus faciles. Une partie de ce défi consiste à déterminer quelles cartes seront les plus compressibles et pourraient être sorties dans le moins d'octets.
Votre soumission ne doit pas nécessairement produire la même carte à chaque fois. Mais si plusieurs sorties sont possibles, vous devrez prouver que chaque sortie possible est une carte valide.
Vous pouvez utiliser ce script (grâce à Magic Octopus Urn) ou l' une de ces réponses pour vérifier si une grille particulière est une solution valide. Il produira un [1]
pour une carte valide et tout le reste pour une carte non valide.
Je ne suis pas trop pointilleux sur le format dans lequel vous produisez votre réponse, tant qu'il est clairement bidimensionnel. Par exemple, vous pouvez générer une matrice 9x9, neuf matrices 3x3, une chaîne, un tableau de chaînes, un tableau d'entiers à 9 chiffres ou neuf nombres à 9 chiffres avec un séparateur. La sortie de 81 chiffres dans 1 dimension ne serait pas autorisée. Si vous souhaitez connaître un format de sortie particulier, n'hésitez pas à me le demander dans les commentaires.
Comme d'habitude, il s'agit de code-golf , alors écrivez la réponse la plus courte que vous pouvez trouver dans la ou les langues de votre choix!
la source
Réponses:
Pyth,
22141210 octetsEnregistré 2 octets grâce à M. Xcoder.
Essayez-le ici
la source
m.<S9d%D3 9
..<LS9%D3 9
.Python 2 , 47 octets
Essayez-le en ligne!
la source
T-SQL,
9689 octetsTrouvé un plus court que la sortie triviale!
Extrait des chaînes de 9 caractères commençant à différents points, comme défini par la table en mémoire créée par
STRING_SPLIT
(qui est prise en charge sur SQL 2016 et versions ultérieures). Le0+value
était le plus court chemin que je pouvais faire un casting implicite entier.Sortie triviale d'origine (96 octets):
la source
Gelée , 7 octets
Essayez-le en ligne!
Et un peu de cela ...
-1 grâce à Jonathan Allan (la réflexion?)
la source
Python 2 , 53 octets
Essayez-le en ligne!
Alternatives:
Python 2 , 53 octets
Essayez-le en ligne!
Python 2 , 54 octets
la source
Python 3 ,
5855 octetsEssayez-le en ligne!
Les éléments de la chaîne d'octets finissent par donner les nombres
[1, 4, 7, 2, 5, 8, 3, 6, 9]
qui sont utilisés pour permuter les rotations de[0..9]
. Le0
est supprimél[1:i]
et il n'est pas nécessaire qu'un octet nul prenne deux caractères (\0
) pour représenter dans un objet octets.55 octets
la source
Gelée ,
98 octetsEssayez-le en ligne!
la source
Lot, 84 octets
Utilise la sortie de @ Mnemonic.
call
est utilisé pour interpoler la variable dans l'opération de découpage (normalement, il n'accepte que les constantes numériques).la source
JavaScript (Node.js) , 47 octets
Sortie sous forme de tableau de lignes.
Essayez-le en ligne!
Génère ceci:
la source
Perl 6 ,
40 3227 octets-5 octets grâce à nwellnhof
Essayez-le en ligne!
Bloc de code anonyme qui renvoie une matrice 9x9. Mappe chaque ligne sur une rotation différente de la plage de 1 à 9.
la source
J , 18 octets
Essayez-le en ligne!
Sortie
Comment ça marche
Version fantaisie, 23 octets
Essayez-le en ligne!
Sortie:
Comment ça marche
la source
05AB1E ,
1412 octets-2 octets en créant un port de @Mnemonic réponse Pyth s » .
Essayez-le en ligne. (Le pied de page est ajouté pour l'imprimer. Le résultat réel est une matrice 9x9; n'hésitez pas à retirer le pied de page pour voir.)
Explication:
Solution originale de 14 octets :
Essayez-le en ligne. (Le pied de page est ajouté pour l'imprimer. Le résultat réel est une matrice 9x9; n'hésitez pas à retirer le pied de page pour voir.)
Explication:
Les deux réponses donnent le Sudoku:
la source
Octave et Matlab,
504829 octetsEssayez-le en ligne!
-2 grâce à Johnathon frech
-14 grâce à la suggestion d'ajout de Sanchises Broadcast, qui a également souligné la non-compatibilité.
-5 en remarquant que le vecteur peut être écrit en matlab avec une chaîne de caractères et une transposition.
Était intuitif, maintenant non. Utilise la sommation de diffusion pour répartir 1: 9 sur 9 lignes, réparties par des valeurs déterminées par la chaîne de caractères.
Carte Sudoku produite:
la source
Haskell , 41 octets
Essayez-le en ligne!
la source
s=
car il n'est pas nécessaireJava 10,
8275 octets-7 octets en créant un port d'une des réponses Python 2 de @TFeld .
Essayez-le en ligne.
Explication:
Génère le sudoku suivant (espace délimité au lieu des sauts de ligne comme ci-dessous):
la source
Python - 81 octets
Essayez-le en ligne
J'aime avoir 81 octets, mais après quelques optimisations :(
Python
2-75 68 5958 octets-7 octets grâce à @DLosc
-9 octets grâce à @Mnemonic
-1 octet grâce à @JoKing
Essayez-le en ligne
la source
r=range(1,10)
mais je ne pouvais pas ruiner la beautél
Rubis , 34 octets
Essayez-le en ligne!
la source
R , 54 octets
Sortie:
Essayez-le en ligne!
la source
Un grand merci à @Shaggy!
JavaScript (Node.js) , 61 octets
Essayez-le en ligne!
la source
MathGolf ,
1611 octetsEssayez-le en ligne!
5 octets enregistrés grâce à JoKing
la source
Toile ,
1311 octetsEssayez-le ici!
la source
C (clang) , 65 octets
La fonction peut désormais être réutilisée
Essayez-le en ligne!
la source
f(); f()
sort deux fois la même carte, mais pas si le deuxième appel ne fonctionne pas du tout.f(i){for(i=81;i--;)printf("%d%c",(i/9*10/3+i)%9+1,i%9?9:10);}
K (ngn / k) , 16 octets
Essayez-le en ligne!
Première réponse en ngn / k, faite avec une grande aide de l'homme lui-même, @ngn.
Comment:
la source
Japt,
1110 octetsEssayez-le ou vérifiez la sortie
Explication
la source
Fusain , 14 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Utilise la sortie de @ Mnemonic. Explication:
la source