Вполне вероятно, что любой, кто использовал Twitter пару месяцев назад, знал бы о «Привет! Я - мем «Шериф Х». Где простое изображение шерифа нарисовано с помощью эмодзи и меняется в соответствии с темой. Поэтому я подумал, что пришло время для Шерифа Код Гольфа. Вот он:
###
#####
###
###
###
#
#####
# # #
# # #
# # #
#
###
# #
# #
# #
# #
Этот, в частности, имеет «пиксели» шириной в один символ и высотой в один символ. Чтобы сгенерировать его, аргументы будут 1 и 1.
Что если он должен быть шире, чем высокий?
######
##########
######
######
######
##
##########
## ## ##
## ## ##
## ## ##
##
######
## ##
## ##
## ##
## ##
У него рост 1, а ширина 2.
Правила:
- Задача состоит в том, чтобы написать код для рисования собственного шерифа Code Golf, используя как можно меньше символов.
- Используйте любой язык программирования, какой пожелаете.
- Ваш код должен принимать два аргумента, оба из которых являются целыми числами, для высоты и ширины шерифа.
- Вывод должен состоять из одиночных пробелов для фона и любых других символов, выбранных вами для Шерифа. (Я использовал хэши для тестовых случаев, но не имеет значения, что вы используете).
- Должно быть возможно, чтобы высота была отрицательным целым числом, инвертируя изображение.
- Ширина может быть отрицательным целым числом, но поскольку изображение симметрично, оно будет идентично положительному значению.
- Конечные пробелы не имеют значения.
- Если один из аргументов равен 0, это измерение «сплющивается» в одну строку или столбец. Длина этой строки является другим аргументом, умноженным на высоту или ширину шерифа, соответственно.
- Если оба аргумента равны 0, обе строки «сглаживаются», оставляя один положительный символ.
- Не обязательно, но, пожалуйста, включите ссылку на онлайн-переводчика, такого как tio.run
- Вывод должен быть строкой, несколькими строками или выводом на консоль.
Тестовые случаи
1 высокий, 1 широкий
###
#####
###
###
###
#
#####
# # #
# # #
# # #
#
###
# #
# #
# #
# #
2 высоких, 1 широкий
###
###
#####
#####
###
###
###
###
###
###
#
#
#####
#####
# # #
# # #
# # #
# # #
# # #
# # #
#
#
###
###
# #
# #
# #
# #
# #
# #
# #
# #
1 высокий, 2 широкий
######
##########
######
######
######
##
##########
## ## ##
## ## ##
## ## ##
##
######
## ##
## ##
## ##
## ##
2 высоких, 2 широких
######
######
##########
##########
######
######
######
######
######
######
##
##
##########
##########
## ## ##
## ## ##
## ## ##
## ## ##
## ## ##
## ## ##
##
##
######
######
## ##
## ##
## ##
## ##
## ##
## ##
## ##
## ##
-1 высокий, 1 широкий
# #
# #
# #
# #
###
#
# # #
# # #
# # #
#####
#
###
###
###
#####
###
1 высокий, -1 широкий
###
#####
###
###
###
#
#####
# # #
# # #
# # #
#
###
# #
# #
# #
# #
0 высокий, 0 широкий
#
1 высокий, 0 широкий
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
0 высокий, 2 широкий
##################
Веселитесь, вы все!
Ответы:
JavaScript (ES6), 171 байт
Принимает ввод в синтаксисе карри
(width)(height)
. Возвращает массив строк.Попробуйте онлайн!
Как?
Только левая половина шерифа закодирована как двоичные битовые маски, включая средний столбец:
источник
Python 2 ,
228218202189173 байтаПопробуйте онлайн!
Альтернативы:
Python 2 , 173 байта
источник
Perl 5 ,
169,166,157 байт.Попробуйте онлайн!
Может быть, больше можно получить, немного поигравшись.
источник
split
, я использую это сейчас и сохранил два байта. Также сбрил один, потеряв'
s вокруг индексов. Не могу добратьсяsay
до работы, хотя.-a
, потеряв при этом еще 9 байтов.say
с-M5.010
, но не всем нравится, вы могли бы использовать-l
вместо этого и сохранитьprint
, но если нет, вы можете использовать буквальный перевод строки или$_.$/
для -1. Приятно видеть другого игрока в Perl!say
не работал, потому что добавлен символ новой строки,map
поэтому для его использования требуется немного другой вызов. Я также понял, что когда ваш код заканчивается переменной, и вы используете-p
или что-то, что вы можете использовать,@;
как это включает в себя: Попробуйте онлайн! Надеюсь, вы не возражаете против моих комментариев!Древесный уголь , 61 байт
Попробуйте онлайн!Ссылка на подробную версию кода. Объяснение:
Введите размеры.
Если высота ненулевая, обведите правую половину шерифа ...
... повторять абсолютную высоту количество раз ...
... если ширина отлична от нуля, то повторять каждый символ абсолютное количество раз, в противном случае
#
.Но если высота равна нулю, то повторите
#
5 раз абсолютную ширину, но не менее 1#
.Подумайте, чтобы произвести левую половину шерифа.
Если высота отрицательна, переверните шерифа.
источник
Python 2 ,
217216 байтПопробуйте онлайн!
Питонический рифф на подходе Арно .
Тьфу! Теперь работает для всех краевых условий ...
источник
Чистый ,
299275272 байтаПопробуйте онлайн!
источник
Powershell,
174170 байтВдохновленный Arnauld в Javascript
Разоблаченный, объясненный и проверенный сценарий:
источник