Вызов
Задача проста: напечатать змею .
Вы получите длину змеи в качестве входных данных.
Змея длиной 2 выглядит так:
==(:)-
Змея длиной 7 выглядит так:
=======(:)-
Другими словами, длина змеи - это количество знаков равенства перед головой .
использование
Допустим, я сделал реализацию C ++ и скомпилировал ее ./getsnake
.
Я мог бы запустить это так:
$ ./getsnake 10
==========(:)-
Разъяснения
- Стандартные лазейки запрещены.
- Вы можете получить ввод и вывод любым приемлемым способом.
- Вы можете предположить, что все входные данные являются положительными целыми числами.
- Вы можете написать функцию вместо обычной программы.
code-golf
string
ascii-art
kolmogorov-complexity
InitializeSahib
источник
источник
Ответы:
Гексагония , 33 байта
Не победит, но все равно круто. Может быть в состоянии получить в гольф больше.
Попробуйте онлайн!
Golfed:
отформатирован:
Цветной (Сделано с использованием Hexagony Colorer Тимви )
Объяснение:
Цикл, распечатайте «=», пока счетчик не достигнет 0.
Распечатать "("
Распечатать ":"
Распечатать ")"
Вышеуказанные значения были сгенерированы с использованием простого скрипта Python. Тем не менее, я как бы выбежал из места для "-". Итак, мне пришлось прибегнуть к более продвинутым трюкам.
Когда программа выводит «)», значение ячейки не 41, а 1065. Гексагония просто изменяет значение при печати. Как оказалось, (1065 * 1000 + 4)% 256 = 44, всего в одном от 45, значение ascii для "-". Затем я просто увеличиваю, печатаю и вставляю @ где-нибудь после печати.
источник
Корица, 7 байтов
Попробуйте онлайн.
Было бы 6 байтов со старым
p
синтаксисом: /объяснение
Распаковывается
p~=~(:)-
,p
затем сцена просто читает ввод и повторяет=
n раз.источник
Брайан и Чак , 31 байт
Ввод в виде байтового значения , например, input
!
дает змею длиной 33.Попробуйте онлайн!
Прошло много времени...
объяснение
Быстрый Брайан и Чак учебник для начинающих:
,
(вход), и только Чак может использовать.
(выход). В дополнение к<
и>
есть{
и}
которые перемещают головку ленты до следующей нулевой ячейки (или в случае{
с левым концом ленты, если на пути нет нулевой ячейки). Вместо[...]
этого единственный поток управления -?
это переключение управления на другой экземпляр, если текущая ячейка отлична от нуля. Первая выполняемая инструкция в другой ячейке - та, которая следует за условием. И, наконец,_
просто псевдоним для нулевых байтов, для удобства.Теперь код. Брайан начинает с этого:
Это считывает ввод в первую ячейку Чака, затем перемещает головку ленты влево
{
(сейчас ничего не делает) и уменьшает ввод-
перед переключением управления для Чака, если значение все еще не равно нулю. Это начинает основной цикл. Затем Чак запускает этот бит:Это перемещает головку ленты Брайана до самого конца, перемещает две ячейки слева
=
и печатает ее перед головкой ленты влево и переключает управление обратно к Брайану. Вот как петли обычно работают в B & C.Как только входной сигнал уменьшится до нуля,
?
лента Брайана ничего не сделает. Затем Брайан выполняет эту часть:):(=
Нет-OPS, поэтому фактический код просто>}-?
. Мы убираем нулевую ячейку с>
, поднимаемся до_
с}
, уменьшаем ее, чтобы она стала ненулевой , и переключаемся на Чака с?
. Затем запускается последний бит Чака:Это просто печатает пять символов перед Чаком, то есть
=(:)-
. Обратите внимание, что нам нужно напечатать другой,=
так как основной цикл выполняется толькоN-1
для вводаN
.источник
V , 8 байт
Попробуйте онлайн!
V использует кодировку «Latin1».
Объяснение:
источник
Сетчатка , 10 байт
Попробуйте онлайн!
Это простая замена регулярных выражений.
Он совпадает с тем,
.+
который соответствует всему вводу, а затем заменяет его на$*=(;)-
.Это
$*
уникальная особенность Retina: это специальный оператор повторения символов.Например,
5$*x
стал быxxxxx
.В случае, если предыдущий аргумент отсутствует, все совпадение используется в качестве аргумента по умолчанию.
источник
Python, 21 байт
Идео это!
источник
"="*input()+"(:)-"
Haskell, 25 байт
'='<$[1..n]
эквивалентноreplicate n '='
.источник
Java 8, 52 байта
Тестирование. (Компилировать> Выполнить)
Кредиты .
традиционным способом
615453 байта7 байтов благодаря Кевину Круйссену.
1 байт благодаря Дому Гастингсу.
источник
for(int i=0;i<n;i++)
можно играть в гольфfor(;n>0;n--)
, так как в любом случае вам не нужно вводить ничего кроме цикла for.for(;n-->0;)
сохранить еще один байт!Желе , 9 байт
Попробуйте онлайн!
источник
С, 38
Попробуйте это на Ideone.
источник
f(n){~-printf(n?"=":"=(:)-")||f(~-n);}
.f(n){for(;n;printf(n--?"=":"(:)-"));}
за -1.05AB1E,
109 байтовобъяснение
Попробуйте онлайн
1 байт сохранен благодаря Аднану.
источник
'=×"ÿ(:)-
для 9 байтов :). Это использует строковую интерполяцию.ÿ
делает :)Javascript, 23 байта
источник
n(3)
и получилUncaught ReferenceError: n is not defined
ошибку ...x=n=>"=".repeat(n)+"(:)-"; x(7);
x=
и изменен на 25 символов?C #, 28 байт
источник
Python , 24 байта.
input()
получает ввод от пользователя*
при использовании над строками и целым числом создает новую строку, которая состоит из объединенных копий оригинала. Например:"hello "*3
выходыhello hello hello
.Умножая
=
иinput()
, вы получите строку=
длины, которую указывает пользователь.Использование
+
соединяет две струны, в нашем случае, наше тело"=…="
с нашей головой,"(:)-"
чтобы сделать змею.print
выводит результат.источник
GolfScript,
1110 байтУмножает «=» на ввод и добавляет голову.
-1 благодаря Leaky Nun
источник
Mathematica,
2120 байтАнонимная функция. Принимает число n в качестве входных данных и возвращает змею длины n в качестве выходных данных.
"="~Table~#
генерирует список{"=", "=", ..., "="}
длины n ,<>"(:)-"
объединяет элементы списка и добавляет"(:)-"
к результирующей строке.источник
"="~Table~#<>"(:)-"&
R,
3227 байтЭто решение довольно простое,
rep
функция повторяет первый элемент ("="
)scan()
раз, который фактически является вводом пользователя.РЕДАКТИРОВАТЬ :
Чуть короче ответ, используя
scan()
напрямую.С другой стороны,
для не нарезанной змеи ( 34 байта )
источник
sep=""
здесь нужно, иначе ваша змея выглядит как та, что пересекала железную дорогу= = = (:)-
.sep
Тем не менее я добавлю примечание;)Пакетная, 68 байтов
источник
CJam,
1311 байтПроверьте это здесь.
-2 байта благодаря четвертям
источник
'=*
вместо{'=}*
.Perl 6 ,
16 1512 байтОбъяснение:
Использование:
источник
JAISBaL , 9 байт
Подробный:
Протестировано с помощью JAISBaL-0.0.7 (скомпилированный файл .jar был только что передан , но источник был на git некоторое время)
источник
#
перед именем языка, чтобы оно выглядело как у всех остальных.PowerShell v2 +, 19 байт
Полная программа. Принимает ввод
$args[0]
, использует умножение строк для построения тела, а затем конкатенацию строк для закрепления на голове.источник
"$("="*[int]$args[0])(:)-"
C,
464543байтовсэкономил 2 байта благодаря owacoder! сэкономил 3 байта благодаря rici!
Попробуйте это на Ideone!
источник
-->
оператор снова наносит удар.>0
и сохранить два байта.f(n){while(4-printf("=\0(:)-"+2*!n--));}
Чеддер, 15 байт (неконкурентный)
Простой ответ.
источник
Сесос , 11 байт
HexDump:
Попробуйте онлайн!
Ассемблер:
источник
К, 17 байт
Пример;
Объяснение;
источник
-1(
...);
?{(x#"="),"(:)-"}
Perl, 16 + 1 (
-p
флаг) = 17 байтНеобходимо
-p
пометить, поэтому запустите с:источник
Минколанг 0,15 , 12 байт
Попробуй это здесь!
объяснение
источник
Befunge-98, 24 байта
Принимает числовой ввод от пользователя, затем печатает змею.
источник
Matlab / Octave, 22 байта
Это анонимная функция.
Попробуйте это на Ideone .
объяснение
Предположим
n= 5
.1:n
производит вектор - строку[1 2 3 4 5]
.~(1:n)
отрицает каждую запись, поэтому она дает[0 0 0 0 0]
....+61
добавляет61
к каждой записи, так что дает[61 61 61 61 61]
.61
это значение ASCII символа=
.[... '(:)-']
объединяет это со строкой'(:)-'
. Это автоматически преобразуется[61 61 61 61 61]
в строку'====='
перед объединением.источник