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.


Czy funkcja może wypisać matrycę 7x7 ze znakami, czy też musimy wydrukować ją na konsoli?
digEmAll

Odpowiedzi:



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.



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!


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.



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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.