Хорошее решение на 2015 год - жить более устойчиво. Начнем с переработки. Код переработки, то есть!
Ваша задача - напечатать номер 2015
в STDOUT, с или без завершающего символа новой строки (и только это). Однако вы должны сделать это, переработав старый код из PPCG. Вот как это работает:
- Выберите любой ответ, опубликованный на CodeGolf.SE до 2014-12-16 00: 00: 00Z (день, когда я разместил его в песочнице). Исключение: Вы не можете использовать какие-либо ответы из прошлогоднего новогоднего задания .
- Выберите один блок кода из этого ответа (не фрагмент кода внутри строки, это должен быть отдельный абзац). Этот блок должен быть объявлен как фактический код, например, вы не можете использовать тестовые примеры или примеры выходных данных, которые используют моноширинное форматирование.
- Переставить символы в этом блоке кода, чтобы сформировать представление для этого задания. Вы можете только изменить порядок, но не добавлять и не удалять какие-либо символы. Это включает в себя новые строки.
- Вы должны показать, что исходный блок синтаксически допустим на вашем языке. В лучшем случае вы можете сделать это, показав, что он работает без ошибок во время компиляции или во время выполнения. Таким образом, хотя исходный код мог быть Java, вы могли бы использовать его для ответа в виде пробела (так как каждый файл допустим в пробеле), но, вероятно, не можете использовать его для ответа Python (так как оригинал не будет корректным синтаксисом Python ).
Обратите внимание, что ваш ответ должен игнорировать все входные и внешние состояния (включая текущую текущую дату). ЭтоНапример, может читать из STDIN до тех пор, пока не потерпит крах, если он пустой, и выдаст одинаковый вывод для всего возможного содержимого потока.
Ваш результирующий код должен быть полной программой (а не функцией или фрагментом, который предполагает среду REPL).
Это код гольф, поэтому самый короткий ответ (в байтах ) выигрывает.
Leaderboards
Я уверен, что это будет по-разному играть на разных языках. Таким образом, следующий фрагмент стека генерирует как регулярную таблицу лидеров, так и обзор победителей по языкам.
Чтобы убедиться, что ваш ответ обнаружен, начните его с заголовка, используя следующий шаблон уценки:
# Language Name, N bytes
где N
размер вашего представления. Если вы улучшите свой счет, вы можете сохранить старые результаты в заголовке, вычеркнув их. Например:
# Ruby, <s>104</s> <s>101</s> 96 bytes
function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function getAnswers(){$.ajax({url:answersUrl(page++),method:"get",dataType:"jsonp",crossDomain:true,success:function(e){answers.push.apply(answers,e.items);if(e.has_more)getAnswers();else process()}})}function shouldHaveHeading(e){var t=false;var n=e.body_markdown.split("\n");try{t|=/^#/.test(e.body_markdown);t|=["-","="].indexOf(n[1][0])>-1;t&=LANGUAGE_REG.test(e.body_markdown)}catch(r){}return t}function shouldHaveScore(e){var t=false;try{t|=SIZE_REG.test(e.body_markdown.split("\n")[0])}catch(n){}return t}function getAuthorName(e){return e.owner.display_name}function process(){answers=answers.filter(shouldHaveScore).filter(shouldHaveHeading);answers.sort(function(e,t){var n=+(e.body_markdown.split("\n")[0].match(SIZE_REG)||[Infinity])[0],r=+(t.body_markdown.split("\n")[0].match(SIZE_REG)||[Infinity])[0];return n-r});var e={};var t=1;answers.forEach(function(n){var r=n.body_markdown.split("\n")[0];var i=$("#answer-template").html();var s=r.match(NUMBER_REG)[0];var o=(r.match(SIZE_REG)||[0])[0];var u=r.match(LANGUAGE_REG)[1];var a=getAuthorName(n);i=i.replace("{{PLACE}}",t++ +".").replace("{{NAME}}",a).replace("{{LANGUAGE}}",u).replace("{{SIZE}}",o).replace("{{LINK}}",n.share_link);i=$(i);$("#answers").append(i);e[u]=e[u]||{lang:u,user:a,size:o,link:n.share_link}});var n=[];for(var r in e)if(e.hasOwnProperty(r))n.push(e[r]);n.sort(function(e,t){if(e.lang>t.lang)return 1;if(e.lang<t.lang)return-1;return 0});for(var i=0;i<n.length;++i){var s=$("#language-template").html();var r=n[i];s=s.replace("{{LANGUAGE}}",r.lang).replace("{{NAME}}",r.user).replace("{{SIZE}}",r.size).replace("{{LINK}}",r.link);s=$(s);$("#languages").append(s)}}var QUESTION_ID=43048;var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";var answers=[],page=1;getAnswers();var SIZE_REG=/\d+(?=[^\d&]*(?:<(?:s>[^&]*<\/s>|[^&]+>)[^\d&]*)*$)/;var NUMBER_REG=/\d+/;var LANGUAGE_REG=/^#*\s*([^,]+)/
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>Language<td>Size<tbody id=answers></table></div><div id=language-list><h2>Winners by Language</h2><table class=language-list><thead><tr><td>Language<td>User<td>Score<tbody id=languages></table></div><table style=display:none><tbody id=answer-template><tr><td>{{PLACE}}</td><td>{{NAME}}<td>{{LANGUAGE}}<td>{{SIZE}}<td><a href={{LINK}}>Link</a></table><table style=display:none><tbody id=language-template><tr><td>{{LANGUAGE}}<td>{{NAME}}<td>{{SIZE}}<td><a href={{LINK}}>Link</a></table>
Ответы:
GolfScript, 9 байт
Оригинальный ответ (бабки!) Также в GolfScript, который , как я знаю , что это синтаксически правильным. Я тестировал на http://golfscript.apphb.com/ .
Я презираю использование языков, предназначенных для игры в гольф, но мне пришлось победить в этом испытании, поэтому я предал свои ценности, опубликовав этот ответ. Я не знаю, что делают большинство персонажей на этом языке, но однажды я случайно обнаружил, просматривая ответ на GolfScript, что непревзойденный
}
комментарий остальной части программы. Это позволило мне игнорировать остальных персонажей.источник
Befunge-93, 2085 байт
Я думал, что получу удовольствие и пойду в путь, переработав лучшее из переработанного . Никаких наград за краткость здесь не собираюсь.
На самом деле это также полиглот для 5 языков: Befunge-93 , oOo Code , Pyth , Python 3 и Ruby. Однако, поскольку исходный код синтаксически действителен только для Befunge-93, я только считаю это.
К сожалению, в исходном коде была только одна пара
[]
и слишком много.
s, поэтому я не смог вписать Brainfuck (следовательно, код oOo).Заметки
Это оказалось удивительно ограничительным, потому что:
001111111222
, требующий использованияord
для Ruby и Python. В частности, нет5
, что оказалось болью для Пифта.@
означало, чтоp
нужно было использовать его@
для Befunge.*
означало, что мы должны были умножить путем деления на обратное число. Весело.Befunge-93
Программа Befunge
где мы пропустили бесполезные инструкции. Мы кодируем каждую цифру как разницу в значениях ASCII между символами, в частности
cabf
противa
.oOo код
Соответствующий БФ
из которых единственная соответствующая часть
Pyth
Pyth выполняет только первую строку, поэтому
Обратите внимание, что Pyth использует префиксную нотацию, поэтому первая часть строки на самом деле
( Примечание:
e
означает%10
)Из-за природы Pyth, это автоматически печатается. Остальная часть строки является действительным Pyth, но предшествующий пробел перед
o
подавлением автоматической печати.Python 3
Большая часть кода Python закомментирована с использованием строк, особенно большой строки в тройных кавычках в середине. Не обращая внимания на несколько случайных строк, мы имеем:
Первая и последняя строки синтаксически допустимы, но ничего не делают. Средние две строки выводят то, что нам нужно.
Рубин
Код Ruby похож, но мы используем heredoc вместо строки с тройными кавычками, чтобы закомментировать большую часть программы. Игнорируя некоторые случайные строки, мы имеем:
Еще раз, первая строка синтаксически допустима, но ничего не делает. Вторая строка печатает то, что нам нужно.
источник
CJam, 12 байт
Расшифруй Кодекс тема является действительно хорошим источником для случайной печати чисел. Это было довольно весело собрать вместе :)
Бонусные ответы
14 байтов:
19 байтов:
источник
Страус, 198
Я взволнован, чтобы получить ответ Страуса; Мне все равно, как долго. : P (это версия 0.5.0 , кстати)
Оригинал :
Все, что я изменил, было следующее:
Обернут все, кроме
2 n15
в block ({}
), который сразу же popped (;
).Застрял
2 n15
в конце.2
толкает2
,n
толкает0
и15
толкает15
, что в конечном итоге становится2015
при выходе.Это на самом деле помогло мне найти ошибку:
2n15
по какой-то причине не работает (печатает215
), но2 n15
и2n 15
работает. Я должен выяснить, почему это ....Вот поисковый запрос, который я использовал, чтобы найти этот идеальный пример кода:
Этот ответ будет работать для 140, но я посмотрю, смогу ли я пойти меньше ...
источник
JavaScript, 26 байт
Оригинал :
Восстановленный:
Это просто сдвигает 4030 на один бит вправо.
источник
CJam, 14 байтов
Это немного сложно, поэтому я должен был опубликовать его, хотя это немного долго. Оригинальный ответ также в CJam, поэтому он действителен.
Оригинальный ответ:
Восстановленный 2015:
Как это работает
Таким образом, стопка содержит
20
и15
которые печатаются один за другим, печать 2015Попробуйте это онлайн здесь
источник
Marbelous, 54 байта
Скучный ответ (54 байта)
(за которым следует тонна завершающих строк новой строки, равных 54 байта)
Оригинальный ответ
Основная доска просто сбрасывает шарики представляющие каждого из персонажей
2015
.R
а такжеQ
доски определены, но никогда не используются.Альтернативный ответ (92 байта)
Оригинальный ответ
Пробелы в виде пустых ячеек должны быть проверены. Сначала печатается
2
(0x32), а затем печатается0x03+0x02+0x0A=0x0F=15
как трехзначное десятичное число (015
). Первые три строки ничего не делают.Проверьте ответы здесь.
источник
Пиф, 25
https://github.com/isaacg1/pyth
Вот оригинальный ответ (также написан на pyth). Я знаю, что это не очень конкурентный ответ (есть ответ на языке Python длины 26), но мне действительно понравилось придумывать этот ответ, и я думаю, что он дает довольно смешной ответ.
Объяснение:
По сути, это фильтрация списка первых двух миллионов чисел за совпадение с 2015 годом. Затем он обрабатывает этот список чисел как цифры из базового числа 10 МИЛЛИАРДОВ. К счастью, в диапазоне есть только одно число, равное 2015, так что вы получите 2015 * 10000000000 ^ 0, то есть всего 2015. Это займет пару секунд для запуска.
источник
Perl, 48 байт
Оригинальный ответ
источник
Python 2, 26 байт
Взято из самого маленького скрипта Python для печати четных чисел от 0 до 100 потока. Это, вероятно, решение @FryAmTheEggman, на которое ссылались.
источник
Mathematica, 60 байт
Источник
Часть в
Floor
скобках - это просто набор приложений функций несуществующих функций (с которыми у Mathematica нет проблем из-за его модели символьных вычислений). Аналогично, просто написание настила иPrint@2015
умножение, на которое Mathematica также не жалуется. Без синтаксического сахара это было быПоскольку мы не предполагаем среду REPL, оценочный результат этого никогда не печатается (что будет
Null Floor[ggggiiimmnnoorrrstt[ee[RS[DF[IM], ad], ee], 0.22346]]
), а только побочный эффектPrint
фактически переходит в STDOUT.Спасибо Sp3000 за то, что нашли источник.
источник
> <>, 57 байт
Оригинальный код C ++, от вызова RadioASCII :
Переработанный код > <> (Рыба) :
Как и Befunge,> <> это двумерный язык на основе стека. Выполнение начинается сверху слева и изначально направо. Только первая строка программы выполняется следующим образом:
Теперь большой вопрос - почему код C ++ действителен> <>? В> <> есть способы изменить направление выполнения программы (в конце концов, это двумерный язык):
Когда код C ++ выполняется, начальная часть
#
отражает поток программы влево. Но> <> является тороидальным, поэтому указатель инструкции оборачивается вокруг, появляясь в конце строки, встречая точку,>
которая снова направляет поток программы вправо. Затем указатель переносится обратно в#
, возвращается обратно в>
... и, таким образом, происходит бесконечный цикл, и ошибка не выдается.источник
Питон 3, 1878 байт
Очень долго, но все равно хотел поделиться
Взято из ответа KennyTM .
Я увидел, что 2, 0, 1 и 5 и # можно найти в коде, поэтому я переместил некоторые символы в make
print(2015)
и закомментировал остальные. Я также поместил импорт PIL в комментарий, чтобы он не нуждался в этой библиотеке.источник
PHP, 21 байт
Давайте попробуем это снова. Взято из другого ответа PHP из Unscramble исходного кода. Это довольно просто, но пока это самая короткая программа на языке без игры в гольф. Вы можете проверить это на http://codepad.org/15EjIYAU . Оригинальный код выглядит следующим образом:
источник
4*2/8
;)