Deskripsi tantangan
Dalam metrik taksi , jarak antara dua titik didefinisikan sebagai:
Pertimbangkan sebuah matriks dengan nol dan hanya satu:
0 0 0 1 0
1 0 0 0 0
0 0 0 0 0
1 0 0 1 0
1 0 0 0 0
Mari kita memetakan masing 1
- masing ke jarak ke perbedaan terdekat 1
dalam matriks (tentu saja, dengan asumsi bahwa jarak antara dua baris / kolom yang berdekatan sama dengan 1):
0 0 0 3 0
2 0 0 0 0
0 0 0 0 0
1 0 0 3 0
1 0 0 0 0
Untuk tantangan ini, diberikan matriks, temukan peta jaraknya seperti yang ditunjukkan di atas.
Contohnya
0 0 1
0 0 0
0 0 0
0 1 0
0 0 0
0 0 4
0 0 0
0 0 0
0 4 0
0 0 0
-----
0 0 0 0 0 0 1
0 1 0 1 0 0 0
1 1 0 0 0 0 1
0 0 1 0 0 0 0
0 0 0 0 0 1 0
0 1 0 0 0 0 0
1 0 0 0 0 0 0
0 0 0 1 0 0 1
0 0 0 0 0 0 2
0 1 0 2 0 0 0
1 1 0 0 0 0 2
0 0 2 0 0 0 0
0 0 0 0 0 3 0
0 2 0 0 0 0 0
2 0 0 0 0 0 0
0 0 0 3 0 0 3
-----
1 1 1
1 1 1
1 1 1
1 1 1
1 1 1
1 1 1
-----
1 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 1
22 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 22
-----
0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 9 0 0 0 0 0 0 0 0 2 0 0 0 4
0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0
-----
1 1
1 1
Catatan
- Anda dapat mengambil input dalam format apa pun yang masuk akal
- Terlepas dari
0
dan1
Anda dapat memilih dua nilai berbeda - Anda dapat mengasumsikan bahwa sebuah matriks adalah non-kosong (mengandung setidaknya satu baris panjang lebih besar atau sama dengan 1), dan juga merupakan persegi panjang
- Anda juga dapat mengasumsikan setidaknya ada dua nilai kebenaran yang ada dalam matriks (jika tidak, output tidak ditentukan)
- Anda dapat menulis program lengkap, atau suatu fungsi
- Alih-alih mengembalikan matriks baru, Anda dapat memodifikasi yang sudah ada
- Ini adalah kode-golf , jadi buat hitungan byte Anda serendah mungkin!
code-golf
matrix
binary-matrix
shooqie
sumber
sumber
Jawaban:
MATL ,
2322 byteCobalah online! Atau verifikasi semua kasus uji .
Penjelasan
Untuk melihat hasil antara, mungkin berguna untuk menyisipkan
X#
(menampilkan tumpukan) di antara dua statment.sumber
t
detik dan tidak adaM
Taksi , 14652 byte
Cobalah online!
Saya berasumsi bahwa tidak ada manusia yang ingin mencoba membaca kode itu jadi cobalah secara online dengan komentar, label yang bermakna, dan hasil yang lebih mudah dibaca!
Memasukkan: String yang mewakili array. String harus terdiri dari 3 karakter:
0
,|
mewakili baris istirahat, dan setiap digit lebih besar positif dari satu (PDGTO). Saya suka menggunakan8
. OP memungkinkan input dalam format apa pun yang masuk akal dan saya yakin ini memenuhi syarat. String tidak harus memformat ke array persegi panjang tetapi akan diasumsikan kiri rata apa pun itu.Output: Array nilai yang menunjukkan jarak taksi minimum dari masing
PDGTO
- masing ke yang terdekatPDGTO
.Contoh:
Format keluaran kedua jelas jauh lebih mudah dibaca tetapi juga menambahkan 7 byte ke program dan ini adalah kode-golf . Akan mungkin untuk kembali di akhir dan menghapus semua nol trailing bukan hanya mengisi
0
nilai tetapi itu akan menambahkan lebih banyak byte dan dianggap biaya yang tidak dapat diterima.Inilah teks dari kode un-golfed dengan komentar, label yang lebih baik, dan output yang lebih jelas:
(Ini sama seperti yang Anda dapatkan dengan tautan di atas.)
sumber
Python 3 + numpy , 102 byte
Cobalah online!
Mengambil input sebagai
numpy
array.Python 3 , 127 byte
Cobalah online!
sumber
Perl 5 , 197 byte
Cobalah online!
sumber
$#
, pada dasarnya ...JavaScript (ES6), 97 byte
Mengambil input dalam sintaks currying
(w)(a)
, di mana w adalah lebar dari matriks dan a adalah array datar dari nol dan satu. Mengembalikan susunan datar lainnya.Uji kasus
Cuplikan ini mencakup fungsi pembantu untuk memformat output agar mudah dibaca.
Tampilkan cuplikan kode
sumber
Oktaf, 59 byte
Mengambil input sebagai array 2D.
Cobalah online!
Penjelasan:
Untuk setiap lokasi 1s yang ditemukan dalam larik, atur menjadi nol dan hitung transformasi jarak blok kota dari larik dan akhirnya setel lokasi ke jarak yang dihitung.
sumber
Python 3 dengan Numpy ,
106101 byte5 byte off berkat @ notjagan
Fungsi yang menginput array Numpy dan output dengan memodifikasi array itu (yang diizinkan secara default ).
Cobalah online!
sumber
Jelly , 27 byte
Cobalah online!
sumber