Partículas de ferro ao redor de um ímã

14

Existem algumas partículas de ferro em uma placa. Passamos um fio condutor de corrente através desse painel e as partículas formam círculos. Mostre esses círculos se a entrada fornecida for a posição do fio.

Considere o quadro como uma grade de tamanho 7x7 (fixo)

Não são permitidos espaços em branco extras.

A entrada pode ser indexada em 0 ou 1. (Indexado com 0 em exemplos)

Exemplos

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

Isso é código-golfe, então o código mais curto vence.

Vedant Kandoi
fonte
A função pode gerar uma matriz 7x7 com os caracteres ou precisamos imprimi-la no console?
digEmAll 12/12

Respostas:

7

J , 40 bytes

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

Experimente online!

FrownyFrog
fonte
Uso puro do desenho da caixa mais uma vez! Você pode fornecer uma planificação axial de toda a solução? Obrigado!
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}

Experimente online!

  • -3 bytes salvos graças a @Giuseppe

Função que pega (linha, col) coordenadas do fio (indexado 1) e retorna uma matriz 7x7 com os caracteres.

digEmAll
fonte
1

JavaScript (ES7),  105  103 bytes

Aceita entrada como (y)(x)indexada em 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)

Experimente online!

Arnauld
fonte
1

Perl 6 , 90 bytes

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

Experimente online!

Bloco de código anônimo que recebe dois números e retorna uma lista de linhas.

Brincadeira
fonte
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)

Experimente online!

TFeld
fonte
0

Carvão , 21 bytes

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

Experimente online! Leva a coluna indexada 0 e a linha como entrada. Explicação:

GL⁷-

Desenhe um triângulo de -s.

↙⁶

Desenhe uma linha ao longo da hipotenusa. (Este é o caminho errado, mas corrigiremos isso mais tarde.)

X

Desenhe o Xque mostra a posição do fio. (Qualquer outro caractere ASCII pode ser usado aqui, é claro.) Isso completa um oitavo do desenho.

‖B↘¬

Reflita três vezes ( ¬= esquerda + baixo) enquanto transforma caracteres para quase completar o diagrama.

Reflita sem se transformar para alternar /s com \es, de modo que agora aponte ao redor e Xnão em direção a ele.

J±N±N

Salte para o canto superior esquerdo da saída desejada.

T⁷¦⁷

Corte o resultado no tamanho desejado.

Neil
fonte