1, 2, Fizz, 4, Buzz


153

හැදින්වීම

සම්මත ක්‍රමලේඛන අභ්‍යාස සඳහා කෙටිම විසඳුම් නාමාවලි එක්රැස් කිරීමේ අපගේ මෑත උත්සාහයේදී, PPCG හි පළමු වැනිලා ෆිස්බස් අභියෝගය මෙන්න. ඔබට වෙනත් නාමාවලි අභියෝග දැකීමට අවශ්‍ය නම්, "හෙලෝ වර්ල්ඩ්!" සහ "මෙම අංකය ප්‍රමුඛද?" .

අභියෝගය

1 සිට 100 දක්වා දශම සංඛ්‍යා මුද්‍රණය කරන වැඩසටහනක් ලියන්න. නමුත් අංකය වෙනුවට “ෆිස්” මුද්‍රණ තුනක ගුණනය සඳහා සහ මුද්‍රණ පහක ගුණනය සඳහා “බස්”. “FizzBuzz” මුද්‍රණයේ තුනෙන් සහ පහෙන් ගුණ කළ සංඛ්‍යා සඳහා.

ප්‍රතිදානය

ප්‍රතිදානය නව රේඛාවකින් (හෝ \nහෝ \r\n) වෙන් කරන ලද සංඛ්‍යා ලැයිස්තුවක් (සහ Fizzes, Buzzes සහ FizzBuzzes ) වනු ඇත. පසුපස නව රේඛාවක් පිළිගත හැකි නමුත් ප්‍රමුඛ පෙළේ නව රේඛාවක් එසේ නොවේ. ඔබ නව රේඛාව තෝරා ගැනීම හැරුණු විට, ප්‍රතිදානය හරියටම මේ ආකාරයට විය යුතුය:

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

මෙම රීතියට ඇති එකම ව්‍යතිරේකය වන්නේ සුබපැතුම්, ANSI වර්ණ කේත හෝ ඉන්ඩෙන්ටේෂන් වැනි යටපත් කළ නොහැකි ඔබේ භාෂාවේ පරිවර්තකයාගේ නිරන්තර ප්‍රතිදානයයි.

වැඩිදුර රීති

  • මෙය FizzBuzz වාදනය කිරීම සඳහා කෙටිම ප්‍රවේශය සහිත භාෂාව සොයා ගැනීම ගැන නොවේ, මෙය සෑම භාෂාවකම කෙටිම ප්‍රවේශය සොයා ගැනීමයි. එබැවින් කිසිදු පිළිතුරක් පිළිගත් ලෙස සලකුණු නොකරනු ඇත.

  • සාමාන්‍යයෙන් (නමුත් අවශ්‍ය නොවේ) යූටීඑෆ් -8, සුදුසු පූර්ව පවතින කේතන ක්‍රමයකින් ඉදිරිපත් කිරීම් බයිට් වලින් ලකුණු කරනු ලැබේ. ෆෝල්ඩර වැනි සමහර භාෂා ලකුණු කිරීමට ටිකක් උපක්‍රමශීලීයි - සැකයක් ඇත්නම් කරුණාකර මෙටාගෙන් විමසන්න.

  • STDERR වෙත කිසිවක් මුද්‍රණය කළ නොහැක.

  • අපගේ සුපුරුදු නීති මෙන් නොව, මෙම අභියෝගයට වඩා අළුත් වුවද භාෂාවක් (හෝ භාෂා අනුවාදයක්) භාවිතා කිරීමට නිදහස් වන්න. හිස් වැඩසටහන මඟින් FizzBuzz ප්‍රතිදානය ජනනය කරන භාෂාවක් නිර්මාණය කිරීමෙන් යමෙකුට මෙය අනිසි ලෙස භාවිතා කිරීමට අවශ්‍ය නම්, ඉතා නීරස පිළිතුරක් ලබා දීමට සුබ පැතුම්.

    පරිවර්තකයෙකු සිටිය යුතු බව සලකන්න, එවිට ඉදිරිපත් කිරීම පරීක්ෂා කළ හැකිය. කලින් ක්‍රියාත්මක නොකළ භාෂාවක් සඳහා මෙම පරිවර්තකයා ඔබම ලිවීමට අවසර ඇත (සහ දිරිමත් කරනු ලැබේ).

  • ඔබේ තේරීමේ භාෂාව දැනටමත් පිළිතුරක් ඇති වෙනත් (වඩා ජනප්‍රිය) භාෂාවක සුළු ප්‍රභේදයක් නම් (මූලික හෝ SQL උපභාෂා, යුනික්ස් ෂෙල් වෙඩි හෝ ඇල්ෆක් වැනි සුළු බ්‍රේන්ෆක් ව්‍යුත්පන්නයන් සිතන්න), පවතින සටහනට සටහනක් එක් කිරීම සලකා බලන්න. එකම හෝ සමාන විසඳුමක් අනෙක් භාෂාවේ කෙටිම ක්‍රමය බව පිළිතුරු දෙන්න.

  • ප්‍රතිදානය ස්ථාවර බැවින්, ඔබට ප්‍රතිදානය දෘ c කේතනය කළ හැකිය (නමුත් මෙය කෙටිම විකල්පය නොවිය හැක).

  • වැඩසටහනේ මුල් කතුවරයාට ඔබ ගෞරව කරන තාක් කල් ඔබට පෙර පැවති විසඳුම් භාවිතා කළ හැකිය.

  • සම්මත අඩුලුහුඩු වෙනත් ආකාරයකින් තහනම් කර ඇත.

පැති සටහනක් ලෙස, කරුණාකර ගොල්ෆ් ක්‍රීඩාවට වැඩි යමක් නොමැති භාෂාවලින් කම්මැලි (නමුත් වලංගු) පිළිතුරු අවතක්සේරු නොකරන්න; හැකි තරම් සම්පූර්ණ නාමාවලියක් සම්පාදනය කිරීමට උත්සාහ කරන බැවින් මේවා තවමත් මෙම ප්‍රශ්නයට ප්‍රයෝජනවත් වේ. කෙසේ වෙතත්, මූලික වශයෙන් කතුවරුන්ට ඇත්ත වශයෙන්ම කේතය ගොල්ෆ් කිරීමට උත්සාහ කළ යුතු භාෂාවලින් පිළිතුරු ලබා දෙන්න.

නාමාවලිය

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>


1
Nothing can be printed to STDERR. මෙය සත්‍ය වන්නේ ධාවනය වන විට හෝ සම්පාදනය කිරීමේදී පමණි (එය වෙනම පියවරක් යැයි උපකල්පනය කරයිද?)
AShelly

@ අෂෙලි ධාවනය වන විට පමණි
බීටා ක්ෂය වීම

ඔබ 100 දෙනා අභියෝගයට හසුකර ගැනීම ගැන මම කැමතියි යැයි මට විශ්වාස නැත. ඒ ආකාරයෙන්, අපේක්ෂිත ප්‍රතිදානය ජනනය කරන වැඩසටහනක් වලංගු ප්‍රවේශයක් වන නමුත් මෙම අභියෝගය සඳහා සිත්ගන්නා සුළු නොවේ. මම හිතන්නේ අභියෝගය මඟින් වැඩසටහන ප්‍රතිදානය සඳහා අයිතම ගණන ඇතුළත් කරනු ඇතැයි අපේක්ෂා කළ යුතුය.
ටිම්වි

8
Im ටිම්වි එය වඩාත් සිත්ගන්නාසුළු වනු ඇති බවට මා එකඟ වන අතර, මම බොහෝ විට FizzBuzz 1 සිට 100 දක්වා දැඩි ලෙස දැක ඇත්තෙමි (උදාහරණයක් ලෙස විකිපීඩියා සහ රොසෙටා කේතය මත). ඉලක්කය වන්නේ “කැනොනිකල්” එෆ්බී අභියෝගයක් නම් එය අර්ථවත් කරයි.
Geobits

Answers:


83

ෂඩාස්රාකාර , බයිට් 91 යි

ත්‍යාගයට ස්තූතියි :)

ඇවැත්නි, මාටින්ගේ ෂඩාස්රාකාර විසඳුම පරාජය කළ හැකි යැයි මම කිසි විටෙකත් නොසිතුවෙමි . නමුත් - කවුද එය ගිල දමන්නේ - මම එය කළා. මම වත් Hexagony colorer හෝ තිබූ නිසා අසාර්ථක දින කිහිපයක් පසු EsotericIDE මගේ විසඳුමක් පරීක්ෂා කිරීමට. පිරිවිතරයේ අංශ කිහිපයක් මට වැරදියි, එබැවින් මම පෑන සහ කඩදාසි සහ පෙළ සංස්කාරකයක් භාවිතා කරමින් වැරදි “විසඳුම්” කිහිපයක් ඉදිරිපත් කළෙමි. හොඳයි, අවසානයේදී මම මගේ කම්මැලිකම ජයගෙන ගබඩාවන් දෙකම ක්ලෝන කර, VisualStudio බාගත කර ඒවා සම්පාදනය කළෙමි. ඇවැත්නි, ඒවා මොනතරම් ප්‍රයෝජනවත් මෙවලම්ද! ඔබට පෙනෙන පරිදි, මම ඔබ ක්‍රමලේඛකයෙකු ලෙස හඳුන්වන කෙනෙකු වීමට වඩා දුරින් සිටිමි (මම අදහස් කළේ, එන්න! මම විෂුවල්ස්ටූඩියෝ ස්ථාපනය කර නොතිබූ අතර, වැඩසටහනක් සම්පාදනය කරන්නේ කෙසේද යන්න පිළිබඳ කිසිදු හෝඩුවාවක් මා සතුව නැත);)

වැඩ කරන විසඳුමක් සෙවීමට තවමත් මට යම් කාලයක් ගත වූ අතර, එය තරමක් අවුල් සහගත හා අවුල් සහගත ය, නමුත් මෙන්න එය එහි සියලු තේජසින් යුක්ත ය:

ෂඩාස්රාකාර 6 ප්‍රමාණයේ Fizzbuzz:

