Cząsteczki żelaza wokół magnesu

14

Na planszy znajdują się cząsteczki żelaza. Przez tę płytkę przepuszczamy drut przewodzący prąd, a cząsteczki tworzą koła. Pokaż te okręgi, jeśli podane dane wejściowe to pozycja drutu.

Rozważ tablicę jako siatkę o rozmiarze 7x7 (naprawiona)

Nie są dozwolone dodatkowe białe spacje.

Dane wejściowe mogą być indeksowane 0 lub indeksowane 1. (W przykładach indeksowane 0)

Przykłady

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||||||
-/|||||
--/||||
---/|||

To jest golf golfowy, więc wygrywa najkrótszy kod.

Wedant Kandoi
źródło
Czy funkcja może wypisać matrycę 7x7 ze znakami, czy też musimy wydrukować ją na konsoli?
digEmAll

Odpowiedzi:

7

J , 40 bajtów

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

Wypróbuj online!

FrownyFrog
źródło
Staranne użycie rysowania po raz kolejny! Czy potrafisz przedstawić plan całego rozwiązania? Dzięki!
Galen Iwanow,
5

R , 136 119 116 bajtów

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}

Wypróbuj online!

  • -3 bajty zapisane dzięki @Giuseppe

Funkcja, która pobiera (rząd, kolumna) współrzędne drutu (1-indeksowane) i zwraca macierz 7x7 ze znakami.

digEmAll
źródło
1

JavaScript (ES7),  105  103 bajtów

Pobiera dane wejściowe jako (y)(x)0-indeksowane.

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)

Wypróbuj online!

Arnauld
źródło
1

Perl 6 , 90 bajtów

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

Wypróbuj online!

Anonimowy blok kodu, który przyjmuje dwie liczby i zwraca listę wierszy.

Jo King
źródło
1

Python 2 , 105 bajtów

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)

Wypróbuj online!

TFeld
źródło
0

Węgiel drzewny , 21 bajtów

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

Wypróbuj online! Pobiera na wejściu kolumnę i wiersz z indeksowaniem 0. Wyjaśnienie:

GL⁷-

Narysuj trójkąt -s.

↙⁶

Narysuj linię wzdłuż przeciwprostokątnej. (Jest to niewłaściwa metoda, ale naprawimy to później.)

X

Narysuj ten, Xktóry pokazuje pozycję drutu. (Oczywiście można tu użyć dowolnego innego znaku ASCII.) To kończy jedną ósmą rysunku.

‖B↘¬

Refleksja trzy razy ( ¬= lewy + dolny) podczas przekształcania znaków, aby prawie ukończyć schemat.

Odbij bez przekształcania, aby przełączyć /s na \s, aby teraz wskazywały naX zamiast niego.

J±N±N

Przejdź do lewego górnego rogu żądanego wyjścia.

T⁷¦⁷

Przytnij wynik do pożądanego rozmiaru.

Neil
źródło