Le code le plus court pour passer toutes les possibilités gagne
De nombreux jeux basés sur la grille ont été créés et commencent par une grille de lumières allumées. Appuyer sur l'une des lumières fait basculer cette lumière et les quatre lumières adjacentes. Lorsqu'une lumière est basculée, elle est éteinte ou allumée, selon qu'elle a été allumée ou éteinte initialement. Le but est de frapper les lumières dans une séquence qui aboutit à ce que toutes les lumières soient éteintes à la fin.
"X" représente les lumières allumées. "O" représente les lumières éteintes. "P" représente ce carré qui est pressé.
XOO XOO XOX XOX XXX
XOX XOP -> XXO -> OPO -> XOX
OOX OOX POO XXO XOO
Intial Grid Press 1 Press 2 Press 3 Ending Grid
L'entrée peut être prise directement à partir d'un fichier passé en argument ou en entrée standard. La première ligne d'entrée contiendra x (1 <= x <= 20), la taille de la grille de lumières, signifiant x par x . La deuxième ligne contiendra y (0 <= y <= ( x * 3) 2 ), le nombre de lumières initialement allumées. Les lignes y suivantes contiennent les coordonnées des lumières allumées sur la grille, au format de "colonne de ligne". Les lumières qui sont déjà allumées (ont été basculées précédemment) doivent être à nouveau désactivées. La ligne suivante contiendra z , le nombre de lumières appuyées. Le z final les lignes contiennent les coordonnées des lumières pressées, dans l'ordre où elles ont été pressées, au format de "colonne de ligne".
Aucune entrée ne sera incorrecte. Tous les nombres seront dans les limites données de la grille.
La sortie sera la grille finale après que toutes les lumières ont été basculées. Ce devrait être une grille n par n . Pour chaque zone dont la lumière est allumée, le caractère majuscule "X" doit être utilisé. Pour chaque zone dont la lumière est éteinte, le caractère majuscule "O" doit être utilisé.
Les lumières affectées qui sont hors du réseau doivent être ignorées. Le basculement d'une lumière sur le bord d'une grille ne devrait affecter que les lumières qui sont sur la grille elle-même.
Cas de test
Contribution
4
5
2 3
2 4
3 1
3 4
4 3
7
3 3
4 4
3 4
4 2
4 1
2 2
3 2
Production
OXOO
XOXO
XOXO
OXOO
Contribution
1
3
1 1
1 1
1 1
2
1 1
1 1
Production
X
la source
exec
est un mot-clé, pas une fonction intégrée (en Python 2.x), donc pas besoin de ces parenthèses supplémentaires.Ruby 1.9, 167 caractères
Modifications:
z[u]*=-1
place dez[u]=-z[u]
, supprimez la variable inutiliséela source
Perl, 139 caractères
Explication:
la source
APL (71)
la source