pengantar
Untuk keperluan tantangan ini, kita akan mendefinisikan tetangga dari elemen dalam matriks persegi (sedemikian sehingga ) sebagai semua entri yang berbatasan langsung secara diagonal, horizontal atau vertikal ke (yaitu mereka "mengelilingi" , tanpa membungkus).
Untuk para pendaki, definisi formal dari tetangga untuk sebuahmatixadalah (0-diindeks):
Katakanlah elemen pada indeks
Tugas
Cukup cerita: Diberikan matriks persegi dari bilangan bulat positif, hasilkan salah satu dari yang berikut:
- Daftar elemen yang datar (diduplikasi atau tidak) yang menunjukkan semua entri yang menempati beberapa indeks di M sedemikian rupa sehingga tetangga N_ {i, \: j} bermusuhan.
- Matriks boolean dengan s pada posisi di mana tetangga tidak bersahabat dan sebaliknya (Anda dapat memilih nilai konsisten lainnya sebagai pengganti dan ).
- Daftar pasangan indeks yang mewakili lingkungan yang tidak bersahabat.
Implementasi Referensi di Physica - mendukung sintaksis Python juga untuk I / O. Anda dapat mengambil input dan memberikan output melalui metode standar apa pun dan dalam format apa pun yang masuk akal, sambil memperhatikan bahwa celah ini dilarang secara default. Ini adalah kode-golf, jadi kode terpendek dalam byte (dalam setiap bahasa) menang!
Selain itu, Anda dapat mengambil ukuran matriks sebagai input juga dan juga dapat mengambil matriks sebagai daftar datar karena akan selalu persegi.
Contoh
Pertimbangkan matriks berikut:
Tetangga yang sesuai dari setiap elemen adalah:
i j – E -> Neighbours | All coprime to E?
|
0 0 – 64 -> {10; 27; 22} | False
0 1 – 10 -> {64; 14; 27; 22; 32} | False
0 2 – 14 -> {10; 22; 32} | False
1 0 – 27 -> {64; 10; 22; 53; 58} | True
1 1 – 22 -> {64; 10; 14; 27; 32; 53; 58; 36} | False
1 2 – 32 -> {10; 14; 22; 58; 36} | False
2 0 – 53 -> {27; 22; 58} | True
2 1 – 58 -> {27; 22; 32; 53; 36} | False
2 2 – 36 -> {22; 32; 58} | False
Dan dengan demikian hasilnya harus salah satu dari yang berikut:
{27; 53}
{{0; 0; 0}; {1; 0; 0}; {1; 0; 0}}
{(1; 0); (2; 0)}
Uji kasus
Input –> Version 1 | Version 2 | Version 3
[[36, 94], [24, 69]] ->
[]
[[0, 0], [0, 0]]
[]
[[38, 77, 11], [17, 51, 32], [66, 78, 19]] –>
[38, 19]
[[1, 0, 0], [0, 0, 0], [0, 0, 1]]
[(0, 0), (2, 2)]
[[64, 10, 14], [27, 22, 32], [53, 58, 36]] ->
[27, 53]
[[0, 0, 0], [1, 0, 0], [1, 0, 0]]
[(1, 0), (2, 0)]
[[9, 9, 9], [9, 3, 9], [9, 9, 9]] ->
[]
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
[]
[[1, 1, 1], [1, 1, 1], [1, 1, 1]] ->
[1, 1, 1, 1, 1, 1, 1, 1, 1] or [1]
[[1, 1, 1], [1, 1, 1], [1, 1, 1]]
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
[[35, 85, 30, 71], [10, 54, 55, 73], [80, 78, 47, 2], [33, 68, 62, 29]] ->
[71, 73, 47, 29]
[[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]
[(0, 3), (1, 3), (2, 2), (3, 3)]
sumber
Jawaban:
APL (Dyalog) , 17 byte
Cobalah online! (kredit untuk ngn karena menerjemahkan kasus uji ke APL)
Penjelasan singkat
(×/∘,↓)⌺3 3
mendapat produk dari setiap elemen dengan tetangganya.Kemudian saya bagi dengan argumen
÷⊢
, sehingga setiap entri dalam matriks telah dipetakan ke produk tetangganya.Akhirnya saya mengambil gcd dari argumen dengan matriks ini
⊢∨
, dan memeriksa kesetaraan dengan 1,1=
Catatan, seperti dengan jawaban ngn , ini gagal untuk beberapa input karena bug pada juru bahasa.
sumber
JavaScript (ES6), 121 byte
Mengembalikan matriks nilai Boolean, di mana false berarti bermusuhan.
Cobalah online!
Bagaimana?
Metode yang digunakan untuk mengisolasi 8 tetangga masing-masing sel mirip dengan yang saya jelaskan di sini .
Berkomentar
sumber
MATL , 22 byte
Input adalah sebuah matriks. Keluaran adalah semua angka dengan tetangga yang bermusuhan.
Cobalah online! Atau verifikasi semua kasus uji .
Penjelasan dengan contoh yang berhasil
Pertimbangkan input
[38, 77, 11; 17, 51, 32; 66, 78, 19]
sebagai contoh. Isi tumpukan ditampilkan dari bawah ke atas.sumber
APL (Dyalog Classic) ,
2322 byte-1 byte terima kasih kepada @ H.PWiz
Cobalah online!
tidak mendukung matriks yang lebih kecil dari 3x3 karena ada bug pada juru bahasa
sumber
(⊃∨⊢)
->∨∘⊂⍨
Saya pikirJelly , 24 byte
Hmm, sepertinya panjang.
Tautan monadik yang menerima daftar daftar bilangan bulat positif yang mengembalikan daftar setiap nilai yang ada di lingkungan yang bermusuhan (versi 1 tanpa de-duplikasi).
Cobalah online! Atau lihat test-suite .
Bagaimana?
sumber
Python 2 ,
182177166 byteCobalah online!
Output daftar daftar dengan entri Benar / Salah.
sumber
Haskell , 95 byte
Cobalah online!
Fungsi
?
mengambil matriksm
sebagai daftar daftar dan ukuran matriksn
; ia mengembalikan daftar entri dalam permusuhan .sumber