LIGHTSOUT RGB* Apague todas as lâmpadas

Bruno Ribas, Bruno Ribeiro, Igor Penha, Lucas Bergholz e Wagner Cunha

Descrição do jogo

O jogo LightsOut é um quebra-cabeça eletrônico lançado pela Tiger Electronics em 1995. No jogo físico, há uma matriz de luzes que podem estar ligadas ou desligadas. O objetivo é desligar todas as luzes, porém, ao pressionar uma luz, seu estado e o estado das luzes adjacentes são invertidos.

A história por trás do jogo é que, em uma noite escura, todas as luzes da cidade de Lightsville apagaram repentinamente. Para restaurar a luz na cidade, o jogador assume o papel de um engenheiro elétrico encarregado de restaurar a energia nas ruas iluminadas. O desafio está em encontrar a sequência correta de cliques para trazer a luz de volta a todas as ruas.

Com a popularização dos dispositivos eletrônicos e a evolução dos jogos digitais, o LightsOut foi adaptado para várias plataformas, como computadores, smartphones e tablets. A essência do jogo permanece a mesma: resolver o quebra-cabeça desligando todas as luzes da matriz.

Nesta versão modificada do jogo LightsOut, introduzimos a versão LightsOut RGB, aqui as luzes do jogo não estão restritas à apenas dois estados (ON/OFF) mas sim, quatro estados possíveis (RED, GREEN, BLUE e OFF). Outrossim, não só as luzes adjacentes são invertidos, mas todas as luzes que estiverem na mesma linha e coluna da luz inicialmente clicada. Todavia, foi introduzido também a característica de botões quebrados. Essa modificação foi inspirada em jogos físicos que foram muito usados, desse modo, alguns botões podem apresentar diferentes comportamentos em resposta as ações executadas. Exitem quatro tipos de botões quebrados:

  1. Os que não mudam de estado quando clicados. No entanto, as luzes adjacentes, mesma linha e coluna, ainda são afetadas e trocariam de estado.
  2. Os que não mudam de estado como consequência do clique de um botão em mesma coluna. No entanto, mudam de estado quando clicados ou como conseqência do clique de um botão em mesma linha.
  3. Os que não mudam de estado como consequência do clique de um botão em mesma linha. No entanto, mudam de estado quando clicados ou como conseqência do clique de um botão em mesma coluna.
  4. Os que não mudam de estado como consequência nem do clique de um botão em mesma linha nem em mesma coluna. No entando, mudam de estado quando clicados.

Descrição do problema

Você desenvolver um programa que leia a especificação do desafio, gere o modelo PDDL do jogo LightsOut RGB, crie os arquivos de domínio e problema PDDL correspondentes, chame o planejador selecionado com os parâmetros corretos, obtenha o plano retornado pelo planejador e gere uma saída no formato especificado na descrição do trabalho.

Descrição dos planejadores

Existem vários planejadores disponíveis para resolver o problema do jogo LightsOut. A localização e a forma de chamada dos planejadores são as seguintes:

  1. Planejadores Madagascar (M, Mp, MpC):
  2. Fast Downward:
  3. Planejador em Julia:

Como classificar nesta modalidade

Nesta modalidade de classificação, o problema é dividido em três categorias: AGILE, SATISFICING e OPTIMAL. A pontuação é computada da seguinte forma:

  1. Categoria AGILE:
  2. Categoria SATISFICING:
  3. Categoria OPTIMAL:

O vencedor será determinado com base na soma dos pontos obtidos em todas as categorias.

Entrada

A entrada é composta com um conjunto de linhas, e deverão ser lidas da entrada padrão. As linhas, da entrada, representam a matriz do jogo, você descobrirá as dimensões conforme faz a leitura. A entrada termina em EOF.

Cada lâmpada/botão é representado por dois caracteres, um representando a condição (tipo que quebra) do botão e outro o estado atual da luz, nessa ordem, conforme a descrição abaixo:

Saída

A saída é composta por uma única linha contendo as coordenadas dos botões apertados, em ordem, a fim de obter todas as lâmpadas apagadas. Cada clique é representado pelo plano cartesiano (y, x), sendo y a linha, iniciando em 00, e x a coluna, iniciando em 00, e separados pelo caractere ; , exceto pelo último, que deverá possuir apenas uma quebra de linha.

Exemplo

Exemplo de entrada

*W-R-R-B
-R|W-W-G
-B-G_G-G
-R-W-W#W

Saída para o exemplo de entrada acima

(click 2 3);(click 2 3);(click 0 0);(click 0 0);(click 0 0)

Experimente você mesmo

Matriz Clicável

Author: Lights out game, mojificado por Bruno Ribas Bruno Ribeiro, Igor Penha, Lucas Bergholz e Wagner Cunha