Particules de fer autour d'un aimant


14

Il y a des particules de fer sur une planche. Nous passons un fil porteur de courant à travers cette carte et les particules forment des cercles. Montrez ces cercles si l'entrée donnée est la position du fil.

Considérez la carte comme une grille de taille 7x7 (fixe)

Aucun espace blanc supplémentaire n'est autorisé.

L'entrée peut être indexée 0 ou indexée 1. (0 indexé dans les exemples)

Exemples

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

C'est le code-golf donc le code le plus court gagne.


La fonction peut-elle produire une matrice 7x7 avec les caractères ou devons-nous l'imprimer sur la console?
digEmAll

Réponses:



5

R , 136 119 116 116 octets

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}

Essayez-le en ligne!

  • -3 octets enregistrés grâce à @Giuseppe

Fonction qui prend les coordonnées (ligne, col) du fil (indexé 1) et renvoie une matrice 7x7 avec les caractères.



1

JavaScript (ES7),  105  103 bytes

Prend l'entrée comme (y)(x) , 0 indexé.

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)

Essayez-le en ligne!


1

Perl 6 , 90 octets

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

Essayez-le en ligne!

Bloc de code anonyme qui prend deux nombres et renvoie une liste de lignes.



0

Fusain , 21 octets

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

Essayez-le en ligne! Prend la colonne et la ligne indexées 0 comme entrée. Explication:

GL⁷-

Tracez un triangle de -s.

↙⁶

Tracez une ligne le long de l'hypoténuse. (Ce n'est pas la bonne solution, mais nous corrigerons cela plus tard.)

X

Dessinez le Xqui montre la position du fil. (Bien entendu, tout autre caractère ASCII pourrait être utilisé ici.) Ceci termine un huitième du dessin.

‖B↘¬

Réfléchissez trois fois ( ¬= gauche + bas) tout en transformant les personnages pour presque compléter le diagramme.

Réfléchissez sans transformer pour basculer le /s avec le \s afin qu'ils pointent maintenant autour du Xau lieu de vers lui.

J±N±N

Aller en haut à gauche de la sortie souhaitée.

T⁷¦⁷

Coupez le résultat à la taille souhaitée.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.