Вступление
Вы можете знать и любить свой обычный круг единиц. Но математики сумасшедшие, и поэтому они абстрагировали концепцию до любой точки, которая удовлетворяет x*x+y*y=1
. Поскольку криптографы 1 тоже странные, они любят конечные поля, а иногда и конечные кольца (хотя у них нет большого выбора), поэтому давайте объединим это!
Соревнование
вход
Целое положительное число больше единицы в вашей любимой кодировке. Давайте назовем этот номер n.
Выход
Вы выведете «изображение» (которое состоит из n раз по n символов) единичного круга по модулю входного целого числа как ASCII-Art, используя «X» (латинские буквы верхнего регистра X) и «» (пробел). Пробелы и переводы строки разрешены.
Подробнее
Вы должны охватить систему координат от нижнего левого до верхнего правого. Всякий раз, когда точка удовлетворяет уравнению окружности, поместите X в положение, в противном случае поместите пробел.
Условие для точки следует рассматривать как часть границы круга является:
mod(x*x+y*y,n)==1
.
Вот краткая иллюстрация системы координат:
(0,4)(1,4)(2,4)(3,4)(4,4)
(0,3)(1,3)(2,3)(3,3)(4,3)
(0,2)(1,2)(2,2)(3,2)(4,2)
(0,1)(1,1)(2,1)(3,1)(4,1)
(0,0)(1,0)(2,0)(3,0)(4,0)
Если это поможет вам, вы также можете инвертировать направление любой из осей, но примеры предполагают такую ориентацию.
Кто выигрывает?
Это код-гольф, поэтому выигрывает самый короткий код в байтах! Разрешены только стандартные методы ввода-вывода, а все стандартные лазейки запрещены.
Примеры
Вход: 2
X
X
Вход: 3
X
X
XX
Вход: 5
X
X
X X
Вход: 7
X
X X
X X
X
X X
Вход: 11
X
XX
X X
X X
XX
X
X X
Вход: 42
X
X X
X X
X X
X X
X
X X X X
X X X X
X
X X
X X
X X
X X
X
X X X X
X
X X
X X
X X
X X
X
X X X X
X X X X
X
X X
X X
X X
X X
X
X X X X
1 Я предлагаю вам взглянуть на мой профиль, если вам интересно здесь.
Ответы:
Bash + GNU Utilities, 59
Ввод
n
дан как параметр командной строки. Ось Y инвертирована.Попробуйте онлайн .
источник
Октава ,
4544 байтаПопробуйте онлайн!
источник
@(n)[(mod((x=(0:n-1).^2)+x',n)==1)*88,'']
. В некоторых системах Octave рассматривает персонажа0
как пробелHaskell , 68 байт
Попробуйте онлайн! Ось Y перевернута. Использование:
f 42
возвращает строку с разделителем новой строки.Это понимание вложенного списка, где оба
x
иy
взяты из диапазона[0..n-1]
.last$' ':['X'|mod(x*x+y*y)n==1]
это более короткая формаif mod(x*x+y*y)n==1 then 'X' else ' '
. Понимание списка оценивается как список строк, который превращается в одну строку, разделенную новой строкойunlines
.источник
Mathematica,
5648 байтовИзменить: Спасибо Грег Мартин и Мартин Эндер за сохранение 8 байтов.
Оригинальное решение:
источник
X
:)Array
иNorm
:Grid@Array[If[Mod[Norm@{##}^2,x]==1,X]&,{x=#,#},0]&
#^2+#2^2
короткое.If
- ниTrue
тоFalse
, ни другое , вам нужен четвертый аргумент, или он остается неоцененным, ноIf[False,_]
возвращаетNull
. Weird.Array
но не думал установить аргумент в переменную.CJam , 23 байта
Попробуйте онлайн!
источник
JavaScript (ES6), 81 байт
Ось Y является противоположностью OP.
источник
Röda , 74 байта
Попробуйте онлайн!
Ungolfed:
источник
Python 3 ,
8783 байтаПопробуйте онлайн!
Ось Y инвертирована
источник
Желе ,
1413 байтовОсь X инвертирована.
Попробуйте онлайн!
Как это устроено
источник
постоянный ток , 79 байт
y
Оу инвертируется в то время какx
ось не является.Попробуйте онлайн!
источник
MATL , 13 байт
Происхождение вверху слева. Таким образом, результат перевернут с ног на голову по сравнению с примерами в задаче.
Попробуйте в MATL онлайн!
объяснение
источник
Python 3 , (
1029895 байтов)ось Y инвертирована
Попробуйте онлайн!
источник
p(end=' 'if(i*i+j*j)%n-1else'X')
для 95 байтLithp , 125 байт
Разрыв строки для удобства чтения.
Попробуйте онлайн!
Не самый короткий. Я думаю, что мне нужен какой-то сокращенный модуль. См. Ссылку «Попробуй онлайн» для более подробного объяснения, версии без игры и некоторых тестов. Для достижения наилучших результатов разверните окно вывода, чтобы увидеть больше.
источник
Python 3 , 82 байта
Попробуйте онлайн!
источник
GNU APL , 41 символ, 59 байтов
Читает целое число и отображает круг.
Ungolfed
источник
Haskell, 115 байт
Ось Y инвертирована.
Попробуйте онлайн!
Все эти скобки меня раздражают ...
объяснение
источник
map
с<$>
, верно?J , 20 байт
Попробуйте онлайн!
источник
GolfScript , 34 байта
Попробуйте онлайн!
Я действительно не люблю использовать переменные ...
источник