<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
é (implicitamente, eu vou lhe conceder) limitado a [1,6], então 100 está fora.Respostas:
Pitão, 23 bytes
Realmente simples. Um número aleatório de iterações de 0 a 5 exibe o clique e solicita uma linha de entrada, seguida por uma batida no final.
fonte
*BANG!*
, nãoBANG
Ruby, 51 bytes
Ungolfed:
ou
A retirada do golfe para os leitores. Não é tão difícil
$><<
comoputs
substituto."*click*"
estiverem corretas (o que é necessário é impresso no final), substituindo$><<
porp
. Eu não tinha certeza se isso ainda seguiria as regras.6864 bytes(outra abordagem)
Não pensei muito no algoritmo (ele pode ser ainda mais compacto, mas não tão claro), mas realmente gosto do modelo:
0
é uma bala. Outros números não são.find
localiza um primeiro valor de retorno para o qual o bloco não é nemfalse
nemnil
.||
-expression é retornado implicitamente do bloco. É um curto-circuito: retorna seu primeiro operando (a menos que sejanil
oufalse
) ou um segundo (caso contrário). Portanto, ele retornatrue
(sex<1
ou, mais claro, mas por mais tempox == 0
) ou o valor de retorno deputs
, enquanto ...puts
sempre retornanil
. Sim.gets
solicita entrada. Apenas bater Enteré suficiente.fonte
JavaScript, 64 bytes
Explicação
Para puxar o gatilho, digite qualquer texto no prompt. Digite nada ou clique em cancelar para finalizar.
fonte
"*Bang!*"
não é maior que 7. MasNaN
não é menor que 7.Lua,
8275 bytesMuito longo, mas há muita verbosidade na lua.
fonte
LabVIEW, 46 Primitivas do LabVIEW
Cria uma matriz de 0s e uma 1, possui um loop para aguardar cliques e gera a string. Inicialmente, diz BANG porque esqueci de redefinir o indicador antes de iniciá-lo.
Observe também que este é um gif, se não for reproduzido / carregado para você, reabra a página.
fonte
"*click*"
, caso a arma não atire. Além disso, ele produz"bang"
ou"*BANG!*"
?Pitão,
313028 bytesQuase certamente pode ser melhorado. Insira qualquer número para puxar o gatilho, entrada em branco para terminar mais cedo (com erro).
Explicação:
fonte
"
.FN<any>
está ainda totalmente idêntico aoV<any>
que provavelmente deve ser alterada para não confundir novos golfistas ...: P.?
. Não há necessidade de umelse
.Sério,
2725 bytesNenhum link online porque não há como fazer um prompt com entrada canalizada. O programa pode ser CTRL-C'D a qualquer momento para
sair de frangoterminar.Explicação:
fonte
PHP, 52 bytes
Requer a
-F
opção de linha de comando, contada como três. O gatilho é pressionado pressionando Enter.Como
-F
literalmente executa o script novamente para todas as entradas (não é brincadeira),die
e coisas do tipo não terminam, então saímos por um erro de tempo de execução suprimido@\n
.Uso da amostra
fonte
Perl 5, 43 bytes
Corra com
perl -p
. Variante de marcador estável - ou seja, a posição do marcador é decidida apenas uma vez no início.fonte
//=
. Além disso, não se esqueça de contar-p
na sua pontuação .C,
1107472 bytesAgradecemos a Dennis por se livrar das inclusões e muito menos bytes.
fonte
Doces , 36 bytes
Cerca de metade do programa é o texto a ser impresso :(
forma longa:
fonte
Python 3, 95 bytes
Também minha primeira tentativa de golfe, também em Python 3. Juro que Bruce e não somos a mesma pessoa.
Ungolfed:
Gere um número aleatório entre 0 e 5, inclusive, imprima o clique várias vezes e imprima bang . Pressione Enter / Return para puxar o gatilho.
fonte
from random import*
PlatyPar ,
2625 bytesExplicação:
Experimente online !
fonte
Emacs Lisp,
9489 bytesUngolfed:
fonte
R,
868077 bytesComo de costume, o R possui recursos impressionantes para codificar golfe, mas também inclui nomes de funções.
fonte
Python 2,
10810410210098 bytesMinha primeira tentativa no golfe:
Talvez eu deva acrescentar que o programa não é encerrado corretamente quando você perde, apenas gera uma exceção (que resulta em encerramento):
fonte
a=shuffle([1,0,0,0,0,0])
wc
, dá-me 109 qual deles, então está certo. Como você conta?Perl 5, 40 bytes
Executar sem opções de linha de comando, o gatilho é pressionado pressionando Enter.
fonte
Python, 81 bytes
inspirado nas soluções Ruby (51) e Python
fonte
Lisp comum, 109
Não é muito competitivo, mas eu gosto de listas circulares:
fonte
Perl 5, 43 bytes
42 bytes +
-p
opção de linha de comando. Basta pressionarenter
para disparar.Obrigado a Dom Hastings por sua ajuda! A resposta original era 67 bytes:
fonte
-p
era que ele sairia antes de chamar a últimaprint
declaração, sem saber por quê. Eu tentei. Fora isso, sugestões incríveis, obrigado! Meu conhecimento continua a crescer ...0|
truque não funcionou como o esperado, mas eu raspei alguns bytes dele, a declaração de impressão e a última declaração, como você sugeriu. Como isso parece agora?MATL , 41 bytes
Para puxar o gatilho, insira uma string não vazia (como
'try'
).Para finalizar, insira uma sequência vazia
Exemplos
Nesse caso, o gatilho foi acionado uma vez e ... azar:
Nesse caso, o usuário parou (observe a entrada final vazia) após duas tentativas de sorte:
Explicação
fonte
Perl 6 ,
5853 bytesPressione enter para puxar o gatilho ou ctrl + c para pressioná-lo.
fonte
Python 2,
8884 bytesEsta solução é inspirada nas soluções python 3 já fornecidas. Eu escolhi o python 2 para remover os parênteses de impressão, mesmo que isso mude o comportamento de input ().
fonte
Ruby, 45 + 1 = 46
Não é tão inteligente quanto o lado D, mas é um pouco mais curto.
Com sinalizador de linha de comando
p
, executeO usuário pode puxar o gatilho com retorno e sair com control-c.
p
faz com que o programa seja executado em um loop, lendo as linhas de STDIN e produzindo$_
. Cada vez que é executado, ele aumenta$.
. Portanto, na primeira execução, ele escolhe um número inteiro positivo aleatório menor que 6, depois 5, depois 4 e assim por diante. No primeiro 0, saímos manualmente e saímos, até então saímos implicitamente.(e agora percebo que já existe um Perl muito semelhante. Oh, bem.)
fonte
Perl 5,
695149 bytesProvavelmente existe um pouco mais de potencial de golfe, vou analisar isso.
Alterar:
$l
e alguns pontos e vírgulas e 10 bytes alterando<STDIN>
para<>
fonte
map{<>;print"*click*"}1..rand 6;<>;print"*BANG!*"
VBA, 126 bytes
Versão Golf para bytes mínimos
Versão divertida que torna os botões mais claros para maior aceitação do usuário.
Um pouco de diversão com formulários personalizados e você pode criar um belo jogo liso no VBA.
fonte
APL, 39/65 bytes
Resposta bastante direta.
fonte
C, 180 bytes
Minha primeira tentativa no código de golfe, provavelmente há muito espaço para melhorias :)
fonte
Julia, 71 bytes
Pressione Enterpara disparar ou Ctrl+ Cpara sair. O último termina com um
InterruptException
.Ungolfed:
fonte
Lua, 73 bytes
fonte