Железные частицы вокруг магнита

14

На доске есть частицы железа. Через эту доску мы пропускаем токонесущий провод, и частицы образуют круги. Покажите эти круги, если на входе указано положение провода.

Считайте, что доска - это сетка размером 7x7 (фиксированная)

Никаких лишних пробелов не допускается.

Ввод может быть 0-индексирован или 1-индексирован. (0-проиндексировано в примерах)

Примеры

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

Это код-гольф, поэтому выигрывает самый короткий код.

Ведант Кандой
источник
Может ли функция вывести матрицу 7x7 с символами или нам нужно напечатать ее на консоли?
digEmAll

Ответы:

7

J , 40 байт

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

Попробуйте онлайн!

FrownyFrog
источник
Опрятное использование рисунка коробки еще раз! Можете ли вы представить план всего решения? Благодарность!
Гален Иванов
5

R , 136 119 116 байт

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}

Попробуйте онлайн!

  • -3 байта сохранено благодаря @Giuseppe

Функция, которая принимает (row, col) координаты провода (индексируется 1) и возвращает матрицу 7x7 с символами.

digEmAll
источник
1

JavaScript (ES7),  105  103 байт

Принимает ввод как (y)(x), 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)

Попробуйте онлайн!

Arnauld
источник
1

Perl 6 , 90 байт

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

Попробуйте онлайн!

Блок анонимного кода, который принимает два числа и возвращает список строк.

Джо Кинг
источник
0

Древесный уголь , 21 байт

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

Попробуйте онлайн! Принимает 0-индексированный столбец и строку в качестве ввода. Объяснение:

GL⁷-

Нарисуйте треугольник -с.

↙⁶

Нарисуйте линию вдоль гипотенузы. (Это неправильный путь, но мы исправим это позже.)

X

Нарисуйте, Xчто показывает положение провода. (Конечно, здесь можно использовать любой другой символ ASCII.) Это завершает одну восьмую часть рисунка.

‖B↘¬

Отразите три раза ( ¬= влево + вниз), преобразуя символы, чтобы почти завершить диаграмму.

Отражайте без преобразования, чтобы переключать /s с помощью \s, чтобы они теперь указывали вокруг, Xа не к нему.

J±N±N

Перейти в верхнем левом углу желаемого выхода.

T⁷¦⁷

Обрежьте результат до желаемого размера.

Нил
источник