Memasukkan:
- Bilangan bulat
n
- Dua matriks persegi berukuran sama (dengan lebar / tinggi menjadi kelipatan
n
)
Keluaran:
Salah satu dari dua nilai berbeda pilihan Anda sendiri, satu untuk hasil yang benar dan satu untuk hasil falsey (jadi ya, 1/0
alih-alih true/false
merupakan output yang valid untuk bahasa seperti Java, meskipun mereka tidak dianggap sebagai nilai kebenaran / falsey resmi ).
Keluaran truthy / falsey menunjukkan apakah kita dapat mengatur ulang ukuran blok n by n
dalam satu matriks untuk membuatnya sama dengan matriks lainnya.
Contoh:
Memasukkan:
Matrix 1:
1 2 3 4 5 6
7 8 9 0 1 2
3 4 5 6 7 8
9 8 7 6 5 4
3 2 1 0 9 8
1 1 1 1 1 1
Matrix 2:
3 2 9 8 7 8
1 1 1 1 5 4
3 4 5 6 1 0
9 0 7 6 1 1
5 6 1 2 3 4
1 2 7 8 9 8
Integer n:
2
Keluaran: truthy
Mengapa?
Jika kita membagi matriks dalam blok 2 by 2
, kita dapat melihat bahwa semua blok pada satu matriks juga dapat ditemukan dalam matriks lain:
Matrix 1:
1 2 | 3 4 | 5 6
7 8 | 9 0 | 1 2
---------------
3 4 | 5 6 | 7 8
9 8 | 7 6 | 5 4
---------------
3 2 | 1 0 | 9 8
1 1 | 1 1 | 1 1
Matrix 2:
3 2 | 9 8 | 7 8
1 1 | 1 1 | 5 4
---------------
3 4 | 5 6 | 1 0
9 0 | 7 6 | 1 1
---------------
5 6 | 1 2 | 3 4
1 2 | 7 8 | 9 8
Aturan tantangan:
- Anda dapat mengasumsikan matriks hanya akan berisi digit non-negatif (rentang
[0,9]
) - Anda dapat mengasumsikan lebar / tinggi matriks sama, dan kelipatan
n
- Anda dapat mengasumsikan
n
akan berada dalam kisaran[1, 50]
, dan lebar / tinggi matriks berada dalam kisaran[1,100]
. - Blok individual
n by n
hanya dapat digunakan sekali untuk menentukan apakah matriks adalah permutasi satu sama lain ketika dipecah menjadi blokn by n
. - Mungkin ada beberapa
n by n
blok yang sama. - The
n by n
blok akan tetap dalam orientasi yang sama ketika memeriksa jika dua matriks yang permutasi dari satu sama lain ketika dibagi menjadi blokn by n
.
Aturan umum:
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jangan biarkan bahasa kode-golf mencegah Anda memposting jawaban dengan bahasa non-codegolf. Cobalah untuk memberikan jawaban sesingkat mungkin untuk bahasa pemrograman 'apa saja'. - Aturan standar berlaku untuk jawaban Anda dengan aturan I / O default , sehingga Anda diizinkan untuk menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat dan tipe pengembalian, program penuh. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, silakan tambahkan tautan dengan tes untuk kode Anda (yaitu TIO ).
- Juga, menambahkan penjelasan untuk jawaban Anda sangat dianjurkan.
Kasus uji:
Input:
Matrix 1: Matrix 2: Integer:
1 2 3 4 5 6 3 2 9 8 7 8 2
7 8 9 0 1 2 1 1 1 1 5 4
3 4 5 6 7 8 3 4 5 6 1 0
9 8 7 6 5 4 9 0 7 6 1 1
3 2 1 0 9 8 5 6 1 2 3 4
1 1 1 1 1 1 1 2 7 8 9 8
Output:
truthy
Input:
Matrix 1: Matrix 2: Integer:
1 2 3 4 5 6 3 2 9 8 7 8 1
7 8 9 0 1 2 1 1 1 1 5 4
3 4 5 6 7 8 3 4 5 6 1 0
9 8 7 6 5 4 9 0 7 6 1 1
3 2 1 0 9 8 5 6 1 2 3 4
1 1 1 1 1 1 1 2 7 8 9 8
Output:
truthy
Input:
Matrix 1: Matrix 2: Integer:
1 2 3 4 5 6 3 2 9 8 7 8 3
7 8 9 0 1 2 1 1 1 1 5 4
3 4 5 6 7 8 3 4 5 6 1 0
9 8 7 6 5 4 9 0 7 6 1 1
3 2 1 0 9 8 5 6 1 2 3 4
1 1 1 1 1 1 1 2 7 8 9 8
Output:
falsey
Input:
Matrix 1: Matrix 2: Integer:
1 2 3 4 1 2 3 4 4
2 3 4 5 2 3 4 5
3 4 5 6 3 4 5 6
4 5 6 7 4 5 6 7
Output:
truthy
Input:
Matrix 1: Matrix 2: Integer:
1 2 3 4 3 4 3 4 2
2 3 4 5 4 5 4 5
3 4 5 6 1 2 5 6
4 5 6 7 2 3 6 6
Output:
falsey
Input:
Matrix 1: Matrix 2: Integer:
1 2 2 3 1
3 4 1 1
Output:
falsey
Input:
Matrix 1: Matrix 2: Integer:
0 8 1
Output:
falsey
Input:
Matrix 1: Matrix 2: Integer:
1 2 3 4 1 2 1 2 2
5 6 7 8 5 6 5 6
9 0 0 9 0 9 9 0
4 3 2 1 2 1 4 3
Output:
falsey
Input:
Matrix 1: Matrix 2: Integer:
1 2 1 2 9 5 1 2 2
3 4 3 4 7 7 3 4
8 3 9 5 1 2 8 3
6 1 7 7 3 4 6 1
Output:
truthy
Input:
Matrix 1: Matrix 2: Integer:
1 0 2 0 0 3 1 1 1 0 0 3 2
1 1 1 1 1 1 2 0 1 1 1 1
2 2 2 2 2 2 2 2 2 2 2 2
3 3 3 3 3 3 3 3 3 3 3 3
4 4 4 4 4 4 4 4 4 4 4 4
5 5 5 5 5 5 5 5 5 5 5 5
Output:
falsey
[ [ 0 ] ], [ [ 25 ] ], 1
ini ada? Saya mengerti denganYou can assume the matrices will only contain non-negative digits (range [0,9])
bahwa nilai-nilai matriks hanya antara 0 dan 9?[0,9]
nanti di Sandbox. Saya telah mengubah test case menjadi[[0]],[[8]]
.Jawaban:
Jelly ,
109 byteCobalah online! (atau dengan pra-pemrosesan untuk lebih mudah salin & tempel dari kasus uji)
Sebuah dyadic Link menerima daftar dari dua matriks (sebagai daftar daftar) di sebelah kiri dan bilangan bulat di sebelah kanan yang menghasilkan
1
atau0
untuk masing-masing kebenaran atau kesalahan.Bagaimana?
sumber
APL (Dyalog Extended) ,
191817 byte-2 Terima kasih kepada ngn.
Fungsi infiks diam-diam anonim. Membawa
n
argumen kiri dan daftar dua matriks sebagai argumen benar. Membutuhkan pengindeksan nol (⎕IO←0
). Secara kebetulan, fungsi ini bekerja pada array dari sejumlah dimensi.Cobalah online!
≡.{
...}
hasil identik fungsi berikut diterapkan untuk setiap matriks⍵
dengann
sebagai⍺
?≢⍵
ukuran matriks⍳
indeks 0… ukuran – 1⍺|
pembagian divisi ketika dibagi dengann
⊂
lampirkan untuk digunakan sepanjang semua dimensi⍵⊂⍨
gunakan itu untuk mempartisi * matriks ke dalam matriks pengajuan* memulai partisi baru ketika elemen yang sesuai kurang dari yang sebelumnya; menghapus elemen yang ditandai dengan nol
,
letakkan matriks dalam daftar submatrices∧
semacam naiksumber
(≢⍵)⍴⍺↑1
->0=⍺|⍳≢⍵
(with⎕io←0
)≡/{}¨
->≡.{}
Python 2 ,
108103 byteCobalah online!
sumber
Perl 6 ,
94 6863 byteCobalah online!
Blok kode anonim yang mengambil input sebagai
size, [matrix1, matrix2]
dan mengembalikan booleanTrue/False
. Mungkin ada cara yang lebih efisien untuk memecah matriks menjadi potongan daripadarotor
.Penjelasan:
sumber
05AB1E , 14 byte
Cobalah online!
sumber
Java (JDK) , 221 byte
Cobalah online!
Penjelasan
Idenya adalah untuk mengambil setiap sel kecil sebagai string, yang sebanding, dan kemudian untuk menyortir string itu dan membandingkannya secara berurutan.
Kredit
sumber
for(j=0;j<l;){c[z=i/n+j/n*x]+=a[i][j];d[z]+=b[i][j++];}
? .. Anda dapat melepas tanda kurung dengan meletakkan semua yang ada di dalam loop. Juga,i=0
dalam loop dapat dihapus, karena Andai
sudah 0 pada deklarasi.var d=new String[x*x];
bisavar d=c.clone();
sebaliknya. 234 byte[
dan]
dengan{
dan}
dan menambahkan pelopornew int[][]
, dan itu sudah cukup. ;)i=0
adalah sisa ketika saya mengisi array sendiri daripada menggunakanArrays.fill
. Terima kasih :-) Dan untukclone
saya berpikir tentang menggunakannya, tapi saya masih berpikir itu akan mengembalikanObject
dan bukan tipe yang sebenarnya. Saya harus beberapa versi terlambat pada saat itu;)Japt , 18 byte
Cobalah online!
Penjelasan:
Langkah "Mengubahnya menjadi string" diperlukan karena Japt tidak membandingkan array dengan nilai dan builtin untuk bekerja di sekitar yang tidak bekerja untuk array multidimensi .
sumber
A.e()
bekerja untuk array multi-dimensi; selalu bermaksud untuk kembali ke sana. Sementara ituÕmòV
->yòV
akan menghemat satu byte.TSQL, 164 byte
Mengisi variabel tabel untuk mendapatkan input, input input dan data penyisipan ini belum dimasukkan dalam jumlah byte. Hanya kueri aktual untuk mengekstrak data.
Golf (tidak termasuk tabel tes - dapat ditemukan dalam versi yang tidak disunat):
Tidak Disatukan:
Cobalah
sumber
JavaScript (ES6), 88 byte
Cobalah online!
Bagaimana?
Kode ini adalah:
Itu mengambil keuntungan dari batasan yang dijelaskan dalam tantangan:
Matriks terdiri dari digit tunggal, jadi kita bisa menggabungkan semua sel sub-matriks tanpa pemisah apa pun dan masih mendapatkan representasi uniknya (misalnya
[[1,2],[3,4]]
dapat disimpan sebagai"1234"
).atau sebagai kode JS:
y / n << 7 | x << n
Berkomentar
sumber
Arang ,
5449 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Mengambil input sebagai array array dua dimensi berukuran sama. Output 1 pada kesuksesan, tidak ada pada kegagalan. Penjelasan:
Asumsikan sukses.
Loop di atas array.
Membagi array menjadi
n
potongan baris terukuran.Ulangi setiap potongan kolom.
Ekstrak potongan kolom untuk setiap baris dari potongan baris dan simpan submatrix yang dihasilkan dalam daftar.
Sementara daftar adalah kosong, hapus potongan terakhir dari daftar, yang dalam keadaan normal berasal dari array kedua.
Hitung jumlah kemunculan potongan itu di paruh pertama daftar, yang dalam keadaan normal berisi potongan yang tersisa dari array pertama.
Jika bukan nol maka hapus kejadian pertama dari potongan itu dari daftar.
Jika nol maka hapus output, membuatnya palsu.
sumber
J , 55 byte
Cobalah online!
Solusi yang mengerikan, baru saja membuatnya bekerja - saya tidak punya kekuatan untuk bermain golf ...
sumber
Haskell,
7473 byteCatatan: TIO belum diinstal
Data.Lists
, jadi saya menggunakanData.List
fungsi add yang hilangchunksOf
: Coba online!sumber
C # (Visual C # Interactive Compiler) , 186 byte
Cobalah online!
-1 terima kasih kepada @KevinCruijssen!
Lebih sedikit kode golf:
sumber
j++
dapat dihapus dan dapat ditempatkan di+=c[i][j++]+" ";
untuk menyimpan byte.PHP ,
186163162 byteCobalah online!
Seperti semua tantangan yang baik, saya mulai berpikir ini cukup mudah dan itu memberi saya beberapa kurva. @Kevin Cruijssen sudah selesai!
Memotong matriks menjadi string yang berisi nilai untuk setiap blok. Array kemudian disortir dan dibandingkan untuk kesetaraan.
Tidak Disatukan:
Keluaran
sumber
Merah ,
148147142 byteCobalah online!
sumber