<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
ist (implizit, das gebe ich dir) auf [1,6] begrenzt, also sind 100 aus.Antworten:
Pyth, 23 Bytes
Ganz einfach. Eine zufällige Anzahl von Iterationen von 0 bis 5 zeigt einen Klick an und fordert eine Eingabezeile an, gefolgt von einem Knall am Ende.
quelle
*BANG!*
, nichtBANG
Ruby, 51 Bytes
Ungolfed:
oder
Ungolfing ging für die Leser. Gar nicht so schwer
$><<
alsputs
Ersatz."*click*"
Ordnung sind (was erforderlich ist , ist am Ende gedruckt), durch Ersatz$><<
mitp
. Ich war mir nicht sicher, ob dies den Regeln entsprechen würde.6864 Bytes(Ein anderer Ansatz)
Ich habe nicht viel über den Algorithmus nachgedacht (er kann möglicherweise noch kompakter sein, aber nicht so klar), aber das Modell darin gefällt mir wirklich gut:
0
ist eine Kugel. Andere Nummern sind es nicht.find
findet einen ersten Rückgabewert, für den der Block wederfalse
noch istnil
.||
-Ausdruck wird implizit aus dem Block zurückgegeben. Es ist ein Kurzschluss: Es gibt seinen ersten Operanden zurück (es sei denn, es istnil
oderfalse
) oder einen zweiten (ansonsten). Also gibt es entwedertrue
(wennx<1
oder, klarer aber längerx == 0
) oder den Rückgabewert vonputs
, während ...puts
kehrt immer zurücknil
. Ja.gets
fordert Eingabe an. Es Enterreicht aus, nur zu schlagen .quelle
JavaScript, 64 Byte
Erläuterung
Um den Abzug zu betätigen, geben Sie einen beliebigen Text in die Eingabeaufforderung ein. Geben Sie nichts ein oder klicken Sie auf Abbrechen, um den Vorgang zu beenden.
quelle
"*Bang!*"
ist nicht größer als 7.NaN
Lua,
8275 BytesZiemlich lang, aber in lua steckt viel Verbose.
quelle
LabVIEW, 46 LabVIEW-Grundelemente
Erstellt ein Array aus 0 und 1, wartet in einer Schleife auf Klicks und gibt den String aus. Es sagt zunächst BANG, weil ich vergessen habe, den Indikator vor dem Starten zurückzusetzen.
Beachten Sie auch, dass dies ein GIF ist. Wenn es nicht für Sie abgespielt / geladen wird, öffnen Sie die Seite erneut.
quelle
"*click*"
falls die Waffe nicht geschossen hat. Auch gibt es aus"bang"
oder"*BANG!*"
?Pyth,
313028 BytesMit ziemlicher Sicherheit kann verbessert werden. Geben Sie eine beliebige Zahl ein, um den Auslöser zu betätigen, und eine leere Zahl, um den Vorgang vorzeitig zu beenden (mit einem Fehler).
Erläuterung:
quelle
"
.FN<any>
das noch völlig identisch ist mitV<any>
, das man wohl ändern sollte, um neue Golfer nicht zu verwirren ...: P.?
. Es besteht keine Notwendigkeit für eineelse
.Im Ernst,
2725 BytesKeine Online-Verknüpfung, da keine Eingabeaufforderung mit Pipe-Eingaben möglich ist. Das Programm kann CTRL-C'D zu jederzeit sein
kneifenbeenden.Erläuterung:
quelle
PHP, 52 Bytes
Erfordert die
-F
Befehlszeilenoption, die als drei gezählt wird. Der Abzug wird durch Drücken von betätigt Enter.Da
-F
das Skript buchstäblich für jede Eingabe erneut ausgeführt wird (ich verstehe Sie nicht)die
und dergleichen nicht tatsächlich beendet wird, beenden wir es stattdessen über einen unterdrückten Laufzeitfehler@\n
.Beispielnutzung
quelle
Perl 5, 43 Bytes
Laufen Sie mit
perl -p
. Stabile Geschossvariante - dh die Geschossposition wird nur einmal von Anfang an festgelegt.quelle
//=
. Vergessen Sie auch nicht, in Ihrer Punktzahl zu zählen-p
.C
1107472 BytesVielen Dank an Dennis für das Entfernen der Includes und viel weniger Bytes.
quelle
Candy , 36 Bytes
Ungefähr die Hälfte des Programms besteht aus dem auszudruckenden Text :(
lange Form:
quelle
Python 3, 95 Bytes
Auch mein erster Golfversuch, ebenfalls in Python 3. Ich schwöre Bruce und ich bin nicht die gleiche Person.
Ungolfed:
Generieren Sie eine Zufallszahl zwischen 0 und einschließlich 5, drucken Sie so oft klicken , und drucken Sie dann Knall . Drücken Sie die Eingabetaste, um den Abzug zu betätigen.
quelle
from random import*
PlatyPar ,
2625 BytesErläuterung:
Probieren Sie es online !
quelle
Emacs Lisp,
9489 BytesUngolfed:
quelle
R
868077 BytesWie üblich, hat R fantastische Funktionen zum Codieren von Golfspielen, aber looooooong Funktionsnamen.
quelle
Python 2,
10810410210098 BytesMein erster Golfversuch:
Vielleicht sollte ich hinzufügen, dass das Programm nicht korrekt beendet wird, wenn Sie verlieren, sondern nur eine Ausnahme auslöst (was zur Beendigung führt):
quelle
a=shuffle([1,0,0,0,0,0])
wc
habe ich zu viel davon, also ist es richtig. Wie zählt ihr?Perl 5, 40 Bytes
Ohne Befehlszeilenoptionen ausführen, wird der Auslöser durch Drücken von gedrückt Enter.
quelle
Python, 81 Bytes
inspiriert von den Ruby (51) - und Python-Lösungen
quelle
Common Lisp, 109
Nicht sehr wettbewerbsfähig, aber ich mag Zirkellisten:
quelle
Perl 5, 43 Bytes
42 Bytes +
-p
Befehlszeilenoption.enter
Zum Auslösen einfach drücken .Vielen Dank an Dom Hastings für seine Hilfe! Die ursprüngliche Antwort war 67 Bytes:
quelle
-p
dass es beendet wurde, bevor die letzteprint
Anweisung aufgerufen wurde, nicht sicher warum. Ich habe es versucht. Ansonsten tolle Vorschläge, danke! Mein Wissen wächst weiter ...0|
Trick auch aus irgendeinem Grund nicht wie erwartet funktioniert, aber ich habe ein paar Bytes davon entfernt, die print-Anweisung und die letzte Anweisung, wie Sie vorgeschlagen haben. Wie sieht es jetzt aus?MATL , 41 Bytes
Um den Auslöser zu betätigen, geben Sie eine nicht leere Zeichenfolge ein (z. B.
'try'
) .Geben Sie zum Beenden eine leere Zeichenfolge ein
Beispiele
In diesem Fall wurde der Abzug einmal gedrückt und ... Pech gehabt:
In diesem Fall stoppte der Benutzer nach zwei glücklichen Zügen (notiere die letzte leere Eingabe):
Erläuterung
quelle
Perl 6 ,
5853 BytesDrücken Sie die Eingabetaste, um den Abzug zu betätigen, oder Strg + C, um den Abzug zu betätigen.
quelle
Python 2,
8884 BytesDiese Lösung ist von den bereits gegebenen Python 3-Lösungen inspiriert. Ich habe Python 2 gewählt, um die Druckerklammer zu entfernen, obwohl dies das Verhalten von input () verändert.
quelle
Rubin, 45 + 1 = 46
Nicht so schlau wie die D-Seite , aber etwas kürzer.
p
Führen Sie mit dem Befehlszeilenflag ausDer Benutzer kann mit Return den Abzug betätigen und mit Control-C gehen.
p
Bewirkt, dass das Programm in einer Schleife abläuft, Zeilen aus STDIN liest und ausgibt$_
. Jedes Mal, wenn es ausgeführt wird, wird es inkrementiert$.
. Im ersten Durchgang wird also eine zufällige positive Ganzzahl kleiner als 6, dann 5, dann 4 usw. ausgewählt. Bei der ersten 0 geben wir manuell aus und beenden, bis dahin geben wir implizit aus.(Und jetzt bemerke ich, dass es bereits ein sehr ähnliches Perl gibt. Na ja.)
quelle
Perl 5,
695149 BytesEs gibt wahrscheinlich mehr Golfpotential, ich werde das untersuchen.
Änderungen:
$l
und einige Semikolons und 10 Bytes durch Ändern<STDIN>
in gespeichert<>
quelle
map{<>;print"*click*"}1..rand 6;<>;print"*BANG!*"
VBA, 126 Bytes
Golfversion für minimale Bytes
Unterhaltsame Version, die die Schaltflächen klarer macht und die Akzeptanz der Benutzer erhöht.
Ein bisschen Spaß mit benutzerdefinierten Formularen und Sie könnten ein hübsches Slick-Spiel in VBA erstellen.
quelle
APL, 39/65 Bytes
Ziemlich einfache Antwort.
quelle
C 180 Bytes
Mein erster Versuch beim Codegolf, es gibt wahrscheinlich viel Raum für Verbesserungen :)
quelle
Julia, 71 Bytes
Drücken Sie Enterzum Auslösen oder Ctrl+ Czum Beenden. Letzteres endet mit einem
InterruptException
.Ungolfed:
quelle
Lua, 73 Bytes
quelle