3}1"$.!$>)}g4_.{$'))\<$\.\.@\}F\$/;z;u;<%<_>_..$>B/<>}))'%<>{>;e"-</_%;\/{}/>.\;.z;i;..>(('

ෂඩාස්රාකාර පිරිසැලසුම:

      3 } 1 " $ .
     ! $ > ) } g 4
    _ . { $ ' ) ) \
   < $ \ . \ . @ \ }
  F \ $ / ; z ; u ; <
 % < _ > _ . . $ > B /
  < > } ) ) ' % < > {
   > ; e " - < / _ %
    ; \ / { } / > .
     \ ; . z ; i ;
      . . > ( ( '

හා සුන්දර අනුවර්තනය කිරීම්, Timwi ගේ ස්තුති Hexagony Colorer :

වර්ණ ගැන්වූ ෂඩාස්රාකාර ෆිස්බස් විසඳුම

ඉතින්, තත්පර 110 ක් දිග GIF සජීවිකරණය 2 fps වේ, පළමු අංක 6 තුළ වැඩසටහන් ප්‍රවාහය පෙන්වයි, වැඩසටහනේ 1, 2, Fizz, 4, Buzz, Fizzපළමු කිනිතුල්ලන් 220 (සම්පූර්ණ ප්‍රමාණය සඳහා රූපය මත ක්ලික් කරන්න):

රූප විස්තරය මෙහි ඇතුළත් කරන්න

මගේ යහපත්කම, නට්රොන් සංයුක්ත මෘදුකාංගයට ස්තූතිවන්ත වන අතර, දර්ශකයේ සජීවිකරණය නිර්මාණය කිරීම තවමත් වෙහෙසකර නමුත් කළමනාකරණය කළ හැකි ය. මතකයේ රූප 260 ක් ඉතිරි කිරීම විනෝදජනක නොවීය. අවාසනාවට EsotericIDE හට එය ස්වයංක්‍රීයව කළ නොහැක. කෙසේ වෙතත්, සජීවිකරණය භුක්ති විඳින්න!

සියල්ලට පසු, ඔබ මතක ආකෘතිය වටා හිස ඔතා, ෂඩාස්රයේ මායිම් තරණය කරන තරමක් ප්‍රතිවිරුද්ධ මාර්ග ඔතා, ෂඩාස්රාකාරය සමඟ වැඩ කිරීම එතරම් අපහසු නොවේ. නමුත් ගොල්ෆ් ක්‍රීඩා කිරීම බට් වල වේදනාවක් විය හැකිය. ;)

එය විනෝදජනක විය!


1
ඉතා කදිමයි! :) පැත්තේ දිග 6 මා විසින්ම අත්හදා බැලීමට අමතක වීම නිසා මට ලැබෙන්නේ එයයි. ;) (මගේ විසඳුම පැත්තක දිග 6 ට වඩා පහසුවෙන්
මාටින් එන්ඩර්

@ මාටින්බට්නර් මම එය දැකීමට කැමතියි :)
එම්එල්

2
මම ඔබට වඩා ක්‍රමලේඛකයෙකුට වඩා අඩුය, මන්ද දෘශ්‍ය ස්ටුඩියෝ යනු කුමක්ද? : P
Rɪᴋᴇʀ

5
අවාසනාවට EsotericIDE හට එය ස්වයංක්‍රීයව කළ නොහැක. - කරුණාකර ඉදිරියට ගොස් විශේෂාංග යෝජනාවක් ගොනු කරන්න , යම් දවසක මම එය කිරීමට
පෙළඹෙනු ඇත

1
(අහෝ මේ අවසන් ඊ-මේල් මගින් පිලිතුරු දෙන්න මාස 6 න් පසු පැමිණෙන) ඔබ විය හැක 1 බයිට විසින් අළු මාර්ගය මාරු කිරීම හා සමාන දොඩම් මාර්ගය තුළ "අවලංගු කෝප්" පැමිණවීමෙන් වැඩසටහන අවසානයේ සිට 1 බයිට ලකුණු ගොල්ෆ් 3}1"$.!$>)}g4_'{$))}\<$\.\.@\;F\$/;z;u;<%<_>_..$>B/<>}))'%<>{>;e"-</_%;\/{}/>.\)(z;i;..>('අමතර පවතී .ඒ (z ට පසුව, a සමඟ "අවලංගු කළ හැකිය") හෝ z එහි තැබීමෙන්. පී: දැන් එය 1 ටික් පසුව තැඹිලි මාවතේ සියලු විධාන තල්ලු, පේළි 3. මත බව Btw මම ද විෂුවල් ස්ටුඩියෝ ස්ථාපනය Hexagony Colorer සහ විරල IDE කිරීමට පමණක් නිසා කිසිදු-op සමග නැවත ලැබී ඇති අ) වේ
සනී අත්වැරැද්දක්

76

පයිතන් 2, 56

i=0;exec"print i%3/2*'Fizz'+i%5/4*'Buzz'or-~i;i+=1;"*100

6
ඩැං, ඒක ලේවැකි දක්ෂයෙක්. මෝඩ්-ප්‍රති result ලයෙන් නූල් ගුණ කිරීම සඳහා ඔබේ අදහස සොරකම් කළ හැකිද?
AdmBorkBork

ImTimmyD ඉදිරියට යන්න.
feersum

16
56 සඳහා වෙනස් ක්‍රමයක් ( මෙතැන් සිට ) : i=1;exec"print'FizzBuzz'[i%-3&4:12&8-i%5]or i;i+=1;"*100. බලහත්කාරයෙන් සෙවුම් ප්‍රකාශන තිරිසන් කිරීමට ඕනෑම කෙනෙකුට අවශ්‍යද?
xnor

1
ඉතා හොඳ තාක්‍ෂණය, මොඩියුලෝ ප්‍රති result ලය ද්විමය බවට පත් කිරීම සඳහා බෙදීමට මම කැමතියි! ඔබේ ක්‍රමය අක්ෂර 54 දක්වා පහත හෙලීමට මට වැඩි දියුණුවක් ඇත ... ඇත්ත වශයෙන්ම මම එය ඔබගේ අවසරයකින් තොරව පිළිතුරක් ලෙස පළ නොකරමි (එය ඔබගේ පිළිතුර ~ 95% බැවින්);)
ටර්සෝසෝරෝස්

2
Er ටර්සෝසෝරෝස් ඉදිරියට යන්න ... මගේ ක්‍රමය සොයා ගැනීම එතරම් අපහසු නොවන අතර බොහෝ අය ස්වාධීනව සොයාගෙන ඇති බවට සැකයක් නැත.
feersum

45

ලැබ්රින්ත් , බයිට් 94 යි

"):_1
\ } 01/3%70.105
" :   @ "     .
"  =";_""..:221
+  _
"! 5%66.117
_:= "     .
="*{"..:221

උප -100! මෙය විනෝදජනක එකක් විය.

පැහැදිලි කිරීම

ලැබ්රින්ත් පිළිබඳ කෙටි ප්‍රාථමිකයකින් පටන් ගනිමු - ඔබ දැනටමත් මූලික කරුණු හුරුපුරුදු නම් මෙය මඟ හැරීමට නිදහස් වන්න:

  • ලැබ්රින්ත්ට කොටස් දෙකක් තිබේ - ප්‍රධාන තොගයක් සහ සහායක තොගයක්. මෙම කොටස් දෙකටම පතුලේ අසීමිත සංඛ්‍යාවක් ඇත, උදා: +හිස් තොගයක් මත ශුන්‍ය දෙකක් එකතු වන අතර එමඟින් ශුන්‍යය තල්ලු වේ.

  • ලැබ්රින්ත් හි පාලන ප්‍රවාහය තීරණය කරනු ලබන්නේ මංසන්ධිවලින් වන අතර, ඊළඟට යා යුත්තේ කොතැනටද යන්න තීරණය කිරීම සඳහා තොගයේ ඉහළ කොටස දෙස බලයි. සෘණ යන්නෙන් අදහස් වන්නේ වමට හැරීම, ශුන්‍යය යන්නෙන් කෙළින්ම ඉදිරියට යන්න සහ ධනාත්මක යන්නෙන් දකුණට හැරෙන්න ... නමුත් අපි තාප්පයකට පහර දුන්නොත් අපි ආපසු හරවන්නෙමු. නිදසුනක් ලෙස, කෙළින්ම ඉදිරියට ගොස් වමට හැරවිය හැකි නමුත් තොගයේ ඉහළ කොටස ධනාත්මක නම්, අපට දකුණට හැරවිය නොහැකි බැවින් අපි ඒ වෙනුවට වමට හැරෙමු.

  • ලැබ්රින්ත් පොප් xසහ තල්ලු වල 10*x + <digit>ඉලක්කම්, විශාල සංඛ්‍යාවක් සෑදීම පහසු කරයි. කෙසේ වෙතත්, මෙයින් අදහස් කරන්නේ ලැබ්රින්ත් හි ඇති නව අංකයක් ආරම්භ කිරීම සඳහා 0 තල්ලු කිරීමට අපට උපදෙස් අවශ්‍ය බවයි _.

දැන් අපි නියම කේතය වෙත යමු!

රූප විස්තරය මෙහි ඇතුළත් කරන්න

රතු

ක්‍රියාත්මක කිරීම ආරම්භ වන්නේ "ඉහළ වම්පස කෙළවරේ සිට වන අතර එය NOP වේ. ඊළඟට ), එය තොගයේ ඉහළ කොටස වැඩි කරයි, පළමු මුරපදය මත 1 තල්ලු nකර පහත සඳහන් සෑම පාස් එකකම වැඩි කරයි.

අප ඊළඟට අනුපිටපත් nසමග :. nධනාත්මක බැවින් , අපි දකුණට හැරෙමු, ක්‍රියාත්මක කිරීම }(ප්‍රධාන තොගයේ ඉහළ සිට සහායකයට මාරුවීම) සහ :. අපි මාරාන්තික අවසානයකට පහර දුන්නෙමු, එබැවින් අපි හැරී ක්‍රියාත්මක }කර :නැවත වරක්, තොග මෙන් තබමු

Main [ n n | n n ] Aux

නැවත වරක්, nධනාත්මක වන අතර අපි දකුණට හැරෙමු, එය 101 _101/න් බෙදනු nලැබේ. 101 නම්, nඑවිට n/101 = 1අපි @වැඩසටහන අවසන් කරන, බවට හැරෙමු. එසේ නොමැතිනම් අපගේ වර්තමාන තත්වයයි

Main [ n 0 | n n ] Aux

තැඹිලි 1 (mod 3)

3ඉහළ ශුන්‍යය 3 ( 10*0 + 3 = 3) බවට හරවා %මොඩියුලයක් සිදු කරයි. n%3ධනාත්මක නම් , අපි දකුණට කහ පැහැයට හැරෙමු ". එසේ නොමැතිනම් අපි ඉටු කරන්නේ 70.105.122:..කුමන ප්‍රතිදානයන් ද Fizzයන්නයි. අප සමග නව zeroes තල්ලු කිරීමට අවශ්ය නැති බව සටහන _සිට n%3අප එසේ අඩුක්කුව පතුලේ ඇති අසීමිත zeroes උපරිම ලෙස භාවිතා කළ හැක, මෙම නඩුවේ ශුන්ය විය. මෙම මාර්ග දෙකම නැවත ලා නිල් පැහැයෙන් හමුවෙයි.

ලා නිල්

තොගයේ මුදුන දැනට n%3ධනාත්මක විය හැකි බැවින් _;සාධාරණය ශුන්‍යයක් තල්ලු කර වහාම එය වෙතට යොමු වන්නේ අප දෙසට හැරෙනවා වෙනුවට අපි කෙළින්ම ඉදිරියට යන බව සහතික කරමිනි @. ඉන්පසු අපි =ප්‍රධාන සහ සහායක තොගවල මුදුන් මාරු කිරීමට භාවිතා කරමු .

Main [ n | n%3 n ] Aux

