Particelle di ferro attorno a un magnete


14

Ci sono alcune particelle di ferro su una tavola. Passiamo un filo trasportatore di corrente attraverso quella scheda e le particelle formano dei cerchi. Mostra questi cerchi se l'input fornito è la posizione del filo.

Considera la scheda come una griglia di dimensioni 7x7 (fissa)

Non sono ammessi spazi bianchi extra.

L'input può essere 0-indicizzato o 1-indicizzato. (0 indicizzato negli esempi)

Esempi

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

Questo è code-golf, quindi vince il codice più corto.


La funzione può generare una matrice 7x7 con i caratteri o dobbiamo stamparla sulla console?
digEmAll

Risposte:



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}

Provalo online!

  • -3 byte salvati grazie a @Giuseppe

Funzione che accetta le coordinate (riga, col) del filo (1-indicizzato) e restituisce una matrice 7x7 con i caratteri.



1

JavaScript (ES7),  105  103 byte

Accetta input come (y)(x), indicizzati 0.

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)

Provalo online!


1

Perl 6 , 90 byte

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

Provalo online!

Blocco di codice anonimo che accetta due numeri e restituisce un elenco di righe.



0

Carbone , 21 byte

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

Provalo online! Accetta la colonna e la riga con indice 0 come input. Spiegazione:

GL⁷-

Disegna un triangolo di -s.

↙⁶

Traccia una linea lungo l'ipotenusa. (Questo è il modo sbagliato ma lo risolveremo in seguito.)

X

Disegna quello Xche mostra la posizione del filo. (Naturalmente è possibile utilizzare qui qualsiasi altro carattere ASCII.) Questo completa un ottavo del disegno.

‖B↘¬

Rifletti tre volte ( ¬= sinistra + giù) mentre trasformi i caratteri per completare quasi il diagramma.

Rifletti senza trasformarti per cambiare la /s con la \s in modo che ora puntino intorno Xinvece che verso di essa.

J±N±N

Salta in alto a sinistra dell'output desiderato.

T⁷¦⁷

Taglia il risultato nella dimensione desiderata.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.