Anda diberi matriks kuadrat lebar , yang berisi angka kuadrat .
Tugas Anda adalah membuat semua angka kuadrat 'meledak' sampai semuanya hilang. Anda harus mencetak atau mengembalikan matriks terakhir.
Lebih spesifik:
- Cari kuadrat tertinggi dalam matriks.
- Cari tetangga terdekat terkecil (baik secara horizontal atau vertikal dan tanpa melilit).
- Ganti dengan dan ganti dengan .
Ulangi proses ini dari langkah 1 hingga tidak ada kotak lagi dalam matriks.
Contoh
Matriks input:
Kotak tertinggi meledak menjadi dua bagian dan bergabung dengan tetangga terkecilnya , yang menjadi :
Kotak tertinggi meledak dan bergabung dengan tetangganya yang terkecil :
Kotak tertinggi meledak dan bergabung dengan tetangganya yang terkecil :
Satu-satunya persegi tersisa meledak dan bergabung dengan tetangganya yang terkecil :
Tidak ada kotak lagi, jadi kita sudah selesai.
Aturan
- Matriks input dijamin memiliki properti berikut:
- di setiap langkah, alun-alun tertinggi akan selalu unik
- pada setiap langkah, tetangga terkecil dari alun-alun tertinggi akan selalu unik
- urutan tidak akan terulang selamanya
- Matriks awal mungkin berisi , tetapi Anda tidak perlu khawatir membuat meledak, karena tidak akan pernah menjadi yang tertinggi atau satu-satunya persegi yang tersisa.
- I / O dapat diproses dalam format apa pun yang wajar
- Ini adalah kode-golf
Uji kasus
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.
Bisakah saya memodifikasi matriks input?Jawaban:
R ,
301287277274222217195186178174 byteTidak ada yang kreatif, termasuk nol buffering dari elemen periferal dari matriks entri, versi sebelumnya yang kemudian ditingkatkan oleh Robin:
Cobalah secara online
Menggunakan urutan angka sebagai entri, dan karenanya menghapus panggilan ke suatu fungsi, Nick Kennedy sebelumnya mengelola versi algoritma 186 byte sebagai berikut (dengan -10 byte oleh Robin ):
menghindari definisi fungsi (rekursif), ditambah keuntungan bagus lainnya.
Cobalah secara online
sumber
Ruby ,
140135 byteMengambil daftar datar sebagai input, menampilkan daftar datar.
Cobalah online!
Penjelasan:
sumber
Python 2 , 188 byte
Cobalah online!
Program lengkap. Mengambil input dan mencetak sebagai daftar datar.
sumber
Perl 6 , 236 byte
Cobalah online!
sumber
MATL ,
4948 byteCobalah online! Atau verifikasi semua kasus uji .
Bagaimana itu bekerja
sumber
JavaScript (ES6),
271259250245 byteTerima kasih kepada Luis felipe De jesus Munoz untuk −14 byte!
Penjelasan:
sumber
C # (Visual C # Interactive Compiler) , 220 byte
Cobalah online!
sumber
Bahasa Wolfram (Mathematica) , 224 byte
Cobalah online!
sumber
JavaScript (Node.js) , 157 byte
Cobalah online!
-14 byte terima kasih pada @Arnauld yang juga menulis test harness yang bagus :)
Fungsi anonim yang mengambil array 1 dimensi sebagai input dan parameter panjang yang menentukan angka jika kolom / baris.
Input kari ditentukan sebagai
f(array)(length)
.sumber
Java 8,
299297 byteMemodifikasi input-matriks alih-alih mengembalikan yang baru untuk menghemat byte.
Cobalah online.
Penjelasan:
sumber
Jelly ,
7067 byteCobalah online!
Saya yakin ini bisa dilakukan lebih singkat, tetapi saya menemukan ini lebih sulit daripada yang pertama kali muncul. Penjelasan untuk diikuti setelah saya mencoba bermain golf dengan lebih baik.
Program lengkap yang mengambil daftar bilangan bulat yang sesuai dengan matriks kuadrat dan mengembalikan daftar bilangan bulat yang mewakili matriks meledak terakhir.
sumber