Вызов
Нарисуйте форму сердца
... как искусство ASCII!
Ваше искусство не должно выглядеть точно так же, как мое, но оно должно выглядеть как форма сердца.
Внутренняя часть сердца должна содержать слова «Любовь» как минимум 20 раз
правила
- Программа должна записать картинку на консоль.
- Самый короткий код (в байтах, на любом языке) выигрывает.
Победитель будет выбран 14 февраля в День Святого Валентина
:D
popularity-contest
Ответы:
JavaScript [160 байт]
Следующий код выглядит как 160-байтовый неформатированный.
Просто запустите это в консоли браузера (например, в Firebug или Chrome Dev Tools).
источник
/[lve]\d/
на/../
массив и использование массива['','Love','\n']
вместо объекта сэкономит еще 10 байтов, что в итоге приведет к 150 байтам , но сердце источника больше не будет иметь такую хорошую форму:)
function(c){return
наc=>
и удалить}
. Вы должны опубликовать более короткую версию!:)
но спасибо за указание! Я надеюсь, что скоро JavaScript будет конкурировать с Perl и Python в вопросах игры в гольф, и каждый сможет попробовать это.GolfScript:
625754 персонажаВыход:
Или, для некоторой добавленной любви, и обязательного злоупотребления незначительным пробелом (для 84 символов):
Выход:
источник
C - 183 байта
Не победитель, а целая лототская любовь. Вы можете понять, как это работает?
Выход:
источник
V
на дне.C
! Кривая сердца является общественным достоянием :)Python, 210 символов
Конечно, это не победит, потому что это кодовый гольф, но я хотел быть креативным, и у меня есть не использовал это слово
Love
в своем исходном коде:Это вывод:
источник
Scala - 273 персонажа
Ну, я, конечно, не рассчитываю на победу для краткости, но я хотел посмотреть, смогу ли я сделать это в Scala. Более умный игрок в гольф может, вероятно, сбрить несколько байтов, но вот что я получил:
Или, если вы предпочитаете (все еще действительный код!)
Выводит на экран два полукруга и треугольник, образуя приличное факсимиле сердца.
Требуется запустить с интерпретатором scala (компиляция потребует добавления дополнительных усилий,
object Main { def main(args: Array[String]) = { ... } }
и я просто не хочу ничего из этого.источник
Питон 2, 117
печатает ровно 20
love
с по горизонтали.выход:
источник
replace()
их; в 3-й строкеprint
поменяйте один+
на,
10 и на 9; в последней строке используйте значение переменной x. pastebin.com/i1TSEZfElove
s на правой стороне, которые вы получили, пошатываясь горизонтальныеlove
s?love
. Включая тех,love
количество будет 23: DPerl - 36 байт
Выход:
Это немного обмануть; он будет печатать
Love
один раз для каждых двух непробельных символов в исходном коде. При наличии необходимого пробела для создания формы сердца код имеет длину 61 байт: сглаженный - всего 36 байт:Perl - 60 байт
Выводит следующее:
Ровно 20
Love
.Краткое объяснение
по запросу
for'3h112a05e0n1l2j4f6b9'=~/./g
Это изменяет оператор печати и выполняет итерацию по каждому символу.
/./
Очевидно, что регулярное выражение соответствует одному символу, и в контексте списка/./g
вернет список всех символов в строке. Более распространенный, но немного более длинный способ написать это было быfor split//,'3h112a05e0n1l2j4f6b9'
.print$"x(15&ord),Love,$/x/\D/
Специальной переменной по
$"
умолчанию является пробел. Ord Инал значение каждого символа мода 16 хранит количество пробелов , необходимых между каждым сLove
помощью строки повторения (x
). Наконец, если символ не является цифрой (/\D/
), значение$/
, которое по умолчанию"\n"
устанавливается в конец.источник
-e
)$"
на' '
:perl -e "print' 'x(15&ord),Love,$/x/\D/for'3h112a05e0n1l2j4f6b9'=~/./g"
Wolfram Language (Mathematica) - 111
источник
Javascript -
147141137133 символовПримечание: я отправил другой ответ, но этот использует другой подход, и сердце имеет другую форму.
Как это работает :
Сначала я рисую ромб (уравнение есть
|x|+|y|
), затем объединяю два круга сверху. значения x отражаются (поэтому нужен только один круг).источник
0
плавающей запятой и присвоивMath.abs
переменную.Скриптинг - 28 символов / 56 байт
Выход:
источник
긢꼙겱딧꽔밂各감啃갰啃긂밀⓶復냄뭖끐⓷復겠⓸復終
- но здесь используется啃
инструкция, которую я добавил послеJavaScript -
136121115113 символовДля запуска: скопируйте вставить в консоль браузера (например: Chrome или Firefox)
источник
["L","o","v","e"] => "Love"
сэкономит 11 байт.C 116 символов
(Я не знаю, достаточно ли это в форме сердца ... заполняет внутреннюю часть трех кругов, чтобы получить результат.)
Выход:
Ранее в процессе игры в гольф, перед заменой постоянных выражений (измените,
M
чтобы настроить размер):Я также чувствовал себя обязанным сделать это. :П
источник
All variables in C are typed
en.wikibooks.org/wiki/C_Programming/Variablesint
устаревшая функция, заимствованная из pre-ANSI-C. Это прекрасно скомпилируется для меня сclang foo.c
илиgcc -std=c99 foo.c
(хотя, с большим количеством предупреждений). Вы получаете какие-либо ошибки? Я не знаю C достаточно хорошо, чтобы гарантировать, что я не зависим от неопределенного поведения, но я полагаю, что я не делаю этого.Ruby, 47, или Golfscript, 41
Скучный ответ.
Версия для гольфа:
Выход:
источник
Рубин - 113 персонажей
Выход:
Чтобы быть более ясным
источник
Perl - 159 символов
Не массово в гольф ...
Вот то же самое с добавленным пробелом для немного лучшей читаемости ...
Вывод ...
Полное слово «Любовь» содержится в (по вертикали) 22 раза, плюс многочисленные частичные.
источник
APL, 36 символов / байт *
Должен оцениваться с помощью
⎕IO←0
(значение по умолчанию зависит от реализации)* APL может быть записан в однобайтовой кодировке, если необходимо (при условии, что вы не используете какой-либо другой символ Unicode), так что N chars = N байтов для подсчета.
Выход:
Содержит ровно 20 "Любовь"
источник
Extended BrainFuck : 193 (считается без существенных пробелов)
Превращается в:
Brainfuck: 264 (считается без существенных пробелов)
Вы запускаете его с любым интерпретатором bf. У Ubuntu есть
bf
и тоbeef
и другое прекрасно работает.Выход (344 байта):
Ungolfed EBF код:
источник
C # 224
отформатирован:
Выход:
источник
Python, 334 байта
выход:
источник
str
вызов с повторением строки, потому что*
имеет более высокий приоритет, чем+
.Perl - 97 символов
Этот ответ основан на 121-символьном решении Python от @ Wasi.
Вам нужно запустить perl с
-M5.010
возможностью включения специфичных для 5.10 функций. Это, по-видимому, разрешено .Интересные особенности:
$.
для хранения слова «любовь». Это потому, что за ним может сразу же следовать другое слово, если это необходимо.$.for
однозначно обозначен как$.
сопровождаемыйfor
;$_for
не будет маркироваться, как$_
следует,for
потому что$_for
само по себе является допустимым именем переменной.$"
вместо встроенного в строку используется встроенная переменная, представляющая тот символ, к которому будут присоединены массивы (по умолчанию используется один пробел)" "
сохранения одного символа здесь и там..replace
метод в гольфе кода.for 0..4
же побеждаетfor i in range(5)
источник
CJam - 33 байта
Попробуйте онлайн
Выход:
Объяснение:
источник
Баш, 170 байт
полностью копия программы FoxX's :)
источник