Tujuan: Diberikan matriks bilangan bulat positif , menghasilkan matriks sentrosimetri terkecil yang mengandung (matriks ini juga mengandung bilangan bulat tidak positif).M.
Matriks centrosymmetric adalah matriks persegi dengan simetri rotasi orde 2 — yaitu tetap matriks yang sama setelah diputar dua kali. Misalnya, matriks centrosymmetric memiliki elemen kiri atas sama dengan kanan bawah, dan elemen di atas pusat sama dengan yang di bawah pusat. Visualisasi yang bermanfaat dapat ditemukan di sini .
Lebih formal, diberikan matriks , menghasilkan matriks persegi sehingga adalah centrosymmetric dan , dan tidak ada matriks persegi lain sehingga .N N M ⊆ N K redup K < redup N
B A ⊆ B A i , j B i + i ′ , j + j ′ ( i ′ , j ′ ) adalah himpunan bagian dari (notasi: ) jika dan hanya jika setiap nilai muncul di indeks untuk beberapa pasang bilangan bulat .
Catatan : beberapa matriks memiliki beberapa solusi (misalnya [[3,3],[1,2]]
diselesaikan sebagai [[2,1,0],[3,3,3],[0,1,2]]
atau [[3,3,3],[1,2,1],[3,3,3]]
); Anda harus mengeluarkan setidaknya satu dari solusi yang valid.
Uji kasus
input
example output
[[1, 2, 3],
[4, 5, 6]]
[[1, 2, 3, 0],
[4, 5, 6, 0],
[0, 6, 5, 4],
[0, 3, 2, 1]]
[[9]]
[[9]]
[[9, 10]]
[[9, 10],
[10, 9]]
[[100, 200, 300]]
[[100, 200, 300],
[ 0, 0, 0],
[300, 200, 100]]
[[1, 2, 3],
[4, 5, 4]]
[[1, 2, 3],
[4, 5, 4]
[3, 2, 1]]
[[1, 2, 3],
[5, 6, 5],
[3, 2, 1]]
[[1, 2, 3],
[5, 6, 5],
[3, 2, 1]]
[[4, 5, 4],
[1, 2, 3]]
[[3, 2, 1],
[4, 5, 4],
[1, 2, 3]]
[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 9, 9, 9, 9, 9, 9, 9],
[1, 1, 1, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 1]]
[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9],
[1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1],
[9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
sumber
Jawaban:
Brachylog , 12 byte
Cobalah online!
Berlawanan dengan sebagian besar jawaban Brachylog, ini mengambil input melalui variabel Output
.
, dan output hasilnya melalui variabel Input?
(membingungkan, saya tahu).Penjelasan
8 byte, memberikan semua matriks yang valid
Secara teknis, program ini juga berfungsi:
ṁ↔ᵐ↔?aaᵐ
Tapi ini akan meninggalkan sebagai sel-sel variabel yang dapat mengambil nilai apa pun (mereka menunjukkan
_XXXXX
, yang merupakan nama variabel Prolog internal). Jadi secara teknis ini bahkan lebih baik daripada apa yang diminta, tapi saya kira itu bukan tantangan yang diminta.sumber
≜
tidak menunda pelabelan ...JavaScript (ES6),
192180177 byteCobalah online!
Algoritma
Dimulai dengan :w=0
Kami menganggap setiap pasangan sedemikian rupa sehingga matriks input dapat masuk dalam matriks wadah ketika dimasukkan pada koordinat ini.(X,Y) m
Contoh:
Kami menguji apakah kami dapat menyelesaikan matriks sedemikian rupa sehingga bersifat centrosymmetric.
Contoh:
sumber
Jelly , 27 byte
Cobalah online!
Baris baru ditambahkan ke output aktual daripada TIO untuk kejelasan.
sumber
Python 2 ,
242227226 byteCobalah online!
Diselamatkan:
sumber
n=[W*[0]for _ in r(W)]
bisan=eval(`[W*[0]]*W`)
.Clojure 254 byte
Jinkies, Scoob
Cobalah online!
sumber