Depois de acordar em um quarto escuro, você vê uma grade retangular de luzes com os interruptores correspondentes. Você decide usar um sistema de coordenadas com a luz inferior esquerda representando (1,1) e as coordenadas aumentando à medida que você sobe (direção y) e para a direita (direção x). As grades são idênticas, ao acionar o interruptor em (a, b) alterna (desliga de ligado para ligado ou desligado) a luz em (a, b), bem como as luzes na mesma coluna ou na mesma linha que ( a, b)
Sua entrada será uma grade retangular de dois caracteres distintos, representando ativado e desativado (eu uso 1 e 0, respectivamente). Além disso, uma parte da entrada será uma série de pelo menos um par de coordenadas (com o formato e a separação desejados) que representará as opções que você inverte.
A saída será a mesma grade, com o "flip" aplicado em cada um dos pares de coordenadas que foram dados como entrada. Você pode escolher como formatar sua entrada, embora a saída deva ser uma grade, não uma matriz.
Amostras
Entrada de amostra 1
111111
111111
111111
111111
(3,2)
Saída de amostra 1
110111
110111
000000
110111
Entrada de amostra 2
01101
10100
00010
11111
10110
(1,1), (5,5)
Saída de amostra 2
00010
00101
10011
01110
01000
Entrada de amostra 3
1
(1,1)
Saída de amostra 3
0
Entrada de amostra 4
00000
11111
00000
11111
(2,3), (2,3)
Saída de amostra 4
00000
11111
00000
11111
Isso é código de golfe. Aplicam-se regras padrão. O menor código em bytes vence.
<grid><RETURN><coordinate_x><RETURN><coordinate_y><RETURN>
?Respostas:
CJam,
3736 bytesA entrada deve ter a grade primeiro, usando dois caracteres não NULL que diferem apenas no último bit (so
0
e1
work), seguido por uma lista de pares de coordenadas no estilo CJam.Teste aqui.
fonte
Dyalog APL, 20 bytes
Esta é uma função diádica que pega a grade inicial à direita e a lista de coordenadas à esquerda.
Para inserir um único par de coordenadas, use, por exemplo,
(⊂2 3)
como argumento à esquerda.Experimente aqui .
fonte
MATL , 39 bytes
A entrada é do seguinte formato (o exemplo corresponde à entrada de amostra 2 no desafio):
A primeira entrada é uma matriz que define a grade de
0
e1
.;
é o separador de linhas. A segunda entrada é uma matriz de pares de coordenadas, em que cada coluna é um par.Exemplo
Explicação
fonte
Ruby 114 bytes
Toma como entrada:
g
, uma matriz de matrizes representando a grade inicial.o
, uma matriz de pontos, cada ponto sendo uma matriz com dois elementos, como[x, y]
.fonte