තැඹිලි 2 (mod 5)

මෙය පෙරට සමාන තත්වයකි, 66.117.122:..ප්‍රතිදානයන් ශුන්‍ය Buzzනම් හැර n%5.

තද නිල්

පෙර කොටස වැනි කොටස් ඉතිරි වේ

Main [ n%5 | n%3 n ] Aux

{කොටසක් සපුරා n%3ප්රධාන අඩුක්කුව හා නැවත *ගුණනය වන modulos දෙකක්.

එක්කෝ මොඩියුලෝ ශුන්‍ය නම්, නිෂ්පාදිතය ශුන්‍ය බැවින් අපි කෙලින්ම කහ පැහැයට හැරෙමු. =තොග මුදුන _මාරු කර ශුන්‍යයක් තල්ලු කරමින් අපි කෙළින්ම ඉදිරියට යන බවට වග බලා ගන්න

Main [ n 0 | 0 ] Aux

එසේ නොමැති නම්, මොඩියුලෝ දෙකම අස්ථිර නම්, එවිට නිෂ්පාදිතය අස්ථිර වන අතර අපි හරිත පැහැයට හැරෙමු. =ලබා දෙමින්, තොග මුදුන් මාරු කරයි

Main [ n | (n%5)*(n%3) ] Aux

ඉන්පසු අපි :අනුපිටපත් කිරීමට n, දකුණට හැරවීමට, !ප්‍රතිදානය සඳහා භාවිතා කරමු n.

දම් පාට

මෙම අවස්ථාවෙහිදී, ප්‍රධාන තොගයේ අයිතම එකක් හෝ දෙකක් ඇත, එය ගෙන යන මාර්ගය අනුව. අපි කහ මාර්ගයෙන් ශුන්‍යයෙන් මිදිය යුතු අතර, අප භාවිතා කරන දේ කිරීමට +, එය n + 0අවස්ථා දෙකෙහිම යම් අනුපිළිවෙලකට ක්‍රියා කරයි . අවසාන වශයෙන්, \නව රේඛාවක් ප්‍රතිදානය කරන අතර අපි නැවත ආරම්භයට පැමිණෙමු.

සෑම පුනරාවර්තනයක්ම (n%5)*(n%3)සහායක තොගයට අතිරේකව තල්ලු කරයි , නමුත් වෙනත් ආකාරයකින් අපි නැවත නැවතත් එකම දේ කරමු.


7
පැහැදිලි කිරීමට ආදරය කිරීම.
The_Basset_Hound

29

පර්ල් 5, බයිට් 49 යි

බයිට් 46 ස්ක්‍රිප්ට් + බයිට් 3 යි -E"..."

භාවිතා say(අවශ්ය වන -E"..."නිසා) බයිට් 46 මෙම තවදුරටත් අඩු කර ගත හැකිය sayවූ නව පේළියකට යොමු කිරීමේ අක්ෂරය ස්වයංක්රීයව ඇතුළත් (ස්තූතියි @Dennis !):

say'Fizz'x!($_%3).Buzz x!($_%5)||$_ for 1..100

පර්ල් 5, බයිට් 50 යි

print'Fizz'x!($_%3).Buzz x!($_%5)||$_,$/for 1..100

භාවිතා කිරීමෙන් ඔබට බයිට් කිහිපයක් ඉතිරි කළ හැකිය say.
ඩෙනිස්

ඔබ ලකුණු පුවරුව බිඳ දැමුවා ...
LegionMammal978

@ LegionMammal978 ඔව්. ඔව් මම කළා ... මම මාතෘකාව නැවත වචන කිරීමට උත්සාහ කරමි! අහ්!
ඩොම් හේස්ටිංස්

නැත -E"..."8 බයිට්? අවකාශය + ඉර + විකල්ප + තර්කය (+ උපුටා දැක්වීම).
එරික් ද අවුට්ගොල්ෆර්

1
@ එරික් ගොල්ෆර් එබැවින් මම මෙය පළ කළ දා සිට එකඟතාව වන්නේ -Eඑය බයිට් 0 ක් වන නමුත් ප්‍රීමෝගේ පිළිතුර උපුටා දැක්වීම් හැර ලකුණු කර ඇති හෙයින්, මම එය සාධාරණ කිරීමට තීරණය කළ අතර මගේ සහ +1 සඳහා උපුටා දැක්වීම් ඇතුළත් කළෙමි -E. එය නොමිලේ ලෙස පිළිගැනීමට හේතුව පර්ල් සාමාන්‍යයෙන් ධාවනය වන perl -eඅතර perl -Eඑය තවත් බයිට් නොවේ (මම සිතුවෙමි -M5.010හෝ use 5.010නොමිලේ විය හැකිය, නමුත් සමහර විට මෙටා පෝස්ට් නැවත කියවීම නොවේ). එකතු කරන විට -pහෝ -nමෙය ඔබ සමඟ ධාවනය වන පරිදි +1 ලෙස ගණන් ගනු ලැබේ perl -pe. උපකාරවත් වන බලාපොරොත්තුව! මෙටා යොමුව: meta.codegolf.stackexchange.com/a/7539
ඩොම් හේස්ටිංස්

27

රූබි, බයිට් 50 යි

1.8 අනුවාදය අවශ්‍යයි, එය ගොල්ෆ් ක්‍රීඩකයින් අතර ජනප්‍රිය බව පෙනේ:

1.upto(?d){|n|puts'FizzBuzz
'[i=n**4%-15,i+13]||n}

නූතන රූබි වලදී, ඔබ බයිට් 51 ක විසඳුමක් සඳහා ආදේශ ?dකරයි 100.

මෙය ලෝක වාර්තාව ලෙස පෙනේ.


1
එය ද්වේෂ සහගත ය, එයට ආදරය කරන්න.
කැම්ඩන් නාර්ස්ට්

?dසාධාරණයි 100. මෙම FizzBuzzසංගීත, එහි නව පේළියකට යොමු කිරීමේ අක්ෂරය ඇත, මෙම රූබි වලංගු වේ. string[i, s]පෙත්තක්, අක්ෂරයෙන් ආරම්භ වන i(0-සුචිගත), sඅක්ෂර සඳහා ඉදිරියට යන අතර , නූලෙන් පිටත යොමු වන දර්ශක නොසලකා හරිනු ලැබේ. putsදැනටමත් නව රේඛාවක් ඇති බවට තර්කය තිබේ නම්, එය කපා දමනු ලැබේ. සූත්‍රය කියවීමට සරල විය යුතුද? එය මෙහි සියලු වැඩ කටයුතු කරයි. රූබි ගොල්ෆ් ක්‍රීඩකයින්ගේ උදව් නොමැතිව මට එය සොයාගත නොහැකි වනු ඇත.
ලින්

පැති සටහන: ආදානය ආරම්භයේදී 0 එකතු කිරීමට ඔබට අවසර ලැබුනේ නම් (ඔබ එසේ නොවේ), ?e.timesඒ වෙනුවට බයිට් 2 ක් ඉතිරි කර ගත හැකිය .
ෂෙල්වාකු

[i=n**4%-15,i+13]කරුණාකර ඔබට එම කොටස පැහැදිලි කළ හැකිද ? මගේ හිස ඒ වටා ඔතා ඇති බවක් නොපෙනේ
Piccolo

2
IcPiccolo මෙම ස්නිපටය උදව් කරයිද? i==-14පෙත්ත සීමාව ඉක්මවා ගියහොත් අපට ලැබෙනු nilඇත. නම් i==-9අපි සංවරය i+13==4අවසානයේ සිට 9 වැනි ස්වභාවයෙන් ආරම්භ චරිත, එසේ 'Fizz'. i==-55 වන අක්‍ෂරයේ සිට කෙළවරේ සිට අක්ෂර 8 ක් කපා දැමුවහොත් , එසේය 'Buzz\n'. (අපි 8 පෙති කපන්න උත්සාහ කළත් එහි ඇත්තේ 5 ක් පමණි, එබැවින් අපට 5 ක් ලැබේ.) Et cetera.
ලින්

26

ජාවා, බයිට් 130 යි

මෙය මෑත ජාවා අනුවාද සඳහා (7+). වැඩිහිටියන් තුළ ඔබට enumඋපක්‍රමය භාවිතා කර තවත් රැවුල බෑමට හැකිය , නමුත් තර්කනය මෙයට වඩා කෙටි වේ යැයි මම නොසිතමි (ඇතුළත 86 main).

class F{public static void main(String[]a){for(int i=0;i++<100;)System.out.println((i%3<1?"Fizz":"")+(i%5<1?"Buzz":i%3<1?"":i));}}

ආරම්භක බ්ලොක් උපක්‍රමය මෙහි උපකාරී වේ යැයි මම නොසිතමි.
feersum

හ්ම්. ස්ථිතික උපක්‍රම stderr වෙත මුද්‍රණය කරන බව මම දනිමි, නමුත් මම සිතුවේ enum පිරිසිදු ලෙස ධාවනය වන බවයි. දැන ගැනීම
සතුටක්

5
මට බයිට් 14 කින් පහර දෙන්න! == 0 වෙනුවට <1 භාවිතා කිරීම සුරැකීමට හොඳ ක්‍රමයකි!
ඊඑස්පී

2
class F{public static-> interface F{staticjava 8 හි
TheNumberOne

1
බව නොවේ තරමක් ආකාරය enums වැඩ. ඔබට කළ යුතුව ඇත enum F{;public..., එබැවින් ඔබ ඇත්ත වශයෙන්ම බයිට් කිසිවක් ඉතිරි නොකරනු ඇත.
හයිපර් නියුට්‍රිනෝ

24

gs2 , 1

f

උපුටා Mauris, gs2 නිර්මාතෘ සිට:

මට අවශ්‍ය වූයේ ගෝරූබිගේ 1-බයිට් එකයිHello, world! , ඉතින් ... මෙය මුද්‍රණය කරයි "1\n2\nFizz\n4\nBuzz\n...". :)

යාවත්කාලීන කිරීම : භාවිතා නොකරන බයිට් 27 ක පිළිතුරක් එක් කරන ලදි f.


23

පයිත්, 30

VS100|+*!%N3"Fizz"*!%N5"Buzz"N

එය මෙහි උත්සාහ කරන්න

පැහැදිලි කිරීම:

VS100|+*!%N3"Fizz"*!%N5"Buzz"N
VS100                            : for N in range(1,101)
     |                           : logical short-circuiting or
      +*!%N3"Fizz"               : add "Fizz" * not(N % 3)
                                 : Since not gives True/False this is either "" or "Fizz"
                  *!%N5"Buzz"    : Same but with 5 and Buzz
                             N   : Otherwise N
                                 : The output of the | is implicitly printed with a newline

23

රෙටිනා , 317 139 134 132 70 63 60 55 බයිට්

.100{`^
_
*\(a`(___)+
Fi;$&
\b(_{5})+$
Bu;
;_*
zz
'_&`.

එය මාර්ගගතව උත්සාහ කරන්න!

පැහැදිලි කිරීම

.100{`^
_

මෙම .වැඩසටහන අවසානයේ ගම්ය ප්රතිදානය නිමී කරන ලද ගෝලීය නිහඬ ධජය වේ. 100{පුනරාවර්තන 100 ක් සඳහා ක්‍රියාත්මක වන ලූප් එකක ඉතිරි වැඩසටහන ඔතා. අවසාන වශයෙන්, වේදිකාව විසින්ම නූල _ආරම්භයේදීම ඇතුල් කරන අතර එය un ලදායි ලෙස ලූප කවුන්ටරයක් ​​වැඩි කරයි.

*\(a`(___)+
Fi;$&

තවත් වින්‍යාසය. *\(වැඩසටහනේ ඉතිරි කොටස සමූහයක් ලෙස ඔතා, එහි ප්‍රති result ලය පසුපස රේඛීය රේඛාවකින් මුද්‍රණය කරයි, නමුත් මුළු කණ්ඩායමම වියළි ධාවනයකට දමයි, එයින් අදහස් කරන්නේ මුද්‍රණයෙන් පසු එහි ප්‍රති result ලය ඉවතලනු ඇති බවයි, එවිට අපගේ ලූප් කවුන්ටරය ඇත්ත වශයෙන්ම වෙනස් නොවේ . aඅභිරුචි රීජෙක්ස් විකරණකාරකයක් වන අතර එය රීජෙක්ස් මුළු නූලටම නැංගුරම් ලා ඇත (එමඟින් බයිට් එකක් භාවිතා කිරීමෙන් ^හා $පැහැදිලිව ඉතිරි වේ).

පරමාණුක අවධියම බලා ගනී Fizz. බෙදීමේ හැකියාව 3පහසුවෙන් එකවර පරීක්ෂා කළ හැකිය: අංකය පුනරාවර්තනයක් ලෙස ලිවිය හැකිදැයි පරීක්ෂා කරන්න ___. මෙය එසේ නම්, අපි නූලට Fi;සූදානම් වෙමු . අර්ධ සළකුණ නිසා ඊළඟ අදියර සඳහා අංකය ඉදිරිපිට වචන සීමාවක් තවමත් පවතී. අපි රේඛාව බවට පත් නම් Fizz___...අතර තත්ත්වය zහා _වචනය චරිත ලෙස regex අමතා, ලිපි හා යටි ඉරි දෙක නිසා, හතරේ සැලකිය නොහැකි වනු ඇත. කෙසේ වෙතත්, අර්ධ සළකුණ අපට zzඅනුපිටපත ඉවත් කිරීමට Fizzසහ Buzz.

\b(_{5})+$
Bu;

අප විසින් divisibility සඳහා හරියටම සමාන කරන්න 5සහ Bu;අප තබා ගැනීමට අවශ්ය නැහැ නමුත්, _මෙම කාලය පුරා s. ඒ නිසා අපට වැනි ප්‍රති results ල ලැබෙනු ඇත

_
__
Fi;___
____
Bu;
Fi;______
...
Fi;Bu;
...

මෙය ඉතා පහසු පමණක් අඩංගු වන ඒ අනුවය දී යටි ඉරි මිදෙන්නට කරයි Fizzද පිරවීම අතර, zzs:

;_*
zz

එනම්, අපි එක් එක් අර්ධ සළකුණ බවට හරවන zzනමුත් ඊට පසුව අපි සියල්ලම පරිභෝජනය කරමු _. මෙම අවස්ථාවෙහිදී අපි ෆිස්බස් සමඟ නොවරදවාම කටයුතු කර ඇත්තෙමු. නමුත් අභියෝගයට අවශ්‍ය වන්නේ දශම ප්‍රතිදානයයි.

'_&`.

&කොන්දේසියක් දක්වයි: මෙම අදියර ක්‍රියාත්මක කරනු ලබන්නේ නූල් වල යටි ඉරි ලකුණු තිබේ නම් පමණි. ඒ නිසා, Fizz, Buzzහා FizzBuzzඅනුකරණ අතහැර දමන ඇත. අනෙක් සියලුම පුනරාවර්තන වලදී (එනම් 3 හෝ 5 න් බෙදිය නොහැකි), අපි අක්ෂර ගණන පමණක් ගණනය කර ප්‍රති result ලය දශමයට පරිවර්තනය කරමු.


20

පර්ල් 5, බයිට් 45 යි

say((Fizz)[$_%3].(Buzz)[$_%5]or$_)for+1..100

-Eවිකල්පයක් අවශ්‍යයි , එකක් ලෙස ගණන් ගනු ලැබේ. මෙය විධාන රේඛාවෙන් ධාවනය කළ යුතුය, එනම්:

perl -Esay((Fizz)[$_%3].(Buzz)[$_%5]or$_)for+1..100

එක් වැලකී සිටීමේ අවකාශ, හෝ විධාන රේඛාව විෙභ්දක (ලෙස ක්රියා කළ හැකි වන වෙනත් ඕනෑම අක්ෂර භාවිතා කරන්නේ නම් මෙම විධානය පමණ මිල කැඳවීම්, අනවශ්ය |, <, >, &, ආදිය).


පර්ල් 5, බයිට් 48 යි

print+(Fizz)[$_%3].(Buzz)[$_%5]||$_,$/for 1..100

විධාන රේඛා විකල්පයන් එක බැගින් ගණනය කරන්නේ නම්, -lඑක් බයිට් එකක් ඉතිරි කරයි (ප්‍රතිස්ථාපනය කිරීමෙන් $/). විසින් ක්ලැසික් Perlgolf රීති , කෙසේ වෙතත්, මෙම 3 ගණන් ඇත: සඳහා එක් -සඳහා, එක් lකර, අවශ්ය අවකාශය සඳහා එක්.


සංස්කරණ දුර 1 සිට sayඇති -Eස්විචය සමඟ ඔබට භාවිතා කළ හැකිය -e, එබැවින් එය බයිට් 1 ක් ලෙස ගණන් ගත යුතුය.
ඩෙනිස්

හේයි ප්‍රීමෝ, මගේ පිළිතුර සඳහා මම වංචා කළ බවක් මට හැඟේ, ඒ වෙනුවට එය භාවිතා කළ හැකි යැයි sayමම සිතුවෙමි , එය ඔබව 46 ට වඩා 44 දක්වා පහත හෙලනු ඇත. මම ලකුණු කිරීම සාධාරණ යැයි මම නොසිතමි ඔබට වෙනස් ආකාරයකින්, කැමති ලකුණු කිරීමේ යාන්ත්‍රණය කුමක්ද? මෙය වළක්වා ගැනීමට මම සාමාන්‍යයෙන් භාවිතා කරමි ! සම්මුතියකට සමීප වන්නේ මෙයද ? -E-eprint
ඩොම් හේස්ටිංස්

මගේ පුද්ගලික අදහස නම් විධාන රේඛාවේ ඇති සෑම අමතර බයිට් එකක්ම sayලකුණු 1 ක් විය යුතු -Eබවයි. ඔබට මිල ගණන් භාවිතා කිරීමට අවශ්‍ය නම්, උදා-E"$a||$b" ලකුණු 3. ඔබට එය එක පේළියකින් ලබා ගත නොහැකි නම්, ලකුණු 5 ක් ලබා ගන්න -M5.01. නමුත් එම අවස්ථාවේදී ඔබ භාවිතා කිරීමට වඩා හොඳ වනු ඇත -l. හේතු දෙකක් නිසා එය පෙරනිමියෙන් නොමිලේ විය යුතු බවට මම එකඟ නොවෙමි: 1) වැඩිදියුණු කිරීම සුළුපටු හා උනන්දුවක් නොදක්වන අතර 2) පෙරනිමියෙන් එය සක්‍රිය කර ඇති පරිවර්තකයාගේ අනුවාදයක් නොමැත.
primo

20

මී මැස්සා ,104 යි 89 යි බයිට් 81 යි

තවත් බයිට් 8 ක් කපා හැරීමට ens න ඇසුරුම් කිරීමට අවසර ඇත.

කෙටිම විසඳුම (බයිට් 81), එකම වැඩසටහන් ප්‍රවාහය, විවිධ ඇසුරුම්.

p?@<
p?{@b'gA<
p@`zzuB`d'%~5F@<f`z`<
 >~P"#"_"1F3~%'d`Fiz`b
 d;"-~@~.<
>?N@9P~0+d

සංකල්පය වෙනස් කිරීමෙන් කේතය බයිට් 15 කින් අඩු කිරීමට මට හැකි විය. විසඳුමේ ඇති ද්විත්ව මොඩ් 5 පරීක්ෂණයෙන් මිදීමට මට අවශ්‍ය වූ නිසා මම ධජයක් ක්‍රියාත්මක කළෙමි.

කෙටි පැහැදිලි කිරීම:

n%3=0Fizz මුද්‍රණය වී ධජය සකසා ඇත්නම් . ධජය සාක්ෂාත් කරගනු ලබන්නේ ඉහළ lstack අගය gstack (උපදෙස් f) මතට තල්ලු කිරීමෙනි .

එසේ නම් n%5=0, එක්කෝ n%3=0(FizzBuzz case) හෝ n%3>0(Buzz case). මෙම අවස්ථා දෙකෙහිම, Buzz මුද්‍රණය වන අතර, ධජය යලි සකසනුයේ එය හිස් වන තුරු තොගය තැබීමෙනි (උපදෙස් ?).

දැන් සිත්ගන්නා අවස්ථා:

එසේ නම් n%5>0, අප සතුව තිබුනේ නම් n%3=0(Fizz case මුද්‍රණය කිරීම, n මුද්‍රණය නොකළ යුතුය) හෝn%3>0 (Fizz මුද්‍රණය කර නොතිබුණි, එබැවින් n මුද්‍රණය කළ යුතුය). ධජය පරීක්ෂා කිරීමට කාලයයි. මෙය අවබෝධ වන්නේ gstack හි දිග gstack (උපදෙස් A) මතට තල්ලු කිරීමෙනි . එසේ n%3 was 0නම් gstack දිග> 0 වේ. එසේ නම් n%3 was >0, gstack දිග 0 වේ. සරල කොන්දේසි සහිත පැනීමකින් n මුද්‍රණය වන්නේ gstack හි දිග 0 නම් පමණි.

නැවතත්, ඕනෑම n, Fizz, සහ / හෝ Buzz සහ නව රේඛාව මුද්‍රණය කිරීමෙන් පසුව, එය හිස් බව තහවුරු කර ගැනීම සඳහා gstack දෙවරක් කැපී පෙනේ. gstack එක්කෝ හිස් ය [], එය [0]උපදෙස් වලින් පසුව සිදු වේA (gstack මත gstack හි තල්ලු කිරීමේ දිගට) යොමු කරයි, නැතහොත් එහි එක් ශුන්‍යයක් ( [0], n% 3 හි ප්‍රති result ලය) අඩංගු වේ [0 1], එය [0] දිග ඇති බැවින් 1 වෙත යොමු වේ. හිස් තොගය තොගය වෙනස් නොකරයි, එබැවින් දෙවරක් පොප් කිරීම ආරක්ෂිතයි.

ඔබ සමීපව බැලුවහොත් ඔබට එය දැක ගත හැකිය, ප්‍රතිපත්තිමය වශයෙන්, මම නැමී

>      q
d`Fizz`f>

වෙත

<f`z`<
d`Fiz`b

පහත දැක්වෙන පරණ ද්‍රාවණය තුළ පහත පේළිය අතර Aසහ <අවසානයේ ඇති අපතේ යන අවකාශය ඉවත් කිරීමට උපකාරී වේ:

q?{@b'gA<       p      <

සජීවිකරණ පැහැදිලි කිරීම ඇතුළුව නව සංකල්ප විසඳුම (බයිට් 89):

q?@ <
 q?{@b'gA<       p      <
p?<@`zzuB`b'%~5F@<f`zziF`b'<
>N@9P~0+.~@~-";~P"#"_"1F3~%d

ෂඩාස්රාකාර පිරිසැලසුම:

   q ? @   <
    q ? { @ b ' g A <               p             <
 p ? < @ ` z z u B ` b ' % ~ 5 F @ < f ` z z i F ` b ' <
> N @ 9 P ~ 0 + . ~ @ ~ - " ; ~ P " # " _ " 1 F 3 ~ % d

දේශීය හා ගෝලීය කොටස් සමඟ පළමු කිනිතුල්ලන් 326 ක් සජීවීකරණය කිරීම සහ STDOUT වෙත ප්‍රතිදානය කිරීම.

මී මැස්සා FizzBuzz සජීවිකරණය


සංසන්දනය කිරීම සඳහා, පැරණි, වඩාත් සංකීර්ණ විසඳුමේ මාර්ග ආවරණ පහත දැක්වේ. දෘශ්‍ය දෘෂ්ටි කෝණයකින් බැලූ විට එය වඩාත් සුදුසු විසඳුම විය හැකිය;)

මාර්ග ආවරණයක් සහිත වැඩසටහන


2
මෙය ෂඩාස්රාකාරය මෙන් පිස්සු හා ලස්සනයි. +1 ක් ගන්න!
ETHproductions

@ETHproductions මට තවමත් ෂඩාස්රාකාරය අත්හදා බැලිය යුතුය, නමුත් භාෂා පිරිවිතරයන්ගෙන් මට කිව හැකි දේ අනුව, මගේ මී මැස්සා ෂඩාස්රාකාරයේ උමතුවට සමීප නොවේ.
එම්එල්


ඔබ එම සජීවිකරණ කරන්නේ කෙසේද?
baordog

18

> <> , 68 66 65 64 බයිට්

1\2+2foooo "Buzz"<
o>:::3%:?!\$5%:?!/*?n1+:aa*)?;a
o.!o"Fizz"/oo

එකම උපක්‍රමය නම් සංඛ්‍යා මුද්‍රණයට කොන්දේසියක් ලෙස ඉතිරිව ඇති ගුණ කිරීම ය. ඒ ආකාරයෙන්, ඔවුන්ගෙන් එකක් 0 නම් අපි අංකය මුද්‍රණය නොකරමු.

ඔබට එය මෙහි උත්සාහ කළ හැකිය .

එක් බයිට් එකක් ස්පී 3000 ට ස්තුති කළ අතර තවත් ස්තූතියි අහඹු ලෙස. බොහෝම ස්තූතියි!


1
ඉතා හොඳින් ගොල්ෆ් කළ, පළමු පේළියේ "\" සහ දෙවන පේළියේ නැවත භාවිතා කිරීමට මම කැමතියි.
cole

1
-1 බයිට් ඔබ oදෙවන පේළියේ අවසානයේ පේළියේ ආරම්භයේ හිස් අවකාශයට ගෙන යන්නේ නම්, මම විශ්වාස කරමි.
Sp3000

@ Sp3000 ඇත්ත වශයෙන්ම, මම ගොල්ෆ් ක්‍රීඩා කිරීමට බොහෝ කාලයක් ගත කළෙමි, මෙය මතකයට නොපැමිණියේ කෙසේදැයි මම නොදනිමි
ආරොන්

1
ඔබට ඇති විට fizz buzz අවශ්‍ය වන්නේ කාටද foooo Buzz?
caird coinheringaahing

17

gs2 , 28 27 (නොමැතිව f)

හෙක්ස්:

1b 2f fe cc 04 46 69 7a 7a 09 07 42 75 7a 7a 19 06 27 2d d8 62 32 ec 99 dc 61 0a

පැහැදිලි කිරීම:

1b    100
2f    range1 (1..n)
fe    m: (map rest of program)

cc    put0 (pop and store in register 0)
04    string-begin
Fizz
09    9
07    string-separator
Buzz
19    25
06    string-end-array (result: ["Fizz"+chr(9) "Buzz"+chr(25)])

27    right-uncons
2d    sqrt
d8    tuck0 (insert value of register 0 under top of stack)
62    divides
32    times (string multiplication)
ec    m5 (create block from previous 5 tokens, then call map)

99    flatten
dc    show0 (convert register 0 to string and push it)
61    logical-or
0a    newline

3 සහ 5 නූල් නියතයට කාවැද්දීම ක්‍රියා නොකරයි \x05 .

සටහන: මෙම ගැටළුව gs2 සමඟ බයිට් 1 කින් විසඳා ගත හැකිය f.


17

MUMPS, බයිට් 56 54

f i=1:1:100 w:i#5=0 "Fizz" w:i#3=0 "Buzz" w:$X<3 i w !

මොකක්ද මේ w:$X<3 iදේ, ඔයා අහන්නේ? $Xනිමැවුම් කර්සරයේ තිරස් පිහිටීම (පර්යන්තයේ වම් කෙළවරේ ඇති අක්ෂර ගණනාවක් ලෙස) ගබඩා කරන මැජික් විචල්‍යයකි (“සහජ”). wයනු WRITEවිධානයේ සංක්ෂිප්ත ස්වරූපයයි . වාක්‍ය command:condition argsඛණ්ඩය පශ්චාත් කොන්දේසියකි - "එසේ conditionනම් කරන්න command args".

එබැවින් අපි ප්‍රතිදාන කර්සරය අක්ෂර දෙකකට වඩා වැඩි දියුණු කර ඇත්දැයි පරීක්ෂා කර බලමු (එයින් අදහස් කරන්නේ අවම වශයෙන් එකක් "Fizz"හෝ "Buzz"පර්යන්තයට ලියා ඇති බවයි), එසේ නොවේ නම්, iපර්යන්තයට ලිවීම . මෙම $Xවිචල්ය - සහ ඒ නිසා, පර්යන්තය සිට ගැඹුරු inseparability මෙම වර්ග කිරීම - රෝගී පළමු පන්තියේ ලක්ෂණයකි. අයියෝ.


17

මොළය, බයිට් 206

++>+++++>>>>>++++++++++[>+>>+>>+>+<<<[++++<-<]<,<,-<-<++<++++[<++>++++++>]++>>]>
[+[[<<]<[>>]+++<[<.<.<..[>]]<<-[>>>[,>>[<]>[--.++<<]>]]+++++<[+[-----.++++<<]>>+
..<-[>]]<[->>,>+>>>->->.>]<<]<[>+<<<,<->>>+]<]

ආකෘතිකරණය:

++>+++++>>>>>
++++++++++[>+>>+>>+>+<<<[++++<-<]<,<,-<-<++<++++[<++>++++++>]++>>]
>
[
  +
  [
    [<<]
    <[>>]
    +++<
    [
      Fizz
      <.<.<..
      [>]
    ]
    <<-
    [
      >>>
      [
        ,>>[<]
        >[--.++<<]
        >
      ]
    ]
    +++++<
    [
      Buzz
      +[-----.++++<<]
      >>+..
      <-
      [>]
    ]
    <[->>,>+>>>->->.>]
    <<
  ]
  <[>+< <<,<->>>+]
  <
]

එය මාර්ගගතව උත්සාහ කරන්න

මතක පිරිසැලසුම

0 a 122 105 70 b f 0 t d1 s d2 c d 10 0

එහිදී f3 සයිකල්, bබයිසිකල් 5, d1, අය ඉලක්කම් වන d2දස ඉලක්කම් වන අතර, sදස ඉලක්කම්, මුද්රණය කිරීමට ද යන්න සඳහා ධජය ඇත d10 බයිසිකල්, cසඳහා පිටපතක් ද ඉඩ d, t0 හෝ පරණ වූ දත්ත හෝ නැති සඳහා ධජය සත්ය බව අවකාශය වැඩ -විශ්වාසයෙන් -3, සහ aBuzz 20 වතාවක් මුද්‍රණය කිරීමෙන් පසුව දර්ශකය ඕෆ්සෙට් කිරීමෙන් වැඩසටහන් අවසන් කිරීම තීරණය කරයි.


16

සී, බයිට් 85 යි

i;main(){for(;i++<=99;printf("%s%s%.d\n",i%3?"":"Fizz",i%5?"":"Buzz",(i%3&&i%5)*i));}

-2 මිරිකීමට ස්තූතියි.


මෙහි සම්පාදනය කිරීමට උත්සාහ කරන නමුත් gccනූල් තුළ ඇති නව රේඛාව \ n ලෙස හඳුනා නොගනී. එය මට සම්පාදක දෝෂයක් ලබා දෙයි. මට කිසියම් පරාමිතියක් සම්පාදකයා වෙත යැවිය යුතුද? BTW, ඔබට <=ඔබගේ පෝස්ට් එක මග හැරුණි (මම බයිට් 88 ක් ගණනය කළේ <= ... එබැවින් එය නැතිවී ඇතැයි සිතමි).
වෙන්ඩෙල්බ්සිල්වා

1
අපොයි. අනතුරු ඇඟවීමේ දෝෂය මඟ හැරුණි. අක්ෂර 2 ක් එකතු කරයි.
AShelly

ගෝලීය විචල්‍යයන් ශුන්‍යයට ආරම්භ කර ඇත, ඒ වෙනුවට main(i)උත්සාහ කරන්න i;main(). එවිට ඔබට ලූපයේ i--ආරම්භයේදීම ඉවත් කළ හැකිය for(). ඔබට රේඛීය විවේකයක් ද අවශ්‍ය නොවේ. එමඟින් බයිට් ගණන 85 දක්වා අඩු කළ යුතුය.
r3mainer

2
ඔබට යූබී ලබා ගැනීමට අවශ්‍ය ආකාරය අනුව, ඔබට බයිට් 73, 74 හෝ 75 ක් කළ හැකිය. මෙන්න මගේ බයිට් 74 පිළිතුර .
ලින්

1
OMG මම පැය 3 ක් ගත කළේ මේ කාරණය එක් බයිට් එකක් කුඩා කර ගැනීමටයි. හියර් යූ ගෝ. වෙනුවට (i%3&&i%5)*iසමග i%3*i%5?i:0මම නිදාගන්න යනවා
ඇල්බට් Renshaw

16

සී ජෑම්, බයිට් 35 යි

100{)_[Z5]f%:!"FizzBuzz"4/.*s\e|N}/

එය සමඟ අමුත්තන් උත්සාහ කරන්න CJam පරිවර්තකය .

එය ක්‍රියාත්මක වන ආකාරය

100{)_[Z5]f%:!"FizzBuzz"4/.*s\e|N}/
100{                             }/  For each integer I between 0 and 99:
    )_                                 Increment I and push a copy.
      [Z5]                             Push [3 5].
          f%                           Map % to push [(I+1)%3 (I+1)%5].
            :!                         Apply logical NOT to each remainder.
              "FizzBuzz"4/             Push ["Fizz" "Buzz"].
                          .*           Vectorized string repetition.
                            s\         Flatten the result and swap it with I+1.
                              e|       Logical OR; if `s' pushed an empty string,
                                       replace it with I+1.
                                N      Push a linefeed.

3
වඩාත් සරල විසඳුම:100{):I3%!"Fizz"*I5%!"Buzz"*+Ie|N}/
SE EVIL

16

ජෙලි , බයිට් 24 20

³µ3,5ḍTị“¡Ṭ4“Ụp»ȯµ€G

එය මාර්ගගතව උත්සාහ කරන්න!

එය ක්‍රියාත්මක වන ආකාරය

³µ3,5ḍTị“¡Ṭ4“Ụp»ȯµ€G  Main link. No input.

³                     Yield 100.
 µ                    Begin a new, monadic chain.
                 µ€   Apply the preceding chain to all integers n in [1, ..., 100].
  3,5ḍ                Test n for divisibility by 3 and 5.
      T               Get all truthy indices.
                      This yields [1] (mult. of 3, not 5), [2] (mult. of 5, not 3),
                      [1, 2] (mult. of 15) or [].
        “¡Ṭ4“Ụp»      Yield ['Fizz', 'Buzz'] by indexing in a dictionary.
       ị              Retrieve the strings at the corr. indices.
                ȯ     Logical OR hook; replace an empty list with n.
                   G  Grid; join the list, separating by linefeeds.

නැවතත් කිසිවෙකු ගොල්ෆ් නොකළ ඩෙනිස් (HQ9 + විලාසිතාවේ පිළිතුර හැර)
noɥʇʎԀʎzɐɹƆ

15

සීරීම්, බයිට් 203 185

මෙම මෙටා පෝස්ට් එකකට ගොල්ෆ් කළ පෙළ නිරූපණයෙන් බයිට් ගණන් කරනු ලැබේ . සීරීම එතරම් අභ්‍යවකාශ කාර්යක්ෂම නොවේ.

sayසීරීමට ඇති ආසන්නතම දෙය නම්: ස්ප්‍රයිට් එය පවසන ඕනෑම දෙයක් අඩංගු කථන බුබුලක් පෙන්වයි. ප්රායෝගිකව, wait n secsමෙම ප්රතිදානය සැබවින්ම කියවීම සඳහා වාරණයක් අවශ්ය වනු ඇත, නමුත් මෙම අභියෝගයේ අරමුණු සඳහා මෙම කේතය අවශ්යතා සපුරාලයි.


y =(අවස්ථා දෙකේදීම) පසු ඔබට අංක අස්ථානගත වී ඇත
බීටා ක්ෂය වීම

EtBetaDecay සමාවෙන්න? මම අනුගමනය කරන්නේ නැහැ.
තිමෝතිම්

පුනරාවර්තන ලූපය තුළ, එහි set y to ...වටිනාකමක් නොමැත
බීටා ක්ෂය

1
Et බීටා ඩෙකේ එය හිස් නූලයි. :) ඔබ රූපය මත ක්ලික් කළහොත් ඔබට එය ක්‍රියාවෙන් නැරඹිය හැකිය!
තිමෝතිම්

1
කදිම එකක්. මම මීට පෙර සීරීම් විසඳුමක් දැක නැත. :)
HyperNeutrino

14

සී, බයිට් 74 යි

main(i){for(;i<101;puts(i++%5?"":"Buzz"))printf(i%3?i%5?"%d":0:"Fizz",i);}

ඒ වෙනුවට ඇති 0තර්කය මාළු සහිත ය, නමුත් මම එය උත්සාහ කරන බොහෝ වේදිකාවල වැඩ කරන බව පෙනේ. segfaults ඔබ එකම දේ උත්සාහ කළත්. එය නොමැතිව ඔබට බයිට් 75 ක් ලැබේ.printf""puts

අරාජික ගොල්ෆ් ක්‍රීඩාව සඳහා බයිට් 73 ක විසඳුම් ඇති අතර , එකක් අන්තර්ජාලයේ නිවැරදි ස්ථානවල කැණීම් කරන බව මට පෙනී ගිය නමුත් ඒවා වේදිකා විශේෂිත හැසිරීම් මත රඳා පවතී. (ඔබ අනුමාන කළ පරිදි, එය යම් ආකාරයක ස්වරූපයකි puts("Buzz"±...).)


ආග්ස් නඩුව සඳහා i = 1 ලබා ගැනීම සතුටක් (argc = 1). එය ලක්ෂණයකි: ධාවනය කිරීමෙන් ඔබට ඕනෑම ස්ථානයකින් අනුක්‍රමය ආරම්භ කළ හැකිය ./fizzbuzz $(seq 40): පී
පීටර් කෝඩ්ස්

14

සී #, 128 126 125 124 බයිට්

class A{static void Main(){for(var i=0;i++<100;)System.Console.Write("{0:#}{1:;;Fizz}{2:;;Buzz}\n",i%3*i%5>0?i:0,i%3,i%5);}}

බොයිලර් ප්ලේට් කේතය නොමැතිව බයිට් 89 ක්.

C # හි කොන්දේසිගත හැඩතල ගැන්වීම භාවිතයෙන් සිදු කරන ලදි .

කොටස් දෙකකින් ; , ඒවායේ තත්වයේ අගය ශුන්‍ය නම් Fizz හෝ Buzz මුද්‍රණය කෙරේ.


UbRubberDuck, imTimwi සහ iRiokmij ට ස්තූතිවන්ත වෙමින් බයිට් 4 ක් ඉතිරි කර ඇත.


Writeනව රේඛාව කෙලින්ම නූලට ඇමතීම හා එකතු කිරීම කෙටි වනු ඇත , නේද?
රබර් ඩක්

i%3*i%5>0?i:0වෙනුවට ලිවීමට එක් බයිට් කෙටි වේ i%3*i%5==0?0:i.
ටිම්වි

forභාවිතයෙන් ඔබට ප්‍රකාශයේ තවත් බයිටයක් සුරැකිය හැකියfor(var i=0;i++<100;)
නජ්කින්

1
C # 6.0 වෙතින් String Interpolation$"{(i%3*i%5>0?i:0):#}...\n"
උත්තේජනය කිරීමෙන්

1
අද දින බයිට් 121 ක් සමඟ කළ හැකිය -class A{static void Main(){for(var i=0;i<100;)System.Console.Write($"{(++i%3*i%5<1?0:i):#}{i%3:;;Fizz}{i%5:;;Buzz}\n");}}
ජෙරී කන්ගස්නෙමී

14

ආර්නෝල්ඩ් සී, බයිට් 842

IT'S SHOWTIME
HEY CHRISTMAS TREE a
YOU SET US UP 100
HEY CHRISTMAS TREE b
YOU SET US UP 0
HEY CHRISTMAS TREE r
YOU SET US UP 0
STICK AROUND a
GET TO THE CHOPPER b
HERE IS MY INVITATION 101
GET DOWN a
ENOUGH TALK
GET TO THE CHOPPER r
HERE IS MY INVITATION b
I LET HIM GO 15
ENOUGH TALK
BECAUSE I'M GOING TO SAY PLEASE r
GET TO THE CHOPPER r
HERE IS MY INVITATION b
I LET HIM GO 3
ENOUGH TALK
BECAUSE I'M GOING TO SAY PLEASE r
GET TO THE CHOPPER r
HERE IS MY INVITATION b
I LET HIM GO 5
ENOUGH TALK
BECAUSE I'M GOING TO SAY PLEASE r
TALK TO THE HAND b
BULLSHIT
TALK TO THE HAND "Buzz"
YOU HAVE NO RESPECT FOR LOGIC
BULLSHIT
TALK TO THE HAND "Fizz"
YOU HAVE NO RESPECT FOR LOGIC
BULLSHIT
TALK TO THE HAND "FizzBuzz"
YOU HAVE NO RESPECT FOR LOGIC
GET TO THE CHOPPER a
HERE IS MY INVITATION a
GET DOWN 1
ENOUGH TALK
CHILL
YOU HAVE BEEN TERMINATED

මුලින්ම ගොල්ෆ් ක්‍රීඩා කිරීමට උත්සාහ කරන්න, මම සිතන්නේ මෙය ලැබෙන තරමටම නරක බවයි (භාෂාව සහ ගොල්ෆ් ක්‍රීඩාව).


1
YOU HAVE NO RESPECT FOR LOGIClol, මෙය විශිෂ්ට භාෂාවක්;)
ETHproductions

1
හහාහා !!! ඔබ එය ක්‍රමයක් බවට පත් කළ යුතුව තිබුනි, නරක බයිට්කවුන්ට්, වඩා හොඳ වාක්‍ය ඛණ්ඩ;).
මැජික් ඔක්ටපස් උර්න්

14

ක්ලෝජුර්, 113 106 101 100 91 බයිට්

මගේ පළමු ගොල්ෆ්!

(dotimes[i 100](println(str({2'Fizz}(mod i 3))({4'Buzz}(mod i 5)({2""}(mod i 3)(inc i))))))

Ungolfed:

(dotimes [i 100] ; account for off-by-one later
  (println (str ({2 'Fizz} ; str converts symbols to strings
                 (mod i 3))
                ({4 'Buzz} ; 4 instead of 0 because of off-by-one
                 (mod i 5)
                 ({2 ""} ; shortest way to write when-not
                  (mod i 3)
                  (inc i))))))

1
ජාවා ද්‍රාවණයේprintln ඇති ආකාරයටම හැසිරවීමෙන් ඔබට අක්ෂර 5 ක් ඉවත් කළ හැකිය , උදා. (doall(map #(let[t(=(mod % 3)0)](println(str(if t"Fizz""")(if(=(mod % 5)0)"Buzz"(if t""%)))))(range 1 101)))
resueman

1
ස්තූතියි! එය සැබවින්ම 7 ක් බවට පත්විය, මන්ද (if t"Fizz""")එය සරල කළ හැකිය (if t"Fizz"). :)
සෑම් එස්ටෙප්

+1 නියම මොඩියුලෝ උපක්‍රමය, මුලදී මම ඔබට එකින් එක දෝෂ තිබුණත්.
coredump

13

පවර්ෂෙල්, 78 68 61 54 බයිට්

1..100|%{(($t="Fizz"*!($_%3)+"Buzz"*!($_%5)),$_)[!$t]}

සංස්කරණය කරන්න: ෆියර්සම් වලට ස්තූතියි බයිට් 10 ක් ඉතිරි කර ඇත

සංස්කරණය 2: ෆියර්සම්ගේ උපක්‍රමය සමඟ, මට තවදුරටත් කේත-වාරණ මාලාවක් ලෙස සැකසීමට අවශ්‍ය නොවන බව අවබෝධ විය

Edit3: ඩන්කෝ ඩර්බික්ට ස්තූතියි තවත් බයිට් 7 ක් ඉතිරි කළේය

රොසෙටා කේත පිළිතුරට සමාන ආත්මයක් ඇත නමුත් ගොල්ෆ් ක්‍රීඩාව තරමක් දුරට පහත බැස ඇත.

පැහැදිලි කිරීම

1..100|%{...} 1 සිට 100 දක්වා එකතුවක් සාදන්න, ඉන්පසු එම එකතුවෙහි එක් එක් වස්තුව සඳහා කරන්න

(...,$_)මූලද්රව්ය දෙකක නව එකතුවක් සාදන්න: 0) $t=...විචල්යය නූලකට $tසමාන කරන්න; 1) $_අපගේ වත්මන්-ලූපයේ අංකය

"Fizz"*!($_%3)අපගේ වත්මන් අංකය ගන්න, එය 3 කින් වෙනස් කරන්න, ඉන්පසු ප්‍රති not ලය නොවේ. එයින් "Fizz" ගුණනය කර එය නූලට එක් කරන්න (සහ 5 ට සමාන). පවර්ෂෙල් ඕනෑම ශුන්‍ය නොවන අංකයක් ලෙස සලකයි$TRUE , එබැවින් NOT 0 වේ, එයින් අදහස් වන්නේ අපගේ වත්මන්-සංඛ්‍යා 3 න් ගුණ කළහොත් පමණක් “Fizz” නූලට එකතු වන බවයි.

[!$t]අපි දැන් නිර්මාණය කළ එකතුවට දර්ශක, නූලෙහි වටිනාකම මත පදනම්ව $t- හිස් නොවන, මුද්‍රණය කරන්න, නැතිනම් අපගේ වත්මන් අංකය මුද්‍රණය කරන්න


විකල්පයක් ලෙස, බයිට් 54 ක් ද වේ

1..100|%{'Fizz'*!($_%3)+'Buzz'*!($_%5)-replace'^$',$_}

TesselatingHeckler ට ස්තූතියි

සංකල්පයට සමානව, මෙය අපගේ වත්මන් අංකය සමඟ -replaceහිස් නූලක් මාරු කිරීම සඳහා පේළිගත කිරීමේ ක්‍රියාකරු සහ සාමාන්‍ය ප්‍රකාශනයක් භාවිතා කරයි ^$. නූල හිස් නොවේ නම්, එය මාරු නොවේ.


විකල්පයක් ලෙස, බයිට් 54 ක් ද වේ

1..100|%{($_,('Fizz'*!($_%3)+'Buzz'*!($_%5))|sort)[1]}

මෙය ඉහත ලූප ව්‍යුහයම වේ, නමුත් එය ඇතුළත යුගලය (n, string) වර්ග කරයි, සහ හිස් නූලක් අංකයකට පෙර වර්ග කරයි, නමුත් FizzBuzz string සංඛ්‍යාවක් අංකයකට පසුව වර්ග කරයි. ඉන්පසු එය දෙවන වර්ග කිරීමේ ප්‍රති .ලය සුචිගත කරයි.


අනෙක් අතට, පවර්ෂෙල් කවදා හෝ ||සී # හි මෙන් ක්‍රියාකරු ක්‍රියාත්මක කළේ නම් , අපට සමාන යමක් සහිත බයිට් 43 ක් දක්වා පහත බැසීමට ඉඩ තිබේ 1..100|%{"Fizz"*!($_%3)+"Buzz"*!($_%5)||$_}... සැක සහිතය, මන්දයත් |පවර්ෂෙල් හි එතරම් වැදගත් විශේෂ ක්‍රියාකරුවෙකු වන නමුත් මට සිහින දැක ගත හැකිය ...
AdmBorkBork

1
ආකාරය පිළිබඳ 1..100|%{'Fizz'*!($_%3)+'Buzz'*!($_%5)-replace'^$',$_}54 ක් සඳහා?
ටෙසෙලාටින්හෙක්ලර්

ඔබ විස්ථාපනය කල හැකි if($t){$t}else{$_}වගේ දෙයක් සමග($t,$_)[!$t]
Danko Durbić

1
... ඔබ ලබා ගන්න නිසා 1..100|%{(($t="Fizz"*!($_%3)+"Buzz"*!($_%5)),$_)[!$t]}ද @ TessellatingHeckler යෝජනාව වැනි 54 වන
Danko Durbić

EssTessellatingHeckler PowerShell නම්යශීලී නොවේ නම් කිසිවක් නැත.
AdmBorkBork

13

ජාවාස්ක්‍රිප්ට්, බයිට් 62 යි

for(i=0;++i<101;console.log(i%5?f||i:f+'Buzz'))f=i%3?'':'Fizz'

මම හිතන්නේ මම දැන් කෙටිම ජාවාස්ක්‍රිප්ට් විසඳුම මෙයයි.


වාව්, වාව්! නමුත් අනෙක් සියලුම JS පිළිතුරු භාවිතා කරයි console.log; පේළියක උත්පතන පෙට්ටි 100 ක් මත "හරි" එබීමට වඩා එය අඩු කරදරයකි. කරුණාකර මෙය වෙනස් කළ හැකිද? එය බයිට් 62 ක් පමණක් වනු ඇත, තවමත් මට වඩා තුනක් හොඳයි.
ETHproductions

මම දැනටමත් මගේම පෝස්ට් 5 ක් සංස්කරණය කර ඇති අතර තවදුරටත් සංස්කරණය කළ නොහැකි බැවින් මට හෙට එසේ කිරීමට සිදුවේ ...
මාමා ෆන් රෝල්

2
සංස්කරණය කිරීමට සීමාවක් ඇති බව මම
නොදනිමි

13

මොළය , බයිට් 411 350 277 258

සංස්කරණයන්:

  • "Fizz Buzz" හි අගයන් ලෙස ගබඩා කිරීමෙන් බයිට් -61 "BuziF" "BuziG" සහ අංක මුද්‍රණ අංශය නැවත සිදු කිරීමෙන්.

  • -71 බයිට්, මොඩියුලෝ මුද්‍රණ අංශය නැවත සිදු කිරීමෙන්, ලූප් කවුන්ටරය සහ සංඛ්‍යා කවුන්ටරය බෙදීමෙන් සහ නව රේඛා කොටුව මෝඩ් අගය ලෙස නැවත භාවිතා කිරීමෙන් වෙනත් දේ

  • කිසිදු ෆිස්බස් අංකයක 0s නොමැති බව වටහා ගැනීමෙන් බයිට් -19. පැහැදිලි කිරීමක් ද එකතු කරන ලදී

+[-[>+<<]>-]>--[>+>++>++>++++++>+>>>++++++[<<<]>-]<+++++[>+>+>->>->++>>>-->>>++[<<<]>>>-]>[>]+++>>[>+<<<-[<]<[>+++>+<<-.+<.<..[<]<]>>-[<<]>[.>.>..>>>>+[<]+++++<]>[>]>>[[->+>-[>+>>]>[+[-<+>]>+>>]<<<<<<]>[-<+>]>,>[>]<[>-[<+>-----]<---.,<]++++++++++>]<.<<<<,>-]

එය මාර්ගගතව උත්සාහ කරන්න!

අංකය 5 හෝ 3 න් බෙදිය හැකිදැයි පරීක්ෂා කරනවා වෙනුවට, සංඛ්‍යා මොඩියුලය පිළිබඳව සොයා බැලීමට මට කවුන්ටර දෙකක් තිබුණි, එක් එක් අංක සඳහා ඒවා අඩු කර ඒවා 0 ට ළඟා වූ විට අනුරූප වචනය මුද්‍රණය කරන්න.

එය ක්‍රියාත්මක වන ආකාරය:

+[-[>+<<]>-]>--  Generate the number 61
[>+>++>++>++++++>+>>>++++++[<<<]>-] Set the tape to multiples of 61
TAPE: 0 0' 61  122 122 110 61  0 0 110
           "=" "z" "z" "n" "="
<+++++[>+>+>->>->++>>>-->>>++[<<<]>>>-]>[>]+++>> Modify values by multiples of 5
TAPE: 0' 5 66  117 122 105 71  3 0 100' 0 0 10
           "B" "u" "z" "i" "G"
Some info:
  5     - Buzz counter
  "Buz" - Buzz printing
  "ziG" - Fizz printing. Modifying the G in the loop is shorter than modifying it outside
  3     - Fizz counter
  0     - This is where the Fizz|Buzz check will be located
  100   - Loop counter
  0     - Number counter. It's not worth it to reuse the loop counter as this.
  0     - Sometimes a zero is just a zero
  10    - Value as a newline and to mod the number by

[ Loop 100 times
  >+<<<  Increment number counter
  -[<]<  Decrement Fizz counter
  [ If Fizz counter is 0
    >+++ Reset the Fizz counter to 3
    >+<< Set the Fizz|Buzz check to true
    -.+<.<.. Print "Fizz"
  [<]<] Sync pointers
  >>-[<<]> Decrement Buzz counter
  [ If Buzz counter is 0
    .>.>.. Print "Buzz"
    >>>>+  Set the Fizz|Buzz check to true
    [<]+++++< Reset the Buzz counter to 5
  ]
  >[>]>> Go to Fizz|Buzz check
  [ If there was no Fizz or Buzz for this number
    TAPE: 3% BuziG 5% 0 Loop Num' 0 10
    [->+>-[>+>>]>[+[-<+>]>+>>]<<<<<<]  Mod the number counter by 10
    TAPE: 3% BuziG 5% 0 Loop 0' Num 10-Num%10 Num%10 Num/10
    >[-<+>] Move Num back in place
    >,>[>]< Reset 10-Num%10
    [ For both Num/10 (if it exists) and Num%10
      >-[<+>-----]<--- Add 48 to the number to turn it into the ASCII equivilent
      .,< Print and remove
    ]
    ++++++++++> Add the 10 back
  ]
  <. Print the newline
  <<<<, Remove Fizz|Buzz check
  >- Decrement Loop counter
]

හොඳයි ජෝ! මම යම් දවසක එය පරාජය කිරීමට උත්සාහ කළ හැකිය :)
වින්ටියර්

12

80386 යන්ත්‍ර කේතය + ඩොස්, බයිට් 75 යි

කේතයේ හෙක්ස්ඩම්ප්:

0D 0A 24 B1 64 33 C0 BA-03 05 BB 00 01 40 50 FE
CE 75 0C 83 EB 04 66 C7-07 42 75 7A 7A B6 05 FE
CA 75 0C 83 EB 04 66 C7-07 46 69 7A 7A B2 03 84
FF 74 0C D4 0A 04 30 4B-88 07 C1 E8 08 75 F4 52
8B D3 B4 09 CD 21 5A 58-E2 C0 C3

ප්‍රභව කේතය (TASM සින්ටැක්ස්):

    .MODEL TINY

    .CODE
    .386
    org 100h

MAIN PROC
    db 13, 10, '$'
    mov cl, 100
    xor ax, ax
    mov dx, 503h

main_loop:
    mov bx, 100h
    inc ax
    push ax

    dec dh
    jnz short buzz_done
    sub bx, 4
    mov dword ptr [bx], 'zzuB'
    mov dh, 5
buzz_done:

    dec dl
    jnz short fizz_done
    sub bx, 4
    mov dword ptr [bx], 'zziF'
    mov dl, 3
fizz_done:

    test bh, bh
    jz short num_done

decimal_loop:
    aam;
    add al, '0'
    dec bx
    mov [bx], al
    shr ax, 8
    jnz decimal_loop

num_done:
    push dx
    mov dx, bx;
    mov ah, 9
    int 21h
    pop dx
    pop ax

    loop main_loop
    ret

MAIN ENDP
    END MAIN

මෙම කේතය 1 සිට 100 දක්වා ගණන් axකරයි, ප්‍රතිදාන පණිවිඩය අවසානයේ සිට ආරම්භය දක්වා ගොඩනංවයි. $කේතයේ ආරම්භයේ දී පණිවිඩයේ අවසානය (නව රේඛාව සහ පණිවිඩයේ ධජය සඳහා ඩොස් භාවිතා කරන චරිතය) දිස්වේ:

db 10, 10, '$'

එය හානිකර උපදෙස් ලෙස ක්‍රියාත්මක වේ ( or ax, 240ah). කේතය අවසන් වීමෙන් පසුව මෙන් මට එය වඩාත් සාම්ප්‍රදායික ස්ථානයක තැබිය හැකිය, නමුත් එය 0x100 ලිපිනයෙහි තිබීම වාසියකි.

කේතය අතිරේක කවුන්ටර 2 ක් ද භාවිතා කරයි:

  • 3 සිට 0 දක්වා ගණන් කිරීම dl
  • 5 සිට 0 දක්වා ගණන් කිරීම dh

කවුන්ටරයක් ​​0 කරා ළඟා වූ විට, එය නූලට Fizzහෝ Buzzප්‍රතිදාන පණිවිඩයේ අවසානයට තල්ලු කරයි . මෙය සිදුවුවහොත්, bxඅඩු වනු ඇත, සහbh ශුන්‍ය වනු ඇත. මෙය දශම ස්වරූපයෙන් ප්‍රතිදානය කිරීම සඳහා කොන්දේසියක් ලෙස භාවිතා කරයි.

සටහන: මම මෙහි 32-බිට් දත්ත භාවිතා කරමි. මෙය පෙර 386 පරිගණකයක ක්‍රියා නොකරනු ඇත.


TASM ඇත්ත වශයෙන්ම NASM වෙතින් ප්‍රතිවිරුද්ධ අනුපිළිවෙලින් බහු-බයිට් අක්ෂර නියතයන් හසුරුවන්නේද ? NASM, ඔබ ලිවීමට mov [mem], 'Fizz'ගබඩා කිරීමට Fizzහා ගැලපෙන වෙනස්වීම්, මතකයේ පිණිස dbමඟ පෙන්වීම්. බලන්න මගේ overcomplicated "කාර්යක්ෂම" YASM උදාහරණයක් FizzBuzz .
පීටර් කෝර්ඩ්ස්

1
එය භාවිතා කිරීමට කිසියම් බයිට් ඉතිරි කරයිද std, එවිට stosb/ stosd? ඔබ වෙනුවට ඇති කියලා test bh,bhසමග cmp di, 100hහෝ දෙයක්. AL හි කවුන්ටරය සුරැකීම / ප්‍රතිස්ථාපනය කිරීම වෙනුවට, ඔබට එය BL හි තබා ගත හැකි අතර ඔබට අවශ්‍ය විටෙක ක්ලෝබර් ඊක්ස් කරන්න. උදා sub bx, 4/ mov dword ptr [bx], 'zzuB'බයිට් 3 + 7 නේද? mov eax, 'zzuB' / stosdබයිට් 6 + 2 වේ (දෙකෙහිම ක්‍රියාකාරී ප්‍රමාණයේ උපසර්ගය). උපදෙස් ප්‍රමාණය විසුරුවා හැරීම සඳහා පිළිතුර ඇතුළත් කර තිබීම සතුටක්.
පීටර් කෝඩ්ස්

1
මෙය හොඳ පිළිතුරකි - දත්ත සඳහා අශෝභන උපදෙස් අනිසි ලෙස භාවිතා කිරීම සහ කිසි විටෙක භාවිතා නොකරන PSP මතක අවකාශය භාවිතා කිරීම. EtPeterCordes මම ඔබේ යෝජනා භාවිතා කරමින් ක්‍රීඩා කළ stosdනමුත් මට කිසිදු ලකුණු අඩු කිරීමක් කිරීමට නොහැකි විය. සිට stosddecrements DIපසුව ඔබට අහිමි කරන්න බෑ sub di, 4පසුව ඔබ DI4 අවසානයේ ලකුණු බයිට්. මට වෙනම පිළිතුරක් ලෙස පළ කිරීම-6 bytes අවසන් කළ තවත් සුළු සුළු වෙනස් කිරීම් කිහිපයක් භාවිතා කිරීමට මට හැකි විය (මට සියලු අදහස් දැක්වීම් වලට ගැලපීමට නොහැකි වූ නිසා පමණි). කුඩෝස්!
640KB

12

ආර්, 88 83 77 71 70 බයිට්

මෙය වැඩිදියුණු කළ හැකි බව මට විශ්වාසයි ... එය loflodel වෙත ගෞරවය විය. තවත් බයිට් කිහිපයක් jnjnnja සහ තවත් එකක් @ J.Doe ගේ යෝජනාවකට ස්තූතිවන්ත විය

x=y=1:100;y[3*x]='Fizz';y[5*x]='Buzz';y[15*x]='FizzBuzz';write(y[x],1)

බළලෙක් උත්තර දෙයි. මූසිකය ඉහළින් ඇත :)
සිල්වියු බර්සියා

2
මට ටිකක් හොඳට x=1:100;i=!x%%3;j=!x%%5;x[i]="Fizz";x[j]="Buzz";x[i&j]="FizzBuzz";cat(x,sep="\n")
පෙනුණා

යෝජනාවට ස්තූතියි. මම එය ක්රියාත්මක writeකරනවාට වඩා catනමුත්
MickyT

2
මෙහි සොරකම! මෙම writeඇමතුම් වෙනුවට හිස් අගයක් ක 1 ගත හැකි නිසා x=y=1:100;y[3*x]='Fizz';y[5*x]='Buzz';y[15*x]='FizzBuzz';write(y[x],1)බයිට් 70 ක් සුළු පටු 1 බයිට ගොල්ෆ් වේ.
ජේ ඩෝ

බයිට් 68 යි . බයිට්කවුන්ට් එකට මුද්‍රණය කළ නොහැකි පසුබිම් තුනක් ඇතුළත් වන අතර එය TIO හි නිවැරදිව ක්‍රියා නොකරයි.
ජේ ඩෝ

12

හස්කල්, බයිට් 84 යි

main=mapM f[1..100]
f n|d<-drop.(*4).mod n=putStrLn$max(show n)$d 3"Fizz"++d 5"Buzz"

හෙන්ක්මාගේ බයිට් 81 ට කිට්ටු වීම , නමුත් තවම එහි නොමැත.

d = drop.(*4).mod nමෙහි යතුර: d 3 "Fizz"වේ drop (n`mod`3 * 4) "Fizz". මෙය 0 වන "Fizz"විට n `mod` 3සහ ""වෙනත් ආකාරයකින් වේ.


ප්‍රතිසංවිධානය එය 82 දක්වා අඩු කරයි, මම හිතන්නේ : (%)=drop.(*4).mod n;main=mapM putStrLn[max(show n)$3%"Fizz"++5%"Buzz"|n<-[0..100]].
සීආර් ඩ්‍රොස්ට්

රැඳී සිටින්න, එවිට nවිෂය පථයට අයත් නොවේ. හ්ම්.
සීආර් ඩ්‍රොස්ට්

ඔව්, එය ක්‍රියා නොකරයි, නමුත් මම විකල්ප 85-බයිට් විසඳුමකට සමාන පෙනුමක් ලබා දී ඇත:main=mapM putStrLn[max(show n)$3%"Fizz"++5%"Buzz"|n<-[0..100],(%)<-[drop.(*4).mod n]]
ලින්

රේඛීය විවේකයක් භාවිතා නොකරන්නේ ඇයි? එය අර්ධ සළකුණක් තරම් කෙටි නමුත් කියවිය නොහැකි තරම්ය.
dfeuer

1
කේත ගොල්ෆ් වෙබ් අඩවියකින් කියවිය හැකි කේතයක් සඳහා වූ ඔබේ ගවේෂණය නැවත සලකා බැලීමට මම යෝජනා කරමි :)
ලින්

11

PHP, බයිට් 54 යි

<?for(;$i++<100;)echo[Fizz][$i%3].[Buzz][$i%5]?:$i,~õ;

V5.5 සිට වලංගු වේ. මෙම õචරිතය 245, යටිකුරු ටිකක් \n.

සුපුරුදු පරිවර්තක සැකසුම් කිසිදු උපකල්පනයකින් තොරව පවතින බැවින් මම උපකල්පනය කරමි. ඔබ අවිනිශ්චිත නම්, ඔබට ඔබේ දේශීය ඉනි අක්‍රීය කළ හැකිය-n දී මෙන් php -n fizzbuzz.php.

ඕනෑම වින්‍යාස ගොනුවක් සමඟ දෝෂ රහිතව ධාවනය වන අනුවාදයක් බයිට් 62 කි :

<?php
for(;$i++<100;)echo@([Fizz][$i%3].[Buzz][$i%5]?:$i),"
";

STFU ක්‍රියාකරු code අනිවාර්යයෙන්ම කේතය දෝෂ රහිත යැයි අදහස් නොකෙරේ.
sitilge


ZKzqai ideone.com/0zRA9e short_open_tag අක්‍රියයි, E_NOTICEක්‍රියාත්මකයි. මේ දෙකම පෙරනිමි සැකසුම් නොවේ.
primo

මම 3v4l.org මත වැරදි රෑනක් අරගෙන යනවා
සදහාද සහය දක්වනු ලැෙබි

odacoder අදාළ මෙටා පෝස්ට් . 3v4l.org ප්‍රයෝජනවත් බව පෙනේ.
ප්‍රීමෝ
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.