Tugas
Diberikan diagram ASCII dari loop
misalnya
....................
......@@@@@.........
......@...@.........
.....@@...@@@@@.....
....@@........@.....
....@........@@.....
....@@@@@@@@@@......
....................
....................
Dan lokasi di loop
misalnya
(7,1)
Anda harus menemukan bagian dalam dan luar loop
misalnya
00000000000000000000
00000011111000000000
00000011111000000000
00000111111111100000
00001111111111100000
00001111111111100000
00001111111111000000
00000000000000000000
00000000000000000000
Spesifikasi
Anda dapat mengambil input untuk diagram sebagai string yang dipisahkan oleh baris baru atau yang jelas setara
Anda akan menerima koordinat pada loop (0 atau 1 diindeks) sebagai bagian dari input Anda. Anda dapat menempatkan asal Anda di tempat yang Anda inginkan. Anda dapat mengambil koordinat ini
(<row>, <column>)
,(<column>, <row>)
atau sebagai posisi linier pada string. Anda dapat menerima data ini dengan metode apa pun yang wajar. Semua karakter pada loop akan sama dengan karakter pada indeks itu.Output yang disukai adalah array 2 dimensi dari nilai-nilai kebenaran dan falsy, namun string
1
dan0
dipisahkan oleh baris baru atau apa pun yang jelas setara dari dua kemudian diterima. Di dalam dan di luar harus memiliki nilai kebenaran yang berbeda tetapi tidak masalah yang mana.Sebuah loop didefinisikan sebagai sekelompok karakter sehingga mereka semua karakter yang sama ( misalnya
@
) dan sehingga setiap karakter dalam loop memiliki jalur ke karakter asli (Karakter pada koordinat input) yang hanya melewati yang sama karakter (geometri Taxicab No diagonal ).Bagian dalam adalah semua loop itu sendiri dan tempat-tempat yang tidak dapat mencapai tepi diagram tanpa melewati loop.
Di luar ada tempat lain
Ini adalah kode-golf
[['.', '.'],['.', '@']]
bukannya string dengan baris baru?Jawaban:
MATLAB,
163 159 14678 byteTerima kasih @ rahnema1 untuk -66 byte !!!
Sekarang berhasil di Coba online! TETAPI beberapa penyesuaian diperlukan, karena MATLAB dan Oktaf tidak sepenuhnya kompatibel.
Penjelasan
Pertama kita membuat gambar biner yang hanya menutupi semua karakter yang sama dengan karakter awal. Kemudian kita menentukan komponen yang terhubung dengan karakter awal.
Setelah itu kami membuat gambar dari komponen yang terhubung dan menerapkan mengisi semua "lubang" di gambar.
sumber
MATLAB: 67 byte
Beberapa peringatan:
A
diasumsikan sebagai array karakter.output = f(A,2,8)
).bwlabel
danimfill
merupakan bagian dari Toolbox Pemrosesan Gambar.sumber