Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

Zombie Apocalypse 사례 연구 - JavaScript

<시간/>

지독한 좀비 바이러스가 디지털 도시에 퍼지고 있습니다. 우리는 디지털 CDC에서 일하고 있으며 우리의 임무는 도시 지도를 살펴보고 어느 지역이 좀비 바이러스에 오염되었는지 알려 디지털 군대가 폭탄을 투하할 위치를 알 수 있도록 하는 것입니다.

수직, 수평 방향으로만 이동할 수 있는 새로운 종류의 디지털 좀비로, 같은 숫자만 감염시킵니다.

숫자가 포함된 2차원 배열이 제공됩니다.

어떤 불가사의한 이유로 환자 0은 항상 도시의 북서쪽 지역(매트릭스의 [0][0] 요소)에서 발견되며 역병은 왼쪽, 오른쪽, 위 또는 아래로 이동하여 그곳에서 다른 세포로 퍼집니다.

모든 오염된 영역이 1로 표시되고 바이러스가 없는 영역이 0으로 표시된 지도(2차원 배열)를 반환하는 함수를 만들어야 합니다.

즉, [0][0]에서 아래, 위, 오른쪽 또는 왼쪽으로만 이동할 수 있는 [0][0]과 동일한 값을 가진 모든 행렬 요소를 찾아야 합니다. 다른 값을 저장하는 필드입니다.

예시

다음은 코드입니다 -

상수 arr =[ [9, 1, 2, 3, 4, 1, 2, 9], [9, 9, 9, 2, 1, 5, 9, 9], [9, 2, 9, 3, 7, 9, 1, 9], [6, 9, 9, 9, 0, 9, 2, 9], [5, 4, 3, 9, 9, 9, 4, 9], [9, 3, 9, 5, 8, 9, 9, 9], [9, 9, 9, 9, 9, 9, 7, 9], [9, 9, 1, 2, 3, 9, 8, 9] ]; const findZombies =arr => { let i, j, 결과 =[], 좀비 =arr[0][0], 트리 ={}; const 기회 =([i, j]) => { if (!tree[i] || !tree[i][j]) return; 결과[i][j] =1; var 온도 =나무[i][j]; 트리[i][j] =정의되지 않음; temp.forEach(기회); } for (i =0; i  arr[x] &&arr[x][y] ===좀비); }; }; 기회([0, 0]); 반환 결과;};console.log(findZombies(arr));

이것은 콘솔에 다음과 같은 출력을 생성합니다 -

[ [ 1, 0, 0, 0, 0, 0, 0, 1 ], [ 1, 1, 1, 0, 0, 0, 1, 1 ], [ 1, 0, 1, 0, 0 , 1, 0, 1 ], [ 0, 1, 1, 1, 0, 1, 0, 1 ], [ 0, 0, 0, 1, 1, 1, 0, 1 ], [ 1, 0, 1 , 0, 0, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 0, 1 ], [ 1, 1, 0, 0, 0, 1, 0, 1 ]]