Jogo Lights Out

Arnaldo Gunzi
3 min readAug 2, 2023

--

O objetivo deste projeto é criar uma versão do jogo “Lights Out”, algo como “Apague as luzes”.

A partir de um painel inicial, 5×5, devo apagar todas as luzes. O amarelo indica aceso, azul significa apagado.

Implementei em Javascript — D3. Jogue aqui no link: https://asgunzi.neocities.org/ArteMatematica/luzes

Se eu tocar num quadrado, a célula tocada, as adjacentes superior, inferior, direita e esquerda mudam de estado: se apagadas ficam acesas, e vice-versa.

Por exemplo, digamos que eu toque bem no centro do tabuleiro, com todas as luzes apagadas. A peça do centro e as vizinhas de cima, de baixo, direita e esquerda se acenderão.

Para a inicialização, iniciamos com uma função que, aleatoriamente, atribui ligado ou desligado às luzes. Porém, nem todas as situações são resolvíveis. Somente um quarto dos tabuleiros inicializados desta maneira têm solução. Como saber qual terá ou não solução?

Usamos o teste descrito no paper de Anderson e Feil https://people.sc.fsu.edu/~jburkardt/classes/imps_2017/11_28/2690705.pdf

Se o produto escalar do tabuleiro e dois vetores especiais n1 e n2 der zero, na base 2, a configuração é resolvível.

var n1 = [[0, 1, 1, 1, 0], [1, 0, 1, 0, 1], [1, 1, 0, 1, 1], [1, 0, 1, 0, 1], [0, 1, 1, 1, 0]];

var n2 = [[1, 0, 1, 0, 1], [1, 0, 1, 0, 1], [0, 0, 0, 0, 0], [1, 0, 1, 0, 1], [1, 0, 1, 0, 1]];

Se o tabuleiro não tiver solução, reiniciamos e procuramos outra configuração, até achar alguma que tenha solução.

A cada inicialização, uma nova configuração resolvível será apresentada.

Spoiler: como resolver o jogo das luzes apagadas

Para a resolução do jogo das luzes apagadas, há um procedimento relativamente simples, chamado “caça às luzes”. Comece na segunda linha. Clique abaixo da luz da linha de cima, de forma a apagá-la. Repita, até chegar à última linha.

Na última linha, há algumas situações possíveis. Proceder da seguinte forma:

- Primeira, segunda e terceira células da última linha ligadas: clique na segunda célula da primeira linha

- Primeira, segunda, quarta e quinta células da última linha ligadas: clique na terceira célula da primeira linha

- Primeira, terceira e quarta células da última linha ligadas: clique na quinta célula da primeira linha

- Primeira e quinta células da última linha ligadas: clique na primeira e segunda células da primeira linha

- Segunda, terceira e quinta células da última linha ligadas: clique na primeira célula da primeira linha

- Segunda e quarta células da última linha ligadas: clique na primeira e quarta células da primeira linha

- Terceira, quarta e quinta células da última linha ligadas: clique na quarta célula da primeira linha

Daí, proceder o mesmo algoritmo de caça à luzes do passo 1, até resolver completamente!

Tabuleiro completamente resolvido!

Veja também:

O Jogo do Trim (ideiasesquecidas.com)

Lab. Matemática (ideiasesquecidas.com)

Originally published at https://ideiasesquecidas.com on August 2, 2023.

--

--

Arnaldo Gunzi
Arnaldo Gunzi

Written by Arnaldo Gunzi

Project Manager - Advanced Analytics, AI and Quantum Computing. Sensei of Analytics.

No responses yet