Eisenteilchen um einen Magneten

14

Auf einem Brett befinden sich einige Eisenpartikel. Wir führen einen stromführenden Draht durch diese Platine und die Partikel bilden Kreise. Zeigen Sie diese Kreise an, wenn die angegebene Eingabe die Position des Drahtes ist.

Betrachten Sie das Board als ein Raster der Größe 7x7 (fest)

Es sind keine zusätzlichen Leerzeichen zulässig.

Die Eingabe kann 0-indiziert oder 1-indiziert sein. (0-indiziert in Beispielen)

Beispiele

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

Das ist Code-Golf, also gewinnt der kürzeste Code.

Vedant Kandoi
quelle
Kann die Funktion eine 7x7-Matrix mit den Zeichen ausgeben oder müssen wir sie auf der Konsole drucken?
digEmAll

Antworten:

7

J , 40 Bytes

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

Probieren Sie es online!

FrownyFrog
quelle
Nochmals ordentliches Zeichnen! Können Sie eine Erläuterung der gesamten Lösung geben? Vielen Dank!
Galen Ivanov
5

R , 136, 119, 116 Bytes

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}

Probieren Sie es online!

  • -3 Bytes gespart dank @Giuseppe

Funktion, die die (Zeilen-, Spalten-) Koordinaten der Leitung (1-indiziert) nimmt und eine 7x7-Matrix mit den Zeichen zurückgibt.

digEmAll
quelle
1

JavaScript (ES7),  105  103 Byte

Nimmt die Eingabe als (y)(x)0-indiziert an.

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)

Probieren Sie es online!

Arnauld
quelle
1

Perl 6 , 90 Bytes

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

Probieren Sie es online!

Anonymer Codeblock, der zwei Zahlen akzeptiert und eine Liste von Zeilen zurückgibt.

Scherzen
quelle
1

Python 2 , 105 Bytes

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)

Probieren Sie es online!

TFeld
quelle
0

Holzkohle , 21 Bytes

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

Probieren Sie es online! Nimmt 0-indizierte Spalten und Zeilen als Eingabe. Erläuterung:

GL⁷-

Zeichne ein Dreieck von -s.

↙⁶

Zeichnen Sie eine Linie entlang der Hypotenuse. (Dies ist der falsche Weg, aber wir werden das später beheben.)

X

Zeichnen Sie das X, das die Position des Drahtes zeigt. (Hier kann natürlich jedes andere ASCII-Zeichen verwendet werden.) Damit ist ein Achtel der Zeichnung fertig.

‖B↘¬

Dreimal spiegeln ( ¬= links + unten), während Zeichen transformiert werden, um das Diagramm fast zu vervollständigen.

Überlegen Sie sich, ohne sich zu verwandeln, und tauschen Sie das /s gegen das \s aus, sodass sie jetzt auf das Xanstatt darauf zeigen.

J±N±N

Springe zum oberen linken Rand der gewünschten Ausgabe.

T⁷¦⁷

Schneiden Sie das Ergebnis auf die gewünschte Größe.

Neil
quelle