あなたは幅の正方行列与えられている平方数含む、。
あなたの仕事は、すべての平方数がすべて消えるまで「爆発」させることです。最終マトリックスを印刷するか、返す必要があります。
すなわち:
- マトリックス内で最も高い正方形を探します。
- 隣接する最小の探します(水平方向または垂直方向に、ラップアラウンドなしで)。
- 置き換えとと置換と。
マトリックスに正方形がなくなるまで、ステップ1からのプロセスを繰り返します。
例
入力行列:
最も高い正方形は、√の 2つの部分に爆発します。とその最小隣人と合流なり、:
最も高い正方形爆発し、最小の隣接と結合します。
最高の正方形が爆発し、最小の隣接と結合します。
残りの唯一の正方形が爆発し、最小の隣接と結合します。
もう正方形はないので、これで完了です。
ルール
- 入力行列には、次のプロパティが保証されています。
- 各ステップで、最も高い正方形は常に一意になります
- 各ステップで、最高の正方形の最小の隣人は常に一意になります
- シーケンスは永遠に繰り返されません
- 最初の行列にはが含まれている場合がありますが、爆発することを心配する必要はありません。これは、最大または残りの正方形のみになることはないためです。
- 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.
代わりに入力行列を変更できますか?