제곱 숫자 포함하는 너비 의 제곱 행렬이 제공 됩니다.
당신의 임무는 모든 사각형 숫자가 모두 사라질 때까지 '폭발'하는 것입니다. 최종 행렬을 인쇄하거나 반환해야합니다.
더 구체적으로:
- 행렬에서 가장 높은 제곱 를 찾으십시오 .
- 인접한 가장 작은 인접 찾으십시오 (수평 또는 수직으로 감싸지 않은 상태).
- 교체 와 및 대체 과 .
행렬에 더 이상 사각형이 없을 때까지 1 단계부터 과정을 반복합니다.
예
입력 매트릭스 :
최고 제곱 의 두 부분으로 폭발 및 작은 이웃과 병합 가되고, :
의 가장 높은 광장은 폭발하여 가장 작은 이웃 와 합쳐집니다 :
가장 높은 광장 는 가장 작은 이웃 과 함께 폭발하고 합쳐집니다 .
남아있는 유일한 광장 폭발하여 가장 작은 이웃 과 합쳐집니다 .
더 이상 사각형이 없으므로 완료되었습니다.
규칙
- 입력 행렬이되어 보장 다음과 같은 속성을 가지고 :
- 각 단계에서 가장 높은 사각형은 항상 고유합니다.
- 각 단계에서 가장 높은 사각형의 가장 작은 이웃은 항상 고유합니다.
- 시퀀스는 영원히 반복되지 않습니다
- 초기 행렬에는 이 포함될 수 있지만 분해 하는 것에 대해 걱정할 필요 가 없습니다.
- I / O는 합리적인 형식으로 처리 될 수 있습니다
- 이것은 코드 골프입니다
테스트 사례
Input : [[16,9],[4,25]]
Output: [[24,6],[20,5]]
Input : [[9,4],[1,25]]
Output: [[3,12],[5,5]]
Input : [[625,36],[196,324]]
Output: [[750,540],[14,252]]
Input : [[1,9,49],[1,4,1],[36,25,1]]
Output: [[3,6,7],[6,2,7],[6,5,5]]
Input : [[81,4,64],[16,361,64],[169,289,400]]
Output: [[3,5472,8],[624,323,1280],[13,17,20]]
Input : [[36,100,1],[49,144,256],[25,49,81]]
Output: [[6,80,2],[42,120,192],[175,21,189]]
Input : [[256,169,9,225],[36,121,144,81],[9,121,9,36],[400,361,100,9]]
Output: [[384,13,135,15],[24,1573,108,54],[180,11,108,6],[380,209,10,90]]
Input : [[9,361,784,144,484],[121,441,625,49,25],[256,100,36,81,529],[49,4,64,324,16],[25,1,841,196,9]]
Output: [[171,19,700,4032,22],[11,210,525,7,550],[176,60,6,63,23],[140,112,1152,162,368],[5,29,29,14,126]]
You must print or return the final matrix.
대신 입력 행렬을 수정할 수 있습니까?