Partikel besi di sekitar magnet

14

Ada beberapa partikel besi di papan tulis. Kami melewati kawat pembawa arus melalui papan itu dan partikel membentuk lingkaran. Tunjukkan lingkaran ini jika input yang diberikan adalah posisi kabel.

Pertimbangkan papan sebagai kisi ukuran 7x7 (tetap)

Tidak ada ruang ekstra putih diizinkan.

Input dapat diindeks 0 atau diindeks 1. (Diindeks dalam contoh)

Contohnya

input:3,3 # 'X' is wire here but can be shown by anything other than '\/|-'
output:
/-----\
|/---\|
||/-\||
|||X|||
||\-/||
|\---/|
\-----/

input:1,2
output:
|/-\|||
||X||||
|\-/|||
\---/||
-----/|
------/
-------

input:0,0
output:
X||||||
-/|||||
--/||||
---/|||
----/||
-----/|
------/

input:0,3
output:
|||X|||
||\-/||
|\---/|
\-----/
-------
-------
-------

input:3,0
output:
---\|||
--\||||
-\|||||
X||||||
-/|||||
--/||||
---/|||

Ini adalah kode-golf sehingga kode terpendek menang.

Vedant Kandoi
sumber
Bisakah fungsi menghasilkan matriks 7x7 dengan karakter atau kita perlu mencetaknya di konsol?
digEmAll

Jawaban:

7

J , 40 byte

7 7{.6 6&-|.0":<^:6@8[9!:7@'/_\___\_/|-'

Cobalah online!

FrownyFrog
sumber
Penggunaan kotak gambar dengan rapi sekali lagi! Bisakah Anda memberikan rencana keseluruhan dari solusi? Terima kasih!
Galen Ivanov
5

R , 136 119 116 byte

function(i,j,m=diag(7),R=row(m)-i,a=j-col(m)){m[]='-'
m[R==a]='\\'
m[R==-a]='/'
m[R<a&R>-a|R>a&-R>a]='|'
m[i,j]=0
m}

Cobalah online!

  • -3 byte disimpan berkat @Giuseppe

Fungsi yang mengambil (baris, col) koordinat kawat (1-diindeks) dan mengembalikan matriks 7x7 dengan karakter.

menggali semua
sumber
1

JavaScript (ES7),  105  103 byte

Mengambil input sebagai (y)(x), 0-diindeks.

Y=>X=>(g=x=>y<7?`/\\-|X
`[h=(X-x)**2,v=(Y-y)**2,x<7?h<v?2:h>v?3:h?x<X^y<Y:4:5]+g(x<7?x+1:!++y):'')(y=0)

Cobalah online!

Arnauld
sumber
1

Perl 6 , 90 byte

{<| v - \ X />[1+([-]($_>>.abs).sign||3+[*]($_).sign)for ^7-$^a X ^7-$^b].rotor(7)>>.join}

Cobalah online!

Blok kode anonim yang mengambil dua angka dan mengembalikan daftar baris.

Jo King
sumber
1

Python 2 , 105 byte

lambda x,y:[''.join(['/-|'[cmp(abs(i-x),abs(j-y))],'\X'[i==x]][i-x==y-j]for j in R)for i in R]
R=range(7)

Cobalah online!

TFeld
sumber
0

Arang , 21 byte

GL⁷-↙⁶X‖B↘¬‖J±N±NT⁷¦⁷

Cobalah online! Mengambil kolom dan baris yang diindeks 0 sebagai input. Penjelasan:

GL⁷-

Gambarlah segitiga -s.

↙⁶

Buat garis di sepanjang sisi miring. (Ini cara yang salah tapi kami akan memperbaikinya nanti.)

X

Gambarlah Xyang menunjukkan posisi kawat. (Karakter ASCII lainnya dapat digunakan di sini tentu saja.) Ini melengkapi seperdelapan gambar.

‖B↘¬

Refleksikan tiga kali ( ¬= kiri + bawah) sambil mengubah karakter untuk hampir menyelesaikan diagram.

Merefleksikan tanpa mengubah untuk mengganti /s dengan \s sehingga mereka sekarang menunjuk sekitar Xbukannya ke arah itu.

J±N±N

Lompat ke kiri atas dari output yang diinginkan.

T⁷¦⁷

Potong hasilnya ke ukuran yang diinginkan.

Neil
sumber