<style>body { text-align: left !important} #answer-list { padding: 10px; width: 290px; float: left; } #language-list { padding: 10px; width: 290px; float: left; } table thead { font-weight: bold; } table td { padding: 5px; }</style><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="language-list"> <h2>Shortest Solution 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> <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> <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><script>var QUESTION_ID = 66763; var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe"; var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk"; var OVERRIDE_USER = 38512; var answers = [], answers_hash, answer_ids, answer_page = 1, more_answers = true, comment_page; function answersUrl(index) { return "https://api.stackexchange.com/2.2/questions/" + QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + ANSWER_FILTER; } function commentUrl(index, answers) { return "https://api.stackexchange.com/2.2/answers/" + answers.join(';') + "/comments?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + COMMENT_FILTER; } function getAnswers() { jQuery.ajax({ url: answersUrl(answer_page++), method: "get", dataType: "jsonp", crossDomain: true, success: function (data) { answers.push.apply(answers, data.items); answers_hash = []; answer_ids = []; data.items.forEach(function(a) { a.comments = []; var id = +a.share_link.match(/\d+/); answer_ids.push(id); answers_hash[id] = a; }); if (!data.has_more) more_answers = false; comment_page = 1; getComments(); } }); } function getComments() { jQuery.ajax({ url: commentUrl(comment_page++, answer_ids), method: "get", dataType: "jsonp", crossDomain: true, success: function (data) { data.items.forEach(function(c) { if (c.owner.user_id === OVERRIDE_USER) answers_hash[c.post_id].comments.push(c); }); if (data.has_more) getComments(); else if (more_answers) getAnswers(); else process(); } }); } getAnswers(); var SCORE_REG = /<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/; var OVERRIDE_REG = /^Override\s*header:\s*/i; function getAuthorName(a) { return a.owner.display_name; } function process() { var valid = []; answers.forEach(function(a) { var body = a.body; a.comments.forEach(function(c) { if(OVERRIDE_REG.test(c.body)) body = '<h1>' + c.body.replace(OVERRIDE_REG, '') + '</h1>'; }); var match = body.match(SCORE_REG); if (match) valid.push({ user: getAuthorName(a), size: +match[2], language: match[1], link: a.share_link, }); else console.log(body); }); valid.sort(function (a, b) { var aB = a.size, bB = b.size; return aB - bB }); var languages = {}; var place = 1; var lastSize = null; var lastPlace = 1; valid.forEach(function (a) { if (a.size != lastSize) lastPlace = place; lastSize = a.size; ++place; var answer = jQuery("#answer-template").html(); answer = answer.replace("{{PLACE}}", lastPlace + ".") .replace("{{NAME}}", a.user) .replace("{{LANGUAGE}}", a.language) .replace("{{SIZE}}", a.size) .replace("{{LINK}}", a.link); answer = jQuery(answer); jQuery("#answers").append(answer); var lang = a.language; lang = jQuery('<a>'+lang+'</a>').text(); languages[lang] = languages[lang] || {lang: a.language, lang_raw: lang.toLowerCase(), user: a.user, size: a.size, link: a.link}; }); var langs = []; for (var lang in languages) if (languages.hasOwnProperty(lang)) langs.push(languages[lang]); langs.sort(function (a, b) { if (a.lang_raw > b.lang_raw) return 1; if (a.lang_raw < b.lang_raw) return -1; return 0; }); for (var i = 0; i < langs.length; ++i) { var language = jQuery("#language-template").html(); var lang = langs[i]; language = language.replace("{{LANGUAGE}}", lang.lang) .replace("{{NAME}}", lang.user) .replace("{{SIZE}}", lang.size) .replace("{{LINK}}", lang.link); language = jQuery(language); jQuery("#languages").append(language); } }</script>
n
(неявно, я предоставлю вам) ограничено [1,6], поэтому 100 отсутствует.Ответы:
Pyth, 23 байта
Действительно просто. Случайное число итераций 0 - 5 отображает щелчок и запрашивает строку ввода, за которой следует удар в конце.
источник
*BANG!*
, а неBANG
Рубин, 51 байт
Ungolfed:
или
Разгул оставлен для читателей. Не так сложно
$><<
в качествеputs
замены."*click*"
все в порядке (то, что требуется, напечатано в конце), заменив$><<
наp
. Я не был уверен, будет ли это все еще следовать правилам.6864 байта(другой подход)
Я не особо задумывался над алгоритмом (он может быть еще более компактным, но не очень понятным), но мне действительно нравится модель внутри него:
0
это пуля Других номеров нет.find
находит первое возвращаемое значение, для которого блок не являетсяfalse
ниnil
.||
-выражение неявно возвращается из блока. Это короткое замыкание: оно возвращает свой первый операнд (если это неnil
илиfalse
) или второй (иначе). Таким образом, он либо возвращаетtrue
(еслиx<1
или, четче, но длиннееx == 0
), либо возвращает значениеputs
, в то время как ...puts
всегда возвращаетсяnil
. Ага.gets
запрашивает ввод. EnterДостаточно просто ударить .источник
JavaScript, 64 байта
объяснение
Чтобы нажать на триггер, введите любой текст в подсказку. Ничего не вводите или нажмите «Отмена», чтобы прекратить.
источник
"*Bang!*"
не больше 7. НоNaN
не меньше 7.Луа,
8275 байтДовольно долго, но в Луа много подробностей.
источник
LabVIEW, 46 примитивов LabVIEW
Создает массив из 0 и 1, имеет цикл для ожидания щелчков и выводит строку. Первоначально написано BANG, потому что я забыл сбросить индикатор перед его запуском.
Также обратите внимание, что это GIF-файл, если он не воспроизводится / загружается для вас, пожалуйста, откройте страницу.
источник
"*click*"
если пистолет не выстрелил. Кроме того, это выводит"bang"
или"*BANG!*"
?Pyth,
313028 байтПочти наверняка можно улучшить. Введите любое число, чтобы нажать триггер, пустой ввод, чтобы завершить досрочно (с ошибкой).
Объяснение:
источник
"
.FN<any>
все еще полностью идентичное томуV<any>
, которое, вероятно, следует изменить, чтобы не сбивать с толку новых игроков в гольф ...: P.?
. Там нет необходимостиelse
.Серьезно,
2725 байтНет онлайн-ссылки, потому что нет способа сделать подсказку с вводом по каналу. Программа может быть CTRL-C'd в любой момент
курица изпрекратить.Объяснение:
источник
PHP, 52 байта
Требуется
-F
опция командной строки, считается три. Спусковой крючок нажимается нажатием Enter.Потому что
-F
буквально запускает скрипт снова для каждого входа (я не шучу),die
и тому подобное на самом деле не прекращается, поэтому мы выходим через подавленной ошибки во время выполнения вместо@\n
.Образец использования
источник
Perl 5, 43 байта
Беги с
perl -p
. Стабильный вариант пули - то есть позиция пули определяется только один раз в самом начале.источник
//=
. Кроме того, не забывайте считать-p
в своем счете .C
1107472 байтаСпасибо Деннису за избавление от включений и намного меньше байтов.
источник
Candy , 36 байтов
Около половины программы составляет текст для распечатки :(
длинная форма:
источник
Python 3, 95 байт
Также моя первая попытка игры в гольф, также в Python 3. Клянусь, Брюс и я не тот человек.
Ungolfed:
Создайте случайное число от 0 до 5 включительно, напечатайте щелчок столько раз, затем напечатайте удар . Нажмите ввод / возврат, чтобы нажать на курок.
источник
from random import*
PlatyPar ,
2625 байтОбъяснение:
Попробуйте онлайн !
источник
Emacs Lisp,
9489 байтUngolfed:
источник
R
868077 байтКак обычно, R обладает удивительными возможностями для написания кода для игры в гольф, но не имеет названий функций.
источник
Python 2,
10810410210098 байтМоя первая попытка игры в гольф:
Может быть, я должен добавить, что программа не завершается правильно, когда вы проигрываете, она просто генерирует исключение (что приводит к завершению):
источник
a=shuffle([1,0,0,0,0,0])
wc
его, это дает мне 109, что слишком много, так что это правильно. Как ты считаешь?Perl 5, 40 байт
Запустите без параметров командной строки, триггер нажата нажатием Enter.
источник
Python, 81 байт
вдохновлен решениями Ruby (51) и Python
источник
Common Lisp, 109
Не очень конкурентоспособный, но мне нравятся круглые списки:
источник
Perl 5, 43 байта
42 байта +
-p
опция командной строки. Просто нажмите,enter
чтобы вызвать.Спасибо Дому Гастингсу за помощь! Оригинальный ответ был 67 байтов:
источник
-p
была в том, что он завершал работу до вызова последнегоprint
оператора, не зная почему. Я попробовал это. Кроме этого, отличные предложения, спасибо! Мои знания продолжают расти ...0|
уловка не сработала так, как ожидалось, но я сбрил некоторые байты, оператор печати и последнее предложение, как вы предложили. Как это выглядит сейчас?MATL , 41 байт
Чтобы нажать на триггер, введите непустую строку (например,
'try'
).Для завершения введите пустую строку
Примеры
В этом случае спусковой крючок был нажат один раз и ... невезение
В этом случае пользователь остановился (обратите внимание на последний пустой ввод) после двух удачных попыток:
объяснение
источник
Perl 6 ,
5853 байтаНажмите ввод, чтобы нажать на курок, или Ctrl + C, чтобы нажать его.
источник
Python 2,
8884 байтаЭто решение вдохновлено уже предоставленными решениями Python 3. Я выбрал python 2 для удаления круглых скобок при печати, хотя это меняет поведение input ().
источник
Рубин, 45 + 1 = 46
Не такой умный, как у D-стороны , но немного короче.
С флагом командной строки
p
запуститеПользователь может нажать на курок с возвратом и выйти с помощью control-c.
p
заставляет программу работать в цикле, читая строки из STDIN и выводя$_
. Каждый раз, когда он работает, он увеличивается$.
. Поэтому при первом запуске выбирается случайное положительное целое число меньше 6, затем 5, затем 4 и так далее. На первом 0 мы выводим вручную и выходим, пока не выведем неявно.(и теперь я замечаю, что уже есть очень похожий Perl. Ну, хорошо.)
источник
Perl 5,
695149 байтВероятно, есть еще несколько возможностей для игры в гольф, я посмотрю на это.
Изменения:
$l
и некоторых точек с запятой, и 10 байтов при изменении<STDIN>
на<>
источник
map{<>;print"*click*"}1..rand 6;<>;print"*BANG!*"
VBA, 126 байт
Гольф-версия для минимальных байтов
Веселая версия, которая делает кнопки более четкими для повышения восприятия пользователем.
Немного веселья с пользовательскими формами, и вы можете сделать красивую игру в VBA.
источник
APL, 39/65 байт
Довольно простой ответ.
источник
C, 180 байт
Моя первая попытка кода гольф, вероятно, есть много возможностей для улучшения :)
источник
Юлия, 71 байт
Нажмите, Enterчтобы стрелять или Ctrl+C чтобы выйти. Последний заканчивается на
InterruptException
.Ungolfed:
источник
Луа, 73 байта
источник