Ce défi est inspiré de cette application .
Il s'agit d'une version beaucoup plus simple de ce défi . Ce défi est le code-golf , tandis que l'autre est le code le plus rapide .
Vous recevrez une grille de saisie carrée, de dimensions 6 par 6 qui est divisée en 6 zones, où les cellules de chaque zone ont un identifiant unique (j'utiliserai des lettres minuscules de af dans le texte ici, mais vous pouvez choisir ce que vous voulez, par exemple des entiers 1-6 ).
L'entrée peut ressembler à ceci (format d'entrée facultatif):
aabbbb
aabbbb
aaccbb
acccdb
ecccdb
eeefff
Ou, plus facile à visualiser:
Défi:
Vous devez placer 6 arbres dans ce parc, selon les règles suivantes:
- Il doit y avoir exactement 1 arbre par colonne et 1 arbre par ligne
- Toutes les zones doivent avoir exactement 1 arbre.
- Aucun arbre ne peut être adjacent à un autre arbre, verticalement, horizontalement ou en diagonale
La solution à la disposition ci-dessus est:
Remarque: il n'y a qu'une seule solution pour chaque puzzle
Règles supplémentaires:
- Les formats d'entrée et de sortie sont facultatifs
- La sortie pourrait par exemple être une liste d'indices, une grille avec 1/0 indiquant s'il y a un arbre à cette position, ou une version modifiée de l'entrée où les arbres sont indiqués
- Le temps d'exécution doit être déterministe
- Le programme doit se terminer en 1 minute sur un ordinateur portable moderne raisonnable
- Points de brownie si vous ne faites pas de force brute!
Cas de test:
aabbbb
aabbbb
aaccbb
acccdb
ecccdb
eeefff
---
aAbbbb
aabbbB
aaCcbb
acccDb
Ecccdb
eeeFff
----------
aabccc
aacccc
aaddce
aeeeee
aeeefe
eeeeee
---
aaBccc
aacccC
aadDce
Aeeeee
aeeeFe
eEeeee
----------
aaaabb
aacbbb
aadddb
addeef
ddddee
dddeee
---
aaaaBb
aaCbbb
Aadddb
addeeF
dDddee
dddEee
----------
abbbcd
abebcd
addddd
dddddd
effdff
eeffff
---
abBbcd
abebCd
Addddd
dddDdd
effdfF
eEffff
Mêmes cas de test sur un format un peu plus facile à analyser:
Test case 1:
[1,1,2,2,2,2;1,1,2,2,2,2;1,1,3,3,2,2;1,3,3,3,4,2;5,3,3,3,4,2;5,5,5,6,6,6]
Test case 2:
[1,1,2,3,3,3;1,1,3,3,3,3;1,1,4,4,3,5;1,5,5,5,5,5;1,5,5,5,6,5;5,5,5,5,5,5]
Test case 3:
[1,1,1,1,2,2;1,1,3,2,2,2;1,1,4,4,4,2;1,4,4,5,5,6;4,4,4,4,5,5;4,4,4,5,5,5]
Test case 4:
[1,2,2,2,3,4;1,2,5,2,3,4;1,4,4,4,4,4;4,4,4,4,4,4;5,6,6,4,6,6;5,5,6,6,6,6]
Réponses:
C,
223182 octetsPrend l'entrée comme argument dans le format donné dans la question. Écrit la sortie dans stdout sous la forme d'une grille de 0 avec 1 où les arbres vont.
Exemple de sortie:
Panne
C'est une adaptation de ma réponse à la version de code la plus rapide de cette question . N'a pas autant de court-circuit, mais il est suffisamment rapide pour les grilles 6x6.
la source
Clingo , 66 octets
Exécutez avec
clingo plant.lp - -c n=<n>
où<n>
est la taille de la grille. Le format d'entrée est une liste d'c(X,Y,Z).
états pour chaque cellule (X
,Y
) coloréeZ
, avec 1 ≤X
,Y
,Z
≤n
, séparés par des espaces en option. La sortie inclutt(X,Y)
pour chaque arbre en (X
,Y
).Démo
Pour rendre le format d'entrée / sortie plus facile à gérer, voici les programmes Python à convertir depuis et vers le format donné dans le défi.
Contribution
Production
la source