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.


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

Antworten:



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.



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!


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.



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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.