var QUESTION_ID=17005,OVERRIDE_USER=7110;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
++++++[>++++++++<-]>++.--.+.+++.
Ответы:
Мышь-2002 , 4 байта.
Это 4 байта чистого, сладкого ASCII.
В Mouse буквы алфавита инициализируются значениями 0-25.
!
является оператором для печати целых чисел, поэтому он печатает20
затем14
(без прерывистого перевода строки).Нет доступного онлайн-интерпретатора, но здесь вы найдете интерпретатор, написанный на C (требующий некоторых настроек, чтобы можно
gcc
было его скомпилировать) и тот же скомпилированный интерпретатор,Win32
но прекрасно работающий на Linuxwine
.Здесь вы можете найти исправленную версию интерпретатора, который компилируется.
источник
KE
, но на самом деле действительно, потому что это язык до 2014 года.Python, 52 байта
Обновлено за 2015 год благодаря @Frg:
Наведите курсор мыши, чтобы увидеть версию 2016 года:
Попробуйте онлайн!
источник
print sum(ord(c) for c in 'HAPPY NEW YEAR To you too.')
Ой, подождите, я опоздал на год. Это 2013 год.sum(map(ord,'Happy new year to you!'))
спас бы 7 символов.Befunge 98 -
171198 байтПохоже на старую версию, но я вспомнил про
'
Интересно, что 45 2 -11 является единственной парой чисел a, b, где Значимость этих наборов заключается в том, что [32,126] это набор печатных символов ascii, а [10,15] это набор легко доступных номеров Befunge. Я нашел эту пару с этой программой на Python :
Или, если ваш интерпретатор поддерживает Unicode, то это работает:
Befunge 98 - 5 байт (4 символа)
По крайней мере, он работает на http://www.quirkster.com/iano/js/befunge.html со следующим кодом (Befunge 93 - 6 байт / 5 символов):
Старая версия
вычисляет число, а затем печатает его:
Старая версия:
Подталкивает значения ASCII за 2014 год, -10. Затем печатает каждый после добавления 10 к нему.
источник
randomstuff2randomstuff0randomstuff1randomstuff4
я бы не посчитал это правильным решением.Руби, 15
Временный;)
Обратите внимание, что раздел вопроса
не редактировалось, пока я не опубликовал свой ответ ...
Ян Дворжак предлагает отличную альтернативу в комментариях :
Но это так без энтузиазма. Я предпочитаю:
Или даже:
И вот правильная английская пунктуация:
Хорошо, хорошо, я не мог с этим поделать:
источник
Happy = Time; Happy.new.year
Go, 2 байта (UTF-16)
Один символ Unicode (2 байта в UTF-16, 3 байта в формате UTF-8), вывод 2014 как часть ошибки
http://ideone.com/dRgKfk
источник
Python, 26
источник
0
-9
.MATLAB, Scala (4 символа, 5 байтов)
Вы можете воспользоваться сравнительно слабой системой типов MATLAB (и Scala) здесь. Хитрость заключается в применении унарной
+
операции к строке, состоящей только из символаߞ
(из кодовой точки UTF-8 U + 07DE или 2014 в десятичном виде). Эта операция неявно преобразует строку в double (в MATLAB) и вInt
(в Scala):Подробности подсчета байтов:
+
является ASCII и считается за 1 байт'
является ASCII и считается за 1 байт (но появляется в выражении дважды)ߞ
является 2-байтовым символом UTF-8Всего: 5 байт
TeX (
3226 символов, столько же байтов)Еще более короткая альтернатива (предложенная Джозефом Райтом )
XeTeX / LuaTeX (13 символов, 14 байтов)
Если разрешены XeTeX или LuaTeX, вход UTF-8 может использоваться напрямую (как предложил Джозеф Райт ):
источник
\let~\number~`^^T~`^^N\bye
25 символов / байтов. Вы, ИМХО, считаете неверным, это 25 для вашего решения.\the\year\bye
+'ߞ'
также работает в Scala (и нескольких других языках, которые я представляю)постоянный ток, 6 символов
D
помещает 13 в стек, даже если входной радиус равен 10 изначальноi
меняет основание входа (с 13 на 13)BBC
это 2014 база 13.p
печать.Консольный вывод:
источник
DiBBCp
(6 символов), остальное - просто способ ее запустить.D
команду на странице руководства. Что оно делает? Не берите в голову ... D является шестнадцатеричным для 13.Азбука Морзе, 23
;)
источник
7245 символов в коде; Нулевые коды символовЭто далеко не самый короткий опубликованный ответ, но еще никто не опубликовал ответ, который
Используя чистую математику (и автоматическое логическое преобразование) в R из консоли R:
Распечатывает число 2014.
T
Это предопределенный синоним для true в R. Функцииfloor
иexp
доступны непосредственно в базовом пакете, как иpi
константа. R не имеет оператора приращения, но повторение(x*x)
оказалось меньше символов, которые делают приращение и уменьшение по два каждый.Оригинальная версия в Javascript (72 символа)
По той простой причине, что я мог протестировать в консоли, и это не против полного отсутствия пробелов:
запустить в вашей консоли, и он напечатает обратно номер 2014.
Перейдите к xkcd (и также ), чтобы заставить меня задуматься об exp (pi):
PS Если вы можете сократить этот же алгоритм на другом языке, оставьте комментарий.
источник
cdd**e-.@
(опубликованное раньше вашего), в котором не используются коды символов или системная дата. Он вычисляет число 2014.c
,d
иe
это шестнадцатеричное число цифр.a
,b
...,f
толчок (соответственно) 10,11, ... 15 , так12 * 13 * 13 - 14
это вычисление.Scala REPL
3429 символов.Хорошо, если вы действительно хотите играть в гольф с любыми символами, вы можете использовать:
или же
которые имеют 11 и 22 символа соответственно.
источник
toInt
этого:+"Happy new year to you!".sum
ТестPHP, 9 байт
Это требует PHP 7.1 или ниже. Это будет работать в PHP 7.2, но приведет к предупреждению. Никаких гарантий для любой будущей версии.
xxd
необходимо из-за двоичных данных (поэтому копирование и вставка будет проще). Может вернутьсяE_NOTICE
, но это не имеет значения, не так ли?Либо сохраните его, используя кодировку ISO-8859-1.
источник
echo date('Y');
?<?=date(Y);
было бы 11 символов, и у меня есть решение в 9 символов.C, 33 байта
источник
Mathematica, 14 символов (или 15, если вы считаете растровое изображение символом)
TextRecognize @
источник
\d
диапазон. А именно, если это GIF, то сам заголовок гарантированно будет содержать некоторые.Python3.4.0b2 (0 байт)
источник
Javascript, 23 байта
Использует Base 64 Conversion
23 символа (16 с атобом отдельно)
Или же
источник
MMXIV
не имеет общих символов2014
, последний раз я проверял ...// ;)
[!+[]+!+[]]+[+[]]+[+!+[]]+[!+[]+!+[]+!+[]+!+[]]
-alert([!+[]+!+[]]+[+[]]+[+!+[]]+[!+[]+!+[]+!+[]+!+[]]);
хотя я не уверен, что она соответствуетJoe Z
требованиям.Perl - 10 символов
Это решение любезно предоставлено BrowserUK на PerlMonks , хотя я избавился от ненужных знаков препинания и пробелов в решении, которое он опубликовал. Это побитовое «не» в двоичной строке из четырех символов.
Отображаемые выше символы представляют двоичные октеты cd: cf: ce: cb и соответствуют тому, как они выглядят в ISO-8859-1 и ISO-8859-15.
Вот весь скрипт в шестнадцатеричном формате, а также пример его запуска:
Perl (без старших битов) - 14 символов
Это использует побитовое «или» на двух четырехсимвольных строках
"RPQT"
и"````"
(то есть четырех обратных галочках).(У меня изначально были две строки наоборот, что требовало пробела между
print
иRPQT
для разделения токенов. @DomHastings указали, что переключая их, я могу сохранить символ.)Perl (читерство) - 8 символов
Вероятно, это не в духе конкуренции, но hdb на PerlMonks указал, что Perl предоставляет переменную с именем,
$0
которая содержит имя текущей исполняемой программы. Если нам разрешено назвать файл, содержащий скрипт «2014», то$0
он будет равен 2014.$0
содержит цифру, поэтому мы не можем использовать ее напрямую, но${...}
с выражением, которое оценивается как 0, все будет в порядке; например:Для согласованности давайте сделаем с ним что-нибудь вроде hexcat-then-perl:
Я думаю, что это обман, но тем не менее это интересное решение, так что стоит упомянуть.
источник
print"````"^RPQT
. Можно было бы использоватьsay
и на 5.10+, используя -E вместо -e, но я не знаю, влечет ли это штраф +2 за разные аргументы командной строки?say
без штрафа.say ABCD^srrp
.Руби, 20
Пояснение:
bbc
находится2014
в базе 13. Короче, чем Python. Не такой короткий, как Форт.источник
p 'ߞ'.ord
для полнофункциональной программы,'ߞ'.ord
внутриirb
. Работает на 1.9+?-*?--?\v
(45 * 45 - 11) (Ruby 1.8)?.*?.-?f
(46 * 46 - 102) (только в Ruby 1.8 снова)Powershell, 9
ߞ
( U + 07DE NKO LETTER KA ) считается как два байта в соответствии с информацией тега code-golf .[""]
возвращает первый символ из строки (""
преобразуется в0
). Унарный плюс opeartor (+
) преобразует символ в целое число.источник
['']
хороший трюк. Я обычно использовал,[char]
но это действительно короче :)Scala REPL - 6 символов
(
##
это символьное значение ScalahashCode
, а строки Java"?="
хешируются до 2014 года.)Scala REPL - 4 символа, 5 байтов
Математика на нашем любимом персонаже Unicode производит
Int
.источник
Javascript, 18 символов
Обновление: в ES6 при использовании литерала шаблона можно сохранить два символа:
Приведенный выше код довольно легко понять, если учесть, что он
btoa
преобразует строку в другую в соответствии с набором четко определенных правил ( RFC 4648 ). Чтобы увидеть, как работает преобразование, мы запишем входную строку «xMx» в виде последовательности двоичных цифр, где каждый символ отображается как его 8-битный код символа.После реорганизации двоичных цифр в последнем ряду в группы по 6 мы получаем двоичное представление 4 новых чисел, соответствующих индексам Base64 для 4 символов в строке «2014».
Согласно спецификации HTML выходные символы могут быть получены из их индексов Base64 в соответствии с этой таблицей: http://dev.w3.org/html5/spec-LC/webappapis.html#base64-table .
Если вас не волнуют детали, вы можете позволить браузеру выполнить вычисления за вас и узнать, что «xMx» является результатом оценки
atob('2014')
в Javascript.источник
alert
наиболее распространенную).alert
звонок.alert
. Интересно, изменились ли стандарты для JS codegolf или это просто изменение, принятое Сообществом.Еще одна запись GolfScript, 9 печатных символов
Я считаю, что это короче, чем любая из печатаемых записей GolfScript до сих пор:
( 7-символьная запись Питера Тейлора превосходит ее, но содержит непечатные управляющие символы.)
Я называю это "это так в прошлом году!" запись, потому что он на самом деле генерирует число 2013 в 8 символов, как 33 × 61, а затем увеличивает его на единицу. ;-)
источник
С (31)
С (32)
С (30)
С (30)
источник
"%x"
и'b'*'S'
? Это 8212 декабря или гекс 2014 года. Сохраняет один символ, один литерал и два в строке формата.'b'*'S'
это 8134. Первичная факторизация 8212 - это 2 * 2 * 2053, поэтому я не вижу простого способа ее производства.8212/'b' == 'S'
:(Далее 14
источник
62 34 * 94 - .
если вы не говорите дальше, это значитprint (62 * 34 - 94)
.'ߞ .
символа : это печатает символ.GolfScript, 14
Как это работает: ASCII выглядит так:
Таким образом, он берет коды ASCII каждого символа, вычитает пять и вставляет их в строку.
{...}%
возвращает массив символов отображаемой строки, если в качестве аргумента указана строка. Таким образом, он увеличивает каждый символ на 5 ()
означает увеличение).источник
+
конце нет необходимости. Кроме того, вместо увеличения в 5 раз, просто добавьте пять. Общая экономия: 4 символа.'-+,/'{5+}%
5
это число."-+,/"_,)f+
. :) (Опять же, CJam имеетKD
.)Python, 32 символа
Вероятно, возможно уменьшить его, используя 2014-й символ Unicode
ߞ
, но я не пробовал.Quincunx отмечает, что
короче на три символа.
источник
print(ord("ߞ"))
. Он не работает в Python 2; Python 2, вероятно, не поддерживает Unicode.a=ord('.');print(a*a-ord('f'))
на 2 символа короче.u
в конец строки (будет"ߞ"u
)u
чтобы сказать, что они были Unicode, но в Python 3 все строки автоматически Unicodeprint ord('.')**2-ord('f')
немного короче.APL (6 байтов, 4 символа)
Работает только в этом году.
Почему это работает:
Не полагаясь на системную дату, это 10 байтов (7 символов):
источник
⎕
), он должен выглядеть так.Python
3210 байтов,9185 (66 сmath
импортированными по умолчанию) байтами чистой математикиБыло весело писать это:
Печатает все возможные способы, которые я могу написать,
2014
используя метод Бруно Ле Флоха (32 символа):Но это явно избыточно, поэтому, если ваш интерпретатор по умолчанию настроен на utf-8, то все, что нужно, это:
Также, благодаря AmeliaBR (за идею), я старался изо всех сил реализовать чистую математическую версию:
источник
a,b=int(e),int(pi);c=a+a;print a**(b*c-c+b)-a*a**c-a
и вы можете полностью исключить математический импорт, используя тот факт, чтоTrue
в Python 2.x идентично целому числу 1 в операции,o=True;a=o+o;b=a+o;c=b+o;print a**(b*c-o)-a*a**c-a
ord('ߞ')
R (20 символов)
@popojan (ему пока не разрешено публиковать ответ) предоставил решение в пределах 20 символов.
Выход:
R (22 символа)
Анонимный пользователь предложил более короткое решение.
2014
находитсяBBC
в базе 13.pi*pi+pi
(= 13.0112) R рассматривается в этом контексте как целое число 13. Вывод:R (30 символов)
Благодаря @ Томас!
Выход:
R (31 символ)
Вдохновленный ответом AmeliaBR . Выход:
источник
cat(a<-T+T,T-T,T/T,a^a,sep="")
(30 символов),paste0(aT+T,T-T,T/T,a^a)
(26 символов)paste0
не разрешена, так как содержит символ0
. Ваше решение составляет 30 символов при использованииcat
.2014
в текущем каталоге и написатьlist.files()
- 12 символовЯва -
7775 символов75 символов, если
print
добавлено в класс методом main:Это означает,
35*60-86
что равен 2014источник
class a{static{System.out.println('#'*'<'-'V');}}