Знак числа, (также называемый знак номера, хэш или хэштегом, или знак фунта) является следующий ASCII символ:
#
Разве это не забавная форма? Давайте сделаем большие версии этого! Итак, вот ваш вызов:
Учитывая положительное целое число N , выводить ASCII - хэштегом размера N .
Например, хэштег ASCII размера 1 выглядит так:
# #
#####
# #
#####
# #
Конечный пробел в каждой строке разрешен, но не обязателен.
Входные данные всегда будут действительными положительными целыми числами, поэтому вам не нужно обрабатывать не числа, отрицательные или 0. Выходные данные могут быть в любом приемлемом формате, поэтому вывод в STDOUT, возвращение списка строк или строки с переводы строки, двумерная матрица символов, запись в файл и т. д. - все в порядке.
Контрольные примеры
2:
## ##
## ##
##########
##########
## ##
## ##
##########
##########
## ##
## ##
3:
### ###
### ###
### ###
###############
###############
###############
### ###
### ###
### ###
###############
###############
###############
### ###
### ###
### ###
4:
#### ####
#### ####
#### ####
#### ####
####################
####################
####################
####################
#### ####
#### ####
#### ####
#### ####
####################
####################
####################
####################
#### ####
#### ####
#### ####
#### ####
5:
##### #####
##### #####
##### #####
##### #####
##### #####
#########################
#########################
#########################
#########################
#########################
##### #####
##### #####
##### #####
##### #####
##### #####
#########################
#########################
#########################
#########################
#########################
##### #####
##### #####
##### #####
##### #####
##### #####
Поскольку это код-гольф, постарайтесь написать как можно более короткое решение, и, прежде всего, получайте удовольствие!
Ответы:
MATL ,
20161211 байт3 байта благодаря DJMcMayhem.
1 байт благодаря Луису Мендо.
Попробуйте онлайн!
объяснение
источник
Zc
вместо35*c
и~
(логическое НЕ) вместо0=
Q
вместо этого2<
!t*
на&*
. Последнее означает «умножение с одним входом», которое умножает (поэлементно) вход на его транспонированиеBrain-Flak , 420 байт
Попробуйте онлайн!
Нет, оценка 420 не была преднамеренной. Обещаю. Читаемая версия:
источник
6502 машинный код (C64),
5956 байтОнлайн демо
Использование:
SYS49152,N
где N - число от 1 до 255.(значения больше 4 будут уже слишком большими для экрана C64, начиная с 8, выходной сигнал будет слишком широким)
Пояснение :
источник
Haskell , 43 байта
Попробуйте онлайн!
Выводит список строк.
источник
Python 2 , 55 байт
Попробуйте онлайн!
Это возвращает 2D список символов.
Python 2 , 65 байт
Попробуйте онлайн!
Python 2 , 66 байт
Попробуйте онлайн!
источник
f(i);
сохранении результата во времени иprint
доступе к нему.f(i)
печатает иprint
в Python 2 добавляет новуюДревесный уголь , 21 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Первоначально я попробовал симпатичный растровый подход:
Попробуйте онлайн! Ссылка на подробную версию кода. Пояснение: Работает, рассматривая
#
как массив 5 × 5 квадратов. Квадраты, которые находятся в нечетных строках или столбцах, должны быть заполнены.источник
J, 22 байта
Попробуйте онлайн!
Много сходства с другим J-ответом, хотя я не очень хорошо понимаю поезда с большим количеством существительных, поэтому в моем ответе есть три потенциальных байта, которые нужно обрезать (два символа parens и reflexive-
~
).объяснение
Генерация октоторпа
Восьмиугольник сделан из всего, что в скобках, для удобства воспроизведено ниже.
То, как я делаю октопор, - это злоупотребление тем, как J дополняет свои массивы, когда они недостаточно длинные.
21,0
просто создает массив21 0
.5$
перестраивает этот массив в массив 5-атом:21 0 21 0 21
.#:
преобразует каждый атом в двоичное число. Так как#:
работает на каждом атоме, выход является матрицей. Каждый21
заменяется на,1 0 1 0 1
как ожидалось, но каждый0
заменяется на0 0 0 0 0
! Это связано с тем, что массивы J-площадок недостаточно длинные, чтобы соответствовать форме результирующего двумерного массива, который должен быть5 5
из-за1 0 1 0 1
строк. К счастью, для чисел это дополняет0
, поэтому мы получаем результирующую матрицу'# '{~
преобразует каждый1
в пространство и0
в#
.{
означает «взять» и~
означает «переключить диадические аргументы», поэтому J рассматривает каждый элемент в матрице как индексы для строки,'# '
означающей, что каждый0
становится нулевым элементом,#
а каждый1
становится первым элементом, пробелом. Это дает размер в один октотор.Изменение размера восьмигранника
Это просто вопрос копирования
n
времени по каждой оси, выполненного с использованиемпервый
#
(который является частью крючка) и#~"1]
.#
копирует по горизонтальной оси и#"1
копирует по вертикальной оси.источник
##"1&('# '{~#:5$21,0)
сохраняет байт.CJam,
272625 байтПопробуйте онлайн!
Интересный факт: изначально он начинался с 29 байтов, и с тех пор байты были удалены один за другим, чередуя блочный режим и режим полной программы.
Объяснение:
источник
Шелуха ,
1210 байтПопробуйте онлайн! Обратите внимание на завершающий пробел.
объяснение
источник
J ,
2319 байтСохранено 4 байта благодаря @LeakyNun.
Попробуйте онлайн!
объяснение
источник
[:|:f
может быть0|:f
' # '{~]#"1]#+./~@i:@2
сохраняет байтf=:' #'{~1=]+./~@#i:@2
Желе ,
141311 байтСохранено 2 байта благодаря @JonathanAllen
Монадическая ссылка, возвращающая список строк. Обратите внимание на завершающий пробел.
Попробуйте онлайн!
Как это работает
источник
µ
(или то, что⁸
вы могли бы иметь вместо этого) ...5ẋ€Ẏ&þ`ị⁾ #
5Ḷẋ€
требуетсяµ
, но нет5ẋ€
?Ẏ
действоватьn
и затем передать его справаẋ€
, так как с монадической цепью, вызывающей ведущую цепочку нилад-диад, это не нужно. Однако я не совсем уверен, как`
тогда разместить 5 (или, может быть, список такой длины) справа от таблицы&
.Game Maker Language,
138108 байтПредназначен как скрипт (название Game Maker для пользовательских функций), поэтому
n=argument0
иreturn s
. 20 байтов можно было бы сократить, взявn
непосредственно из текущего экземпляра и используяs
в качестве результата. (Экземпляр получает эти переменные в любом случае, потому что они не были объявлены с помощьюvar
).Остерегайтесь, конечно, того, что
#
графические объекты Game Maker используются в качестве альтернативного символа новой строки, поэтому вы можете использовать префикс,\
если хотите выводить их на экран;)Также обратите внимание, что я использую версию GML от Game Maker 8.0; современные версии GML могут иметь функции, которые могут сохранять дополнительные байты.
Некоторые идеи любезно предоставлены друзьями Вареей и Чордбагом.
источник
Perl 5 , 49 + 1 (-p) = 50 байт
Попробуйте онлайн!
Как?
Неявно сохраняйте входные данные в $ _ через
-p
флаг. Начните с самой основной возможной верхней строки" # # "
с ее завершающей новой строкой . Скопируйте каждый из этих символов по введенному номеру. Затем скопируйте его по входному номеру, чтобы сформировать верхнюю часть восьмиугольника, сохранив все это обратно в $ . Затем добавьте строку со всеми символами, замененными на «#» количество введенных чисел. Затем добавьте верхний раздел. Сделайте эти последние два предложения в общей сложности два раза. Вывод значения $ неявно указан во-p
флаге.источник
05AB1E ,
252221 байтПопробуйте онлайн!
-1 потому что Эминья ненавидит транслитерацию и, к счастью, напоминает мне, что я тоже должен: P.
Должен быть лучше, чем растровое изображение ... Все еще работает.
источник
5ôεS„# èJ¹F=
сохраняет байт.JavaScript (ES6), 79 байт
Порт растрового подхода, который я использовал для своей первоначальной попытки использования угля.
источник
Python 2 ,
124,116,113,112,98,96 и66 байтНовый (Кредит: HyperNeutrino):
Старый:
Попробуйте онлайн!
Очевидно, не самое короткое решение, но я думаю, что оно достойное. Любая обратная связь будет оценена!
источник
a,b,c=input()," #"
следует сохранить несколько байтов.a,b,c=input(),"#"," "
? Что не короче ... Я ценю помощь!a,b="# "
работает.a=input();b,c="# "
будет работать и сохранять байты(i==2)
и добавить пробел в начало.Brain-Flak ,
338332 байта6 байтов благодаря Райли.
Попробуйте онлайн!
Более «читаемая» версия
Попробуйте онлайн!
источник
(({})<>)(())<>({}<>)
в начале можно заменить на(({}<>)<(())>)
SOGL (SOGLOnline commit 2940dbe) , 15 байтов
Чтобы запустить это, загрузите это и запустите код в
index.html
файле.Используется, чтобы при этом коммите (и до него)
*
повторялся каждый символ, а не вся строка.Объяснение:
Бонус: добавьте 2 входа для отдельной длины X и Y!
источник
ø─Ζ┘Χ⁴‘
толкает это, хотя?#
данные base-2, необходимые для этой строки.брейкфак , 224 байта
Попробуйте онлайн!
Изготовление
Я пытался собрать этот код вручную и потратил довольно много часов, поэтому я решил сделать транспайлер на Python.
Вот код, который я ввел, чтобы сделать этот код:
Попробуйте онлайн!
источник
C (GCC) ,
9893 байта5 байтов благодаря Феликсу Пальмену.
Попробуйте онлайн!
источник
Gaia , 9 байт
В значительной степени порт Zgarb великий ответ
Попробуйте онлайн! (нижний колонтитул просто хорошенький, программа сама возвращает двумерный список символов)
объяснение
источник
Befunge ,
105103 байтаПопробуйте онлайн!
источник
Python,
888477 байтПопробуйте онлайн!
Возвращает 2D список символов.
источник
PowerShell ,
72686360 байтПопробуйте онлайн!
Принимает участие
$a
. Затем мы выполняем кучу манипуляций смагическимистроками и массивами.Вы можете отделить части объяснения, начиная снизу, чтобы увидеть, как устроен вывод, так что, надеюсь, мое объяснение имеет смысл.
источник
Haskell, 72 байта
Возвращает список строк. Попробуйте онлайн!
Как это работает:
источник
Mathematica, 63 байта
объяснение
(1)
-##
разбирает вTimes[-1, ##]
источник
ArrayFlatten
очень мило.Python 2, 113 байт
Как массив строк:
Как искусство ASCII:
Python 3, 115 байт
Python 3, 117 байт
Как массив логических значенийPython 2, 75 байт
источник
Java 8, 103 байта
Лямбда принимает
Integer
и печатает стандартный октофор. В роляхConsumer<Integer>
.Попробуйте онлайн
Неуправляемая лямбда
Ключевое наблюдение здесь заключается в том, что на сетке 5 на 5 n на n ячеек октоторпы появляются везде, где номер строки или столбца (на основе 0) нечетен. Я уверен, что это самый дешевый общий подход, но он кажется еще более пригодным для игры в гольф.
Подтверждения
источник
int s=5*n,x=0,y
этого вы можете поместить цикл for, чтобы сохранить байт в точке с запятой.Pyth ,
2822 байта-6 байт благодаря @LeakyNun
Тестирование.
источник
R ,
878562 байт2 байта сохранены путем представления c (F, T) как! 1: 0, благодаря LeakyNun
23 байта сохранены благодаря Джузеппе
Попробуйте онлайн!
Объяснение (без присмотра):
источник