내 번호 이웃을 찾아


11

입력은 이웃 정보 가있는 i 개의 행으로 구성됩니다 . 각 i 번째 행에는 북쪽 , 동쪽 , 남쪽서쪽 방향 에 대한 i 의 이웃을 각각 나타내는 4 개의 값이 있습니다. 따라서 각 값은 1 행부터 시작 하여 i 번째 행 의 지정된 방향에있는 이웃을 나타내며 최대 65,535 행이 될 수 있습니다. 0 값이 그 방향에 어떤 이웃을 나타냄.

예를 들어, 첫 번째 행이 "0 2 3 10"인 경우 i 이웃은 북쪽에 아무도 없음, 이웃 2 는 동쪽, 이웃 3 은 남쪽, 이웃 10 은 서쪽에 3 개의 다른 이웃이 있음을 의미합니다 .

가장 북서쪽에있는 값부터 시작하여 이웃 배열을 출력해야합니다. 각 이웃은 다른 사람에 비해 그 위치에 한 번만 표시됩니다. 몇 가지 예를 보자.

입력:

0 0 0 0

이웃 없음 (빈 경우), 출력 :

1

입력:

0 2 0 0 
0 0 0 1

1은 동쪽에 이웃 2가 있습니다. 2 서쪽에 이웃 1이 있습니다

산출:

1 2

입력:

0 2 0 0
0 0 3 1
2 0 0 0

1은 동쪽에 이웃 2가 있습니다. 2는 이웃 1이 서쪽에, 3이 남쪽에 있습니다. 3은 북쪽에 이웃 2가 있습니다

산출:

1 2
  3

입력:

2 0 0 0
0 0 1 0

산출:

2
1

입력:

0 2 3 0
0 0 4 1
1 4 0 0
2 0 0 3

산출:

1 2
3 4

규칙 :

  • 테스트 사례는 하나의 빈 줄로 구분됩니다 . 다른 테스트 사례의 출력도 하나의 빈 줄로 분리해야합니다.
  • 출력 그래프는 항상 연결되어 있습니다. 1 개의 이웃에서 2로만, 3 개의 이웃에서 4로만 (1-2 구성 요소에서 분리) 가질 수 없습니다.
  • 모든 항목이 유효합니다. 유효하지 않은 항목의 예 :
    • 공백, 줄 바꿈 및 숫자 (0-9)와 다른 문자 또는 기호가 포함 된 항목
    • i 번째 값을 포함 하는 i 번째 행 (자체 이웃이 될 수 없으므로).
    • 음수 또는 65,535보다 큰 값
    • 행에서 4 개 미만의 값.
    • 한 행에 4 개 이상의 값이 있습니다.
    • 동일한 이웃이 서로 다른 두 방향을 가리키고 있습니다 (예 : 0 1 1 0).

표준 허점이 적용되며 바이트 단위의 최단 답변이 이깁니다.


4
테스트 사례는 하나의 빈 줄로 구분됩니다 . 이는 특별한 요구 사항입니다. 일반적으로 챌린지 항목은 한 번에 하나의 테스트 케이스 (호출 당 하나씩)를 처리합니다. 챌린지 항목이 한 번에 둘 이상의 테스트 케이스를 처리 할 수 ​​있다면 훌륭하지만 여러 테스트 케이스 항목의 형식을 지정하는 방법을 엄격하게 지정하는 것은 별 가치가 없습니다.
Digital Trauma

1
@Chaotic 당신은 그것을 완전히 제거 할 수 있습니다 (원하는 경우), 개정 내역 은 변경 로그를 처리
Rod

1
출력이 출력과 어떻게 관련되는지 이해하지 못합니다. "이웃 배열"의 의미와이 배열을 작성해야하는 규칙에 대해 자세히 설명 할 수 있습니까?
Stewie Griffin

3
아야 아, 알 겠어요 이웃이 열거 1,2,...됩니다. 비록 그들은 동쪽에 2 개의 "단위", 남쪽에 1 개의 "단위"등이있었습니다. 이해할 수 없었습니다.
Stewie Griffin

2
@StewieGriffin 네, 분명하기 전에 몇 번 읽어야했습니다
Digital Trauma

답변:


2

파이썬 2 , 152 바이트

l=input()
def f(x,y,n):
 if m[x][y]<n:m[x][y]=n;[f(i%3-1+x,i/3-1+y,h)for h,i in zip(l[n-1],[3,7,5,1])]
e=len(l)
m=eval(`[[0]*e*2]*e*2`)
f(e,e,1)
print m

온라인으로 사용해보십시오!

입력 순서는 NESW
f주택을 채우는 재귀 함수입니다.


죄송합니다. 작동하지 않습니다. 나는 당신의 입력 형식으로 시도했습니다 (괜찮아요) : [[0, 5, 2, 0], [1, 6, 3, 0], [2, 7, 4, 0], [3, 8 , 0, 0], [0, 9, 6, 1], [5, 10, 7, 2], [6, 11, 8, 3], [7, 12, 0, 4], [0, 13 , 10, 5], [9, 14, 11, 6], [10, 15, 12, 7], [11, 16, 0, 8], [0, 17, 14, 9], [13, 18 , 15, 10], [14, 19, 16, 11], [15, 20, 0, 12], [0, 21, 18, 13], [17, 22, 19, 14], [18, 23 , 20, 15], [19, 24, 0, 16], [0, 0, 22, 17], [21, 0, 23, 18], [22, 0, 24, 19], [23, 0 , 0, 20]]
혼란스러운

@ Chamotic 출력 형식이 만족스럽지 않을 수도 있습니다.
Rod

좋아, 나는 거기의 모든 0으로 길을 잃었다. 나는 그것들을 제거하는 것이 더 좋을 것이라고 생각하지만 골프 표준 규칙을 코딩하는 데 익숙하지 않습니다.
혼돈

사용하지 않은 공간 만 남아 있습니까?
l4m2

2
  • 여전히 골프 :)

자바 스크립트 (Node.js) 135 바이트

R=>R.map((t,y)=>r.map((T,Y)=>T.map((X,I)=>X==y+1?[-1,1,1,-1].map((x,i)=>t[i]?(r[a=Y+x*-~i%2]=r[a]||[])[I+x*i%2]=t[i]:0):0)),r=[[1]])&&r

온라인으로 사용해보십시오!

_______________________________________________________________

두 번째 접근법

자바 스크립트 (Node.js) , 130 바이트

f=(R,x=0,y=0,c=1,r=[[]])=>[-1,1,1,-1].map((d,i)=>(t=R[c-1][i])&&!(r[Y=y+d*-~i%2]=r[Y]||[])[X=x+d*i%2]?f(R,X,Y,t,r):0,r[y][x]=c)&&r

온라인으로 사용해보십시오!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.