내일은 5 월 4 일이므로 내일 오는 모든 나쁜 농담에 정신적으로 대비할 수있는 작은 스타 워즈 테마 게시물이 있습니다.
백 스토리
은하계 상원 회의 동안 모든 상원 의원은 n*n
격자에 앉아있다 . JarJar 독감의 갑작스런 발생 (영원히 지속되고 감염된 JarJar Binks와 같이 말하게 됨)은 일부 상원 의원이 감염되게합니다.
다음 은 감염된 상원의 원인 6*6
그리드 가있는 예입니다 X
. 해당 목록은 다음과 [[0,5],[1,4],[2,3],[2,1],[3,3],[3,0],[4,5],[0,5]]
같습니다 . :
그 후 감염이 단계적으로 퍼지기 시작합니다. 두 상원 의원이 그리드의 전체 가장자리 (즉, 위, 아래, 오른쪽, 왼쪽)를 공유하면 인접 합니다. 즉, 대각선을 제외합니다.
상원 의원이 2,3 또는 4 명의 다른 상원 의원과 인접 할 수 있으며 다음과 같은 감염 규칙을 주장 할 수 있습니다.
- 감염된 상원 의원은 영원히 감염된 상태를 유지합니다
- 상원 의원이 이전 단계에서 2 명 이상의 상원 의원에 인접 해 있다면 발병
다음은 감염의 첫 두 단계를 보여주는 이전 표의 예입니다.
다음 단계 후 모든 상원이 감염됩니다
당신의 임무
코드는 목록보다 크 n*n
거나 구별되지 않는 좌표 와 같은 유효하지 않은 입력을 처리 할 필요 가 없습니다.
코드는 몇 개의 정수 (또는 이진 그리드 또는 사용자 언어에 맞는 다른 형식)와 정수 n
(목록 이외의 다른 형식을 사용하는 경우 불필요 할 수 있음)의 목록을 입력으로 사용합니다.
8 [[1,2],[1,1],[7,4],[2,7],[4,3]]
n은 그리드의 측면이며, 이는 그리드가 * n 그리드가됨을 의미하고 정수 쌍의 목록은 초기 감염된 상원의 세포 좌표입니다.
그리드의 왼쪽 하단은 [0,0]이고 오른쪽 상단은 [n-1, n-1]입니다. 왼쪽 상단은 [0, n-1]입니다.
코드는 정수를 출력해야합니다 :
-1
전체 그리드가 완전히 감염되지 않거나 전체 그리드를 감염시키는 데 필요한 최소 단계 수인 경우 잘못된 값 또는 오류
테스트 사례
6 [[0,5],[1,4],[2,3],[2,1],[3,3],[3,0],[4,5],[5,0]] => 7
4 [[1,1][0,3][1,0][3,0][3,3]] => 9
이것은 code-golf 이므로 바이트 단위의 최단 답변이 이깁니다!
n
얼마입니까? 최대 값이 있습니까?
CellularAutomaton
...