스위치 뒤집기


17

어두운 방에서 깨어 난 후에는 해당 스위치가있는 사각형의 그리드 그리드가 나타납니다. 왼쪽 아래 조명이 (1,1)을 나타내는 좌표계를 사용하기로 결정하고 올라 가면서 (y 방향) 오른쪽으로 (x 방향) 좌표가 증가합니다. 그리드는 (a, b)에서 스위치를 뒤집 으면 (a, b)의 조명과 같은 열 또는 같은 행의 조명뿐만 아니라 a, b).

입력은 on과 off를 나타내는 두 개의 다른 문자로 구성된 사각형 격자입니다 (각각 1과 0을 사용합니다). 또한 입력의 일부는 전환하는 스위치를 나타내는 일련의 최소 하나의 좌표 쌍 (원하는 형식 및 분리)이됩니다.

출력은 입력으로 제공된 각 좌표 쌍에 "플립"이 적용된 동일한 그리드입니다. 출력 형식은 배열이 아니라 그리드 여야하지만 입력 형식을 지정하는 방법을 선택할 수 있습니다.


견본

샘플 입력 1

111111
111111
111111
111111

(3,2)

샘플 출력 1

110111
110111
000000
110111

샘플 입력 2

01101
10100
00010
11111
10110

(1,1), (5,5)

샘플 출력 2

00010
00101
10011
01110
01000

샘플 입력 3

1

(1,1)

샘플 출력 3

0

샘플 입력 4

00000
11111
00000
11111

(2,3), (2,3)

샘플 출력 4

00000
11111
00000
11111

이것은 코드 골프입니다. 표준 규칙이 적용됩니다. 바이트 단위의 최단 코드가 이깁니다.


관련 : codegolf.stackexchange.com/questions/65738/crack-the-safe . 그러나 같은 문제는 아닙니다. 다른 도전의 목표는 어떤 움직임을 만들어 내는지를 찾는 것이 었습니다. 이것은 주어진 움직임 목록을 적용하는 것입니다.
Reto Koradi

@RetoKoradi 또한 아니다 아주 동일한 작업. (선택된 세포 자체가 전환된다는 사실도이 상당히 까다을 수 있습니다.)
마틴 청산

입력을 비슷하게 요청할 수 있습니까 <grid><RETURN><coordinate_x><RETURN><coordinate_y><RETURN>?
cat

형식과 분리 중 어느 것이나 : 그것은 분리 된 입력이 될 수 있다는 것을 의미합니까 (즉, "분리기"는 "입력"키입니까)?
Luis Mendo

@LuisMendo 그렇습니다.
EEEEEEridan

답변:


3

CJam, 37 36 바이트

qN/W%(~{1$::!\{1a\Te[f.|z}/..^}/W%N*

입력 마지막 비트 (그래서에서 차이가 두 NULL이 아닌 문자를 사용하여 첫 번째 그리드를해야 0하고 1좌표 쌍의 CJam 스타일리스트 다음을 작업).

01101
10100
00010
11111
10110
[[1 1] [5 5]]

여기에서 테스트하십시오.


3

Dyalog APL, 20 바이트

{⍵≠⊃⊃≠/∘.∨/¨⍺=⊂⍳¨⍴⍵}

이것은 오른쪽의 초기 그리드와 왼쪽의 좌표 목록을 취하는 2 차원 함수입니다.

단일 좌표 쌍을 입력하려면 예 (⊂2 3)를 들어 왼쪽 인수로 사용하십시오.

여기에서 시도 하십시오 .


1

MATL , 39 바이트

i,-1H$X!tyZ}:XJx:!XIxi"I@1)=J@2)=|+]2\X!

입력은 다음과 같은 형식입니다 (예는 챌린지의 샘플 입력 2에 해당).

[0 1 1 0 1; 1 0 1 0 0; 0 0 0 1 0; 1 1 1 1 1; 1 0 1 1 0]  
[1 5; 1 5]

첫 번째 입력은 0및 의 그리드를 정의하는 행렬 1입니다. ;행 구분 기호입니다. 두 번째 입력은 좌표 쌍의 행렬이며 각 은 쌍입니다.

>> matl i1_2$X!tyZ}:XJx:!XIxi"I@1)=J@2)=|+]2\X!
> [0 1 1 0 1; 1 0 1 0 0; 0 0 0 1 0; 1 1 1 1 1; 1 0 1 1 0]
> [1 5; 1 5]
0 0 0 1 0
0 0 1 0 1
1 0 0 1 1
0 1 1 1 0
0 1 0 0 0

설명

i,           % input matrix
-1H$X!       % rotate clockwise to accomodate input to matrix coordinates
tyZ}         % get numbers of rows (r) and of cols (c)
:XJx         % row vector 1,2,,...,c. Copy to clipboard J and delete
:!XIx        % col vector 1,2,,...,r. Copy to clipboard I and delete
i            % input coordinates (matrix; each col is a coordinate)
"            % for each col of coordinate matrix
    I@1)=    % compare col vector of rows with row from coordinate
    J@2)=    % compare row vector of cols with col from coordinate
    |        % "or" with singleton expansion to generate mask
    +        % add that to matrix of values
]            % end for
2\           % modulo 2 to transform result into zeros and ones
X!           % undo rotation

matl에 사용할 수있는 온라인 컴파일러가 있는지 알려주십시오
Abr001am

아직 온라인이 아닙니다. 죄송합니다. 제목에 링크 된 Matlab 기반의 제품 만
Luis Mendo

0

루비 114 바이트

입력으로 사용합니다 :

g시작 그리드를 나타내는 배열의 배열입니다.

o, 점의 배열로, 각 점은 같은 두 개의 요소가있는 배열입니다 [x, y].

->g,o{o.map{|i|(r=g[i[1]-1])[e=(i[0]-1)]-=1;r.map!{|j|j+1};g.map{|x|x[e]+=1}};puts g.map{|i|i.map{|j|j%2}.join""}}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.