Учитывая входное целое число n > 1
, выведите восьмиугольник в стиле ASCII с длинами сторон, состоящими из n
символов. Смотрите примеры ниже:
n=2
##
# #
# #
##
n=3
###
# #
# #
# #
# #
# #
###
n=4
####
# #
# #
# #
# #
# #
# #
# #
# #
####
n=5
#####
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
#####
and so on.
Вы можете распечатать его в STDOUT или вернуть как результат функции.
Любое количество посторонних пробелов является приемлемым, при условии, что символы выстраиваются соответствующим образом.
Правила и ввод / вывод
- Вход и выход могут быть заданы любым удобным способом .
- Вы можете использовать любой печатный символ ASCII вместо
#
(кроме пробела), но символ "фона" должен быть пробелом (ASCII 32). - Либо полная программа или функция приемлемы.
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
code-golf
ascii-art
code-golf
geometry
code-golf
balanced-string
code-golf
cops-and-robbers
code-challenge
cops-and-robbers
code-golf
code-golf
random
cryptography
code-golf
array-manipulation
number
code-challenge
integer
code-golf
math
integer
code-golf
math
math
parsing
image-processing
test-battery
math
number
combinatorics
fastest-code
code-golf
code-golf
math
number-theory
rational-numbers
polynomials
code-golf
math
geometry
code-golf
code-golf
number-theory
primes
factoring
code-golf
restricted-source
code-golf
string
decision-problem
counting
code-golf
math
sequence
fibonacci
code-golf
array-manipulation
counting
code-golf
array-manipulation
number-theory
code-golf
array-manipulation
code-golf
random
code-golf
string
hexadecimal
code-golf
string
code-challenge
sorting
code-golf
number
floating-point
code-golf
sorting
code-golf
decision-problem
fibonacci
code-golf
number
combinatorics
code-golf
string
code-golf
math
code-golf
electrical-engineering
code-golf
javascript
code-golf
base-conversion
code-golf
array-manipulation
matrix
binary-matrix
code-golf
kolmogorov-complexity
python
perl
ruby
code-golf
number
code-golf
optimization
integer-partitions
code-golf
string
code-golf
ascii-art
AdmBorkBork
источник
источник
Ответы:
05AB1E , 3 байта
Попробуйте онлайн!
объяснение
Посмотрите этот ответ, чтобы понять холст 05AB1E.
источник
JavaScript (ES6),
114106105104103 байтПопробуйте онлайн!
Как?
Это создает выходной символ за символом.
Учитывая входn , мы вычисляем:
Для каждого символа в(x,y) мы вычисляем (h,v) :
Ячейки, принадлежащие восьмиугольнику, удовлетворяют одному из следующих условий:
Например, приn = 4 (и N'= 3 ):
источник
Древесный уголь , 5 байт
Мой первый ответ с углем!
Объяснение:
Попробуйте онлайн!
источник
PolygonHollow(:*, InputNumber(), "#");
.Холст ,
151412 байтовПопробуй это здесь!
Объяснение:
Альтернатива 12-ти байтовая .
источник
R ,
122117115 байтПопробуйте онлайн!
Переносит логику из ответа Арно , в частности, это пересмотр на случай дальнейших улучшений. Еще 2 байта сэкономлено благодаря предложению Арно об изменении логики!
источник
h*v&h+v-n
в JS, потому что&
это побитовый оператор; но это логический оператор в R, так что это работает).Python 2 , 96 байт
Попробуйте онлайн!
источник
Python 2 , 81 байт
Попробуйте онлайн!
Python 2 , 75 байт
Попробуйте онлайн!
Если смешивание выводимых символов в порядке.
источник
Powershell, 91 байт
источник
PowerShell ,
10797 байтПопробуйте онлайн!
Если бы был дешевый способ изменить первый тайм, этот ответ был бы намного лучше. Он строит левую половину, затем ядро (или x,
#'s
или пробелы), а затем отражает логику левого, чтобы сделать правое. Забавный факт, вам не нужно копировать конечный пробел.Развернул и объяснил:
источник
C (лязг) ,
-DP=printf(
-DF=for(i
+ 179 = 199180 байтПопробуйте онлайн!
Ungolfed:
-19 байт благодаря @ceilingcat
источник
Python 2 , 130 байт
Попробуйте онлайн!
На мобильном, поэтому не невероятно играли в гольф.
источник
(n+2*i)
.Пакет, 260 байт
Выводит два пробела в каждой строке. Объяснение: Пакет не имеет оператора повторения строк, ограничена возможность нарезки строк и требует отдельных операторов для выполнения арифметики. Поэтому было лучше всего составить строку входной длины в пробелах (Пакет может, по крайней мере, перевести их в
#
s для верхней и нижней линий), а затем вырезать из или в определенную позицию в диапазоне от 3 до длины, чтобы получить диагонали (это то, чего достигает последняя строка скрипта).источник
Рубин , 96 байт
Попробуйте онлайн!
Еще не очень играли в гольф. Могу сыграть в гольф, если найду время.
источник
Красный , 171 байт
Попробуйте онлайн!
Объяснение:
источник
APL (Dyalog Unicode) , 46 байтов SBCS
Это решение было предоставлено Adám - спасибо!
Попробуйте онлайн!
Мое (почти) оригинальное решение:
APL (Dyalog Unicode) , 61 байт SBCS
Попробуйте онлайн!
Спасибо Адаму за помощь!
Идея состоит в том, чтобы найти «ромб», который частично лежит в квадрате, и применить фильтр обнаружения краев, чтобы «очертить» восьмиугольник.
источник
(' '@~5 6∊⍨1⊥⊢∘,)⌺3 3⊢<(⍉⌽⌊⊢)⍣2∘(∘.+⍨∘⍳¯2+3×⊢)
⌺
. Скорее считайте 1 байт / символ, ссылаясь на SBCS в соответствии с мета .Perl 5,
201197188187186 байт:Попробуйте онлайн!
Читает размер восьмиугольника из первой строки
STDIN
.источник
$"
вместо" "
.Perl 5, 176 байт
Основано на ответе Натана Миллса выше (у меня недостаточно репутации, чтобы комментировать!).
$e
можно упростить до$a-1
экономии 6 байт;$f
может быть назначен цепочкой; сохранение двух байтов; Не уверен, откуда двое других!В то время как
$e
это можно заменить$a-1
в двух местах, где это происходит, дополнительные скобки означают, что это только безубыточность.Ungolfed:
источник
Perl 6 ,
7673 байта-3 байта благодаря Джо Кингу
Попробуйте онлайн!
Возвращает список строк.
источник
C (gcc) ,
158153150 байтпятьвосемь байтов благодаря функциюcatcat .Попробуйте онлайн!
источник
Python 3 , 224 байта
Попробуйте онлайн!
источник
Perl 5,
170168166 байтЭто работает с помощью магии регулярных выражений. «Если» необходимо только для решения патологического случая n = 2, который в противном случае выдает что-то вроде:
вероятно, это можно закодировать.
Я думаю, что можно получить гораздо больше, создав строку до середины, а затем перевернув ее. Конечно, тогда нам нужно вставить / удалить дополнительный пробел, если n нечетно (или использовать thin-space: p).
Ungolfed
Я думаю, что это, вероятно, может быть немного больше, помимо значительных изменений, таких как подталкивание
$@
и печать в конце.[Гольф-поля вокруг
..
и перемещение печати до назначения в двух случаях, экономя на точках с запятой.]источник
\s
а не просто пробел в последнем регулярном выраженииJ
594541 байтПопробуйте онлайн!
Добавлю объяснение сегодня вечером.
источник
Perl 5, 98 байт
TIO
источник