Tantangan
Diberi n x m
matriks dengan n > 1
dan m > 1
diisi dengan bilangan bulat
1 2 3 4 5 6
dan daftar bilangan bulat dengan nilai persis sama seperti 2x2
blok dalam matriks ( (n-1)*(m-1)
jika Anda membutuhkan angka pastinya)
[1, 2]
Keluarkan matriks dengan setiap 2x2
blok diputar oleh nilai saat ini dalam daftar dalam urutan yang diberikan. Contoh di atas akan menghasilkan
4 6 2 5 3 1
Blok pertama diputar satu kali ke kanan dan blok kedua diputar dua ke kanan.
Catatan
- Bilangan bulat positif berarti Anda memutar dengan benar melalui banyak langkah itu.
- Bilangan bulat negatif berarti Anda memutar ke kiri dengan banyak langkah itu.
- Nol berarti Anda tidak memutar.
- Anda memutar blok secara bijaksana. Itu artinya Anda mulai di baris pertama dan ke kanan. Setelah Anda memutar setiap blok di baris itu, Anda pergi ke yang berikutnya. Pada akhirnya setiap blok diputar tepat satu kali.
- Perlu diingat bahwa blok saling tumpang tindih. Matriks pertama di atas memiliki blok
[[1,2],[4,5]]
dan[[2,3],[5,6]]
misalnya. - Setiap rotasi blok mempengaruhi rotasi pada blok yang berdekatan. Inilah sebabnya mengapa Anda harus melakukan rotasi pada pola yang dijelaskan di atas.
Aturan
- Anda dapat mengambil input dalam format yang paling nyaman. Silakan tentukan dalam jawaban Anda yang mana yang Anda gunakan. Ini tidak memungkinkan Anda untuk membaca matriks blok-bijaksana.
- Fungsi atau program lengkap diizinkan.
- Aturan default untuk input / output.
- Celah standar berlaku.
- Ini adalah kode-golf , sehingga byte-count terendah akan menang. Tiebreak adalah pengiriman sebelumnya.
Uji kasus
Format input di sini adalah daftar daftar untuk matriks dan daftar normal untuk nilai-nilai.
[[1,2], [3,4]], [-3] -> [[4,1], [3,2]] [[1,1,1], [1,1,1]], [-333, 666] -> [[1,1,1], [1,1,1]] [[1,2,3], [4,5,6]], [1,2] -> [[4,6,2], [5,3,1]] [[1,2,3], [4,5,6], [7,8,9]], [4,0,12, -20] -> [[1,2,3], [4, 5,6], [7,8,9]] [[1,2,3,4,5], [5,4,3,2,1], [1,2,3,4,5]], [2, -3,4,1,6, 24,21, -5] -> [[4,1,5,2,4], [2,1,3,5,5], [3,2,4,3,1]]
Selamat Coding!
sumber
4,=
modulo yang benar (kecuali jika blok Anda perlu dijalankan setidaknya sekali?).zW%
dengan rotasi?CJam,
65636055 byteAda harus menjadi cara yang lebih baik untuk melakukan hal ini ...
Ini adalah fungsi yang tidak disebutkan namanya yang mengharapkan instruksi dan matriks (dalam urutan itu) pada stack dan meninggalkan matriks yang dihasilkan di tempatnya.
Uji di sini.
Penjelasan
Saya merasa tidak ingin menulis uraian lengkap untuk kode sekarang, jadi di sini adalah ikhtisar kasar:
N
.k
dalam array membuka gulungan perubahan empat indeks:k <- k+1
,k+1 <- k+1+N
,k+N <- k
,k+1+N <- k+1
. Untuk setiap indeks dik
sepanjang daftar instruksi, saya menghitung permutasi yang sesuai dengan ini, dan menerapkannya pada larik input yang tidak dikontrol.sumber
Python 2 ,
166159 byteCobalah online!
sumber