Partículas de hierro alrededor de un imán.

14

Hay algunas partículas de hierro en un tablero. Pasamos un cable de corriente a través de ese tablero y las partículas forman círculos. Muestre estos círculos si la entrada dada es la posición del cable.

Considere que el tablero es una cuadrícula de tamaño 7x7 (fijo)

No se permiten espacios en blanco adicionales.

La entrada puede ser indexada 0 o indexada 1. (0-indexado en ejemplos)

Ejemplos

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

Este es el código de golf, por lo que gana el código más corto.

Vedant Kandoi
fuente
¿Puede la función generar una matriz de 7x7 con los caracteres o necesitamos imprimirla en la consola?
digEmAll

Respuestas:

7

J , 40 bytes

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

Pruébalo en línea!

FrownyFrog
fuente
¡Uso ordenado del dibujo de caja una vez más! ¿Puede proporcionar una explicación completa de toda la solución? ¡Gracias!
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}

Pruébalo en línea!

  • -3 bytes guardados gracias a @Giuseppe

Función que toma las coordenadas (fila, col) del cable (indexado en 1) y devuelve una matriz de 7x7 con los caracteres.

digEmAll
fuente
1

JavaScript (ES7),  105  103 bytes

Toma la entrada como (y)(x)0 indexada.

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)

Pruébalo en línea!

Arnauld
fuente
1

Perl 6 , 90 bytes

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

Pruébalo en línea!

Bloque de código anónimo que toma dos números y devuelve una lista de líneas.

Jo King
fuente
0

Carbón de leña , 21 bytes

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

Pruébalo en línea!Toma la columna y la fila indexadas en 0 como entrada. Explicación:

GL⁷-

Dibuja un triangulo de - s.

↙⁶

Dibuja una línea a lo largo de la hipotenusa. (Esto es al revés, pero lo arreglaremos más adelante).

X

Dibuja el X que muestra la posición del cable. (Cualquier otro carácter ASCII podría usarse aquí, por supuesto). Esto completa un octavo del dibujo.

‖B↘¬

Reflexiona tres veces (¬ = izquierda + abajo) mientras transformas caracteres para completar casi el diagrama.

Reflexione sin transformar para cambiar la /s con el\ s para que ahora apunten alrededor de laX de ella en lugar de hacia ella.

J±N±N

Salta a la esquina superior izquierda de la salida deseada.

T⁷¦⁷

Recorte el resultado al tamaño deseado.

Neil
fuente