Terinspirasi oleh pertanyaan Stack Overflow ini .
Tantangan
Memasukkan
Array matriks persegi berisi bilangan bulat non-negatif.
Keluaran
Matriks kuadrat dibangun dari matriks input sebagai berikut.
Misalkan menjadi ukuran dari setiap matriks input, dan jumlah matriks input.
Untuk kejelasan, pertimbangkan contoh input matriks berikut ( , ):
3 5
4 10
6 8
12 11
2 0
9 1
- Mulai dengan matriks input pertama.
- Geser matriks input kedua N −1 ke bawah dan N −1 ke kanan, sehingga entri kiri atasnya bertepatan dengan entri kanan bawah dari yang sebelumnya.
Bayangkan yang kedua, geser matriks seolah-olah itu ditumpuk di atas yang pertama. Jumlahkan dua nilai pada entri kebetulan. Tulis nilai lainnya, dan isi entri yang tersisa dengan
0
untuk mendapatkan matriks. Dengan contoh input, hasilnya sejauh ini adalah3 5 0 4 16 8 0 12 11
Untuk setiap matriks input yang tersisa, goyangkan itu sehingga kiri atas bertepatan dengan kanan bawah dari matriks hasil akumulasi sejauh ini. Dalam contoh ini, termasuk memberi masukan matriks ketiga
3 5 0 0 4 16 8 0 0 12 13 0 0 0 9 1
Ouput adalah matriks diperoleh setelah memasukkan matriks input terakhir.
Aturan dan klarifikasi tambahan
- dan adalah bilangan bulat positif.
- Anda bisa mengambil dan sebagai input tambahan.
- Input dan output dapat diambil oleh apa pun yang wajar . Formatnya fleksibel seperti biasa.
- Program atau fungsi diizinkan, dalam bahasa pemrograman apa pun .Celah standar dilarang .
- Kode terpendek dalam byte menang.
Kasus uji:
Dalam setiap kasus, matriks input ditampilkan terlebih dahulu, kemudian output.
, :
3 5 4 10 6 8 12 11 2 0 9 1 3 5 0 0 4 16 8 0 0 12 13 0 0 0 9 1
, :
3 5 4 10 3 5 4 10
, :
4 7 23 5 39
, :
11 11 8 6 8 12 11 0 4 4 1 13 9 19 11 13 4 2 11 11 8 0 0 6 8 12 0 0 11 0 8 1 13 0 0 9 19 11 0 0 13 4 2
, :
14 13 10 0 13 20 21 3 9 22 0 8 17 3 19 16 14 13 0 0 0 10 13 20 0 0 0 21 12 22 0 0 0 0 25 3 0 0 0 19 16
sumber
Jawaban:
Jelly ,
1512 byteCobalah online!
Bagaimana itu bekerja
sumber
R ,
8881 byteCobalah online!
Membawa satu
list
matriks,A
,N
, danP
.o
Buat matriks nol yang diperlukan dan tambahkan elemen ke kontenA
yang sesuai di dalamo
.sumber
JavaScript (ES6), 102 byte
Mengambil input sebagai
(n,p,a)
.Cobalah online!
Bagaimana?
di mana sel yang tidak terdefinisi diganti dengan nol.
sumber
Python 2 , 124 byte
Cobalah online!
sumber
Jelly , 12 byte
Cobalah online!
12 byte
Jika nol ekstra diizinkan
ZŻ€‘ɼ¡)⁺S
adalah solusi 9 byte yang keren. TIO .sumber
Jelly , 20 byte
Cobalah online!
Bah, Jelly punya sikap hari ini ...
sumber
Pip , 37 byte
Fungsi yang mengambil daftar daftar daftar. Cobalah online!
sumber
Python 2 , 124 byte
Cobalah online!
sumber
Arang , 52 byte
Cobalah online! Tautan adalah untuk versi kode yang verbose dan menyertakan dua byte untuk pemformatan yang dapat digunakan. Saya mulai dengan versi yang mengisi semua array dan kemudian menyimpulkannya tetapi saya bisa menjadikan versi ini lebih pendek. Penjelasan:
Mengurangi nilai inputN .
Hitung ukuran hasilnya( N- 1 ) P+ 1 dan memetakan rentang implisit dua kali sehingga menghasilkan matriks hasil yang dicetak secara implisit.
Peta pada rentang implisit di atas nilai inputP dan kalikan setiap elemen dengan N- 1 . Lalu, petakan rentang yang dihasilkan dan jumlah hasil akhirnya.
Pastikan tidak ada indeks di luar kisaran.
Diimbangi ke input asli untuk mengambil nilai yang diinginkan.
sumber