O código mais curto para passar todas as possibilidades ganha
Muitos jogos baseados em grade foram criados que começam com uma grade de luzes acesas. Pressionar qualquer uma das luzes faz com que essa luz e as quatro luzes adjacentes sejam alternadas. Quando uma luz é alternada, ela é desligada ou ligada, dependendo se foi ativada ou desativada. O objetivo é acertar as luzes em uma sequência que resulta no desligamento de todas as luzes no final.
"X" representa luzes acesas. "O" representa luzes que estão desligadas. "P" representa o quadrado pressionado.
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
A entrada pode ser obtida diretamente de um arquivo passado como argumento ou como entrada padrão. A primeira linha de entrada conterá x (1 <= x <= 20), o tamanho da grade de luzes, ou seja, x por x . A segunda linha conterá y (0 <= y <= ( x * 3) 2 ), o número de luzes inicialmente acesas. As próximas linhas y contêm coordenadas de luzes acesas na grade, no formato de "coluna de linha". As luzes que já estão acesas (foram alternadas anteriormente) devem ser apagadas novamente. A próxima linha conterá z , o número de luzes pressionadas. O z final as linhas contêm coordenadas das luzes pressionadas, na ordem em que foram pressionadas, no formato de "coluna de linha".
Nenhuma entrada estará incorreta. Todos os números estarão dentro dos limites especificados da grade.
A saída será a grade final após todas as luzes terem sido trocadas. Deve ser um n por n grid. Para cada área com uma luz acesa, deve ser usado o caractere maiúsculo "X". Para cada área com luz apagada, o caractere maiúsculo "O" deve ser usado.
As luzes afetadas que estão fora da grade devem ser ignoradas. Alternar uma luz na borda de uma grade deve afetar apenas as luzes que estão na própria grade.
Casos de teste
Entrada
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
Resultado
OXOO
XOXO
XOXO
OXOO
Entrada
1
3
1 1
1 1
1 1
2
1 1
1 1
Resultado
X
fonte
exec
é uma palavra-chave, não uma função interna (no Python 2.x), portanto, não há necessidade de parênteses extras.Ruby 1.9, 167 caracteres
Editar% s:
z[u]*=-1
vez dez[u]=-z[u]
, remova a variável não utilizadafonte
Perl, 139 caracteres
Explicação:
fonte
APL (71)
fonte