이 도전은 Soulgit Games가 개발 한 All Light 에서 많은 영감을 얻었습니다 .
도전
전기 기사는 모든 조명을 배터리에 연결하는 것이 당신의 일입니다.
- 표시등과 배터리는 그리드에 배치됩니다.
- 조명이나 배터리를 가장 가까운 조명이나 배터리를 북쪽, 남쪽, 동쪽 및 서쪽에 연결할 수 있습니다.
- 배터리는 여러 개의 연결을 가질 수 있습니다.
- 각 표시등은 필요한 연결 수를 지정합니다. 당신이해야 정확히 그 빛에 많은 연결을.
- 두 표시 등 (또는 표시 등 및 배터리)간에 단일 연결 또는 이중 연결을 만들 수 있습니다.
- 전선은 교차 할 수 없습니다.
- 각 표시 등에서 배터리까지의 경로가 있어야합니다.
- 하나 이상의 유효한 솔루션이 존재해야합니다.
배터리의 위치와 각 표시 등 및 각 표시등에 필요한 연결 수를 고려하여 이러한 속성을 허용하는 배터리 간 연결을 출력하십시오.
승리 조건
이것은 code-golf 이므로 각 언어에서 가장 짧은 코드가 승리합니다.
테스트 사례
I / O는 평소처럼 유연합니다.
입력의 경우 조명의 양의 정수, 공백의 경우 0, 배터리의 경우 -1을 저장하는 그리드 크기의 2d 배열을 사용합니다. 또 다른 좋은 선택은 조명 목록 일 수 있습니다. 여기서 조명은 조명의 위치와 필요한 연결 수를 포함하는 튜플입니다.
출력을 위해 연결 목록을 사용합니다. 연결은 시작 위치와 끝 위치를 포함하는 튜플입니다. 연결이 두 배가되면 목록에 2 개가 있습니다 (또 다른 옵션은이 매개 변수를 튜플에 포함시키는 것입니다). 또 다른 좋은 옵션은 일종의 그리드 레이아웃 일 수 있습니다.
좌표계를 사용하는 경우 시작 색인과 색인 위치를 지정할 수 있습니다. 내 예제는 0으로 색인화되며 (0, 0)을 왼쪽 상단 모서리 (행, 열)로 사용합니다. (저는 {}을 사용하여 다른 유형의 구분 기호를 소개 하기 때문에 설정하기 때문이 아니라 읽기 쉽습니다 .)
테스트 사례에 대한 그래픽보기는 다음과 같습니다. 테스트 1-12
시험 1 :
[-1 | 0 | 1 ] => [{(0, 0), (0, 2)}]
시험 2 :
[-1 | 0 | 2 ] => [{(0, 0), (0, 2)}, {(0, 0), (0, 2)}]
시험 3 :
[-1 ]
[ 0 ] => [{(0, 0), (2, 0)), ((0, 0), (2, 0)}]
[ 2 ]
시험 4 :
[ 1 | 0 |-1 | 0 | 2 ] => [{(0, 0), (0, 2)}, {(0, 2), (0, 4)}, {(0, 2), (0, 4)}]
시험 5 :
[ 2 ]
[ 0 ]
[-1 ] => [{(0, 0), (2, 0)}, {(0, 0), (2, 0)}, {(2, 0), (4, 0)}]
[ 0 ]
[ 1 ]
시험 6 :
[ 1 | 0 | 0 ]
[ 0 | 0 | 0 ] => [{(0, 0), (2, 0)}, {(2, 0), (2, 2)}]
[ 2 | 0 |-1 ]
시험 7 :
[ 4 | 0 | 0 |-1 ]
[ 0 | 0 | 0 | 0 ] => [{(0, 0), (0, 3)}, {(0, 0), (0, 3)},
[ 2 | 0 | 0 | 0 ] {(0, 0), (3, 0)}, {(0, 0), (3, 0)}]
시험 8 :
[ 2 | 0 |-1 | 0 | 2 ] [{(0, 0), (0, 2)}, {(0, 0), (0, 2)},
[ 0 | 0 | 0 | 0 | 0 ] => {(0, 2), (0, 4)}, {(0, 2), (0, 4)},
[ 0 | 0 | 1 | 0 | 0 ] {(0, 2), (2, 2)}]
시험 9 :
[ 0 | 0 | 2 | 0 | 0 ]
[ 0 | 0 | 0 | 0 | 0 ]
[ 1 | 0 |-1 | 0 | 1 ] => [{(0, 2), (2, 2)}, {(0, 2), (2, 2)}, {(2, 0), (2, 2)},
[ 0 | 0 | 0 | 0 | 0 ] {(4, 2), (2, 2)}, {(2, 4), (2, 2)}, {(2, 4), (2, 2)}]
[ 0 | 0 | 2 | 0 | 0 ]
시험 10 :
[-1 | 2 | 3 | 2 ] => [{(0, 0), (0, 3)}, {(0, 0), (0, 3)},
{(0, 0), (0, 3)}, {(0, 0), (0, 3)}]
시험 11 :
[-1 | 0 | 0 | 0 ]
[ 3 | 0 | 0 | 0 ]
[ 3 | 0 | 0 | 3 ] => [{(0, 0), (1, 0)}, {(1, 0), (2, 0)}, {(1, 0), (2, 0)},
[ 0 | 0 | 0 | 0 ] {(2, 0), (2, 3)}, {(2, 3), (4, 3)}, {(2, 3), (4, 3)}]
[ 0 | 0 | 0 | 2 ]
실험 12 :
[ 2 | 0 | 0 ] [{(0, 0), (1, 0)}, {(0, 0), (1, 0)}, {(1, 0), (1, 1)},
[ 3 |-1 | 0 ] => {(1, 1), (2, 1)}, {(1, 1), (2, 1)}, {(2, 0), (2, 1)},
[ 2 | 5 | 1 ] {(2, 0), (2, 1)}, {(2, 1), (2, 2)}]
[1 | -1] [1 1].