introduzione
Nel nostro recente sforzo di raccogliere cataloghi delle soluzioni più brevi per esercizi di programmazione standard, ecco la prima sfida FizzBuzz alla vaniglia di PPCG. Se desideri vedere altre sfide del catalogo, c'è "Hello World!" e "Questo numero è un numero primo?" .
Sfida
Scrivi un programma che stampa i numeri decimali da 1 a 100 inclusi. Ma per multipli di tre stampa "Fizz" anziché il numero e per multipli di cinque stampa "Buzz". Per i numeri multipli di tre e cinque stampare "FizzBuzz".
Produzione
L'output sarà un elenco di numeri (e Fizzes, Buzzes e FizzBuzzes) separati da una nuova riga (o \n
o \r\n
). Una nuova riga finale è accettabile, ma una nuova riga iniziale non lo è. A parte la scelta di newline, l'output dovrebbe apparire esattamente come questo:
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz
31
32
Fizz
34
Buzz
Fizz
37
38
Fizz
Buzz
41
Fizz
43
44
FizzBuzz
46
47
Fizz
49
Buzz
Fizz
52
53
Fizz
Buzz
56
Fizz
58
59
FizzBuzz
61
62
Fizz
64
Buzz
Fizz
67
68
Fizz
Buzz
71
Fizz
73
74
FizzBuzz
76
77
Fizz
79
Buzz
Fizz
82
83
Fizz
Buzz
86
Fizz
88
89
FizzBuzz
91
92
Fizz
94
Buzz
Fizz
97
98
Fizz
Buzz
L'unica eccezione a questa regola è l'output costante dell'interprete della tua lingua che non può essere soppresso, come un saluto, codici colore ANSI o rientro.
Ulteriori regole
Non si tratta di trovare la lingua con l'approccio più breve per giocare a FizzBuzz, si tratta di trovare l'approccio più breve in ogni lingua. Pertanto, nessuna risposta verrà contrassegnata come accettata.
Le iscrizioni vengono classificate in byte in una codifica preesistente appropriata, di solito (ma non necessariamente) UTF-8. Alcune lingue, come Cartelle, sono un po 'difficili da segnare - in caso di dubbi, si prega di chiedere su Meta.
Nulla può essere stampato su STDERR.
A differenza delle nostre solite regole, sentiti libero di usare una lingua (o versione linguistica) anche se è più recente di questa sfida. Se qualcuno vuole abusare di questo creando una lingua in cui il programma vuoto genera l'output di FizzBuzz, allora si congratula per aver spianato la strada a una risposta molto noiosa.
Si noti che deve essere presente un interprete per poter testare l'invio. È permesso (e persino incoraggiato) di scrivere questo interprete per una lingua precedentemente non implementata.
Se la tua lingua preferita è una variante banale di un'altra lingua (potenzialmente più popolare) che ha già una risposta (pensi a dialetti BASIC o SQL, shell Unix o banali derivati Brainfuck come Alphuck e ???), considera di aggiungere una nota all'esistente rispondere che la stessa o una soluzione molto simile è anche la più breve nell'altra lingua.
Poiché l'output è fisso, è possibile codificare l'output (ma questa potrebbe non essere l'opzione più breve).
È possibile utilizzare soluzioni preesistenti, purché si accrediti l'autore originale del programma.
Le scappatoie standard non sono altrimenti vietate.
Come nota a margine, si prega di non sottovalutare le risposte noiose (ma valide) in lingue in cui non c'è molto da golf; questi sono ancora utili a questa domanda in quanto tenta di compilare un catalogo il più completo possibile. Tuttavia, valuta principalmente le risposte nelle lingue in cui gli autori hanno effettivamente dovuto sforzarsi di giocare a golf con il codice.
Catalogare
var QUESTION_ID=58615;var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";var COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk";var OVERRIDE_USER=30525;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)}}
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: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="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>
Nothing can be printed to STDERR.
È vero solo durante l'esecuzione o anche durante la compilazione (supponendo che sia un passaggio separato?)