難読化されたFizzBu​​zzゴルフ[終了]


50

最短の難読化FizzBu​​zz実装を作成します。

難読化されていると見なされるには、少なくとも次のいずれかを満たす必要があります。

  1. 「Fizz」、「Buzz」、「FizzBu​​zz」のいずれの単語も含まれていません
  2. 数字3、5、または15は含まれません。
  3. 上記のいずれかを誤解を招く方法で使用してください。

要確認:目標は短く従うのが難しいことです。

この質問に影響を与えたコードサンプルは次のとおりです。

public class Default
{
        enum FizzBuzz
        {
            Buzz = 1,
            Fizz,
            FizzBuzz
        }
        public static void Main(string[] args)
        {
            byte[] foo = 
              Convert.FromBase64String("IAmGMEiCIQySYAiDJBjCIAmGMEiCIQySYA==");
            MemoryStream ms = new MemoryStream(foo);
            byte[] myByte = new byte[1];
            do
            {
                FizzBuzz fb;
                ms.Read(myByte, 0, 1);
                for (int i = 0; i < 4; i++)
                {
                    fb = (FizzBuzz)(myByte[0] >> (2 * i) 
                         & (int)FizzBuzz.FizzBuzz);
                    Console.Out.WriteLine( (((int)fb > 0) ? "" + fb : "" 
                         + ((ms.Position - 1) * 4 + i + 1)));
                }
            } while (ms.Position < ms.Length);
        }
}

どうやって限界を知っていますか?ソリューションにはms.Lengthがありますが、一部のソリューションではそのような制限はありません...-
ラボ

この質問には客観的な妥当性基準がなく、提出物が規則に従っているかどうかを疑う余地なく決定することができないため、この質問をトピック外として終了することに投票しています。
デニス

回答:


25

GolfScript、75 69 65 60 59文字

100,{)6,{.(&},{1$1$%{;}{4*35+6875*25base{90\-}%}if}%\or}%n*

だから、GolfScript自体は既に難読化されていると思いますか?まあ、ただ仕様に従うために、私はプログラムに「fizz」、「buzz」、3、5、15という数字を含めないことにしました:-)

はい、25、35、90、100、および6875など、5の倍数の数字がいくつかあります。それらは赤いニシンですか?あなたが決める。;-)


2
私は他のすべてのGolfScript提出物について解説を書きましたが、これについては今後何も発表しません。根拠:chat.stackexchange.com/transcript/message/436819#436819 :-D
クリスジェスターヤング

コードに数字3と5が表示されるため、正しくありません!!!
ラボ

@Labo 3つすべてではなく、1つの基準を満たす必要があります。質問をもう一度読んでください。:-)
クリスジェスターヤング

それは冗談ですか ?私はそれに数時間を費やします!私はまだ58文字のPythonコードを持っていることができましたが:p codegolf.stackexchange.com/a/63543/47040-
ラボ

4
@Labo:私は見ることができます数字3と5ではなく数字3,5
デヴィッド・Ongaro

65

Javascript 97文字-数字がまったくない

数字?Javascriptを持っている場合、誰が番号を必要としますか!

a=b=!![]+![],a--,c=b+b;while(++a)e=!(a%(c+c+b)),alert(!(a%(c+b))?e?"FizzBuzz":"Fizz":e?"Buzz":a);

注:シーケンスを警告する無限ループがあります。

ボーナス(666文字)

  • 番号なし
  • 文字なしzforスクリプト全体でのみ使用されています)

_=$=+!![];$__=((_$={})+'')[_+$+_+$+_];__$=((![])+'')[$];_$_=((_$={})+'')
[_+$+_+$+_+$];____=[][$__+((_$={})+'')[$]+(($)/(![])+'')[$]+$__+__$+_$_];$__$=(!![]+"")
[$+$+$]+([][(![]+"")[$+$+$]+(+[]+{})[$+$]+(!![]+"")[$]+(!![]+"")[+[]]]+"")[($+$)+""+
($+$+$)]+(![]+"")[$]+(![]+"")[$+$];$_$_=____()[$-$][$__$]("\"\\"+($)+($+$+$+$+$+$+$)+
($+$)+"\"");_$=(![]+'')[$-$]+([][[]]+[])[$+$+$+$+$]+$_$_+$_$_;$_=(_+{})[$+$+$]+(!![]+'')
[_+$]+$_$_+$_$_;_--,$$=$+$;____()[$-$][$__$]((![]+"")[+[]]+(+[]+{})[$+$]+(!![]+"")[$]+
"(;++_;)$$$=!(_%("+($$+$$+$)+")),____()[+[]][__$+((![])+'')["+($+$)+"]+((!![])+'')["+
($+$+$)+"]+((!![])+'')[+!![]]+_$_](!(_%("+($$+$)+"))?$$$?_$+$_:_$:$$$?$_:_);");

18
本物のプログラマは、2番目のコードと同じようにコーディングします。

9
@ M28:はい。これが仕事のセキュリティを構築する1つの方法です...このコードを保守できる人を見つけるのは簡単なことではありません。
アンディ

1
にはwindow ["eval"]( '"\\' + 1 + 7 + 2 + '"')を使用できzます。
ナブ

3
@stevetherこれは型変換を乱用(例:についてほとんど情報+!![]と同じである1({}+"")[5]同様であるc(exは.:)とアクセス方式に配列記法を乱用window['eval'](同じですeval()。
HoLyVieR

1
私が見たことがあれば、適切な文字数。
captncraig

26

Python-78文字

i=0
while 1:i+=1;print"".join("BzuzzizF"[::2*j]for j in(-1,1)if 1>i%(4+j))or i

1
あなたがそこで何をしたかを理解するために10分かかりました。素敵でツイスト。
-Trufa

23

PostScript、96バイト

難読化されているため、ランダムなゴミのように見えます。

1<~0o0@eOuP7\C+tf6HS7j&H?t`<0f>,/0TnSG01KZ%H9ub#H@9L>I=%,:23M].P!+.F6?RU#I;*;AP#XYnP"5~>cvx exec

使用法: $ gs -q -dNODISPLAY -dNOPROMPT file.ps


5
私は頑固に合格するに違いない
kaoD

23

C ++:886文字

「フィズ」と「バズ」を隠そうとしました。それらを見つけることができますか?

#include <iostream>
#define d(a,b) a b
#define _(a,b) d(#b,#a)
#define b(b) _(b,b)
#define y _(i,f)c
#define x _(u,b)c
#define c b(z)
#define i int
#define p main
#define s char
#define q 810092048
#define h for
#define m 48
#define a ++
#define e ==
#define g 58
#define n 49
#define l <<
#define oe std::cout<<
#define v '\n'

int  p   (i,  s*t     ){i   j  =   q;h   (*(
i    *     )    t     =  m  ;  2     [     t
]?   0    :    1      ??(   t  ]    ?     a
1    [   t    ]       e  g  ?  1   [     t
]    =   48,  ++0     ??(    t]e   g?0   ??(

t]=  n   ,1[  t]=
2    [     t    ]
=m   :    1    :
1    :   a    0
[    t   ??)  ==g

?0[   t  ]   =49   ,1[
t  ]  =  m     :     1
;j=   (  j    /     4
)  |  (  (   j     &
3)l    28)   )oe   (j&

3?j  &   1?j  &2?
y    x     :    y
:x   :    t    )
l    v   ;    }
i    f   =m&  ~g;

5
それは私のブレーンを混乱させます。
Mateen Ulhaq

2
私はあなたが膜を意味すると思います
コルビン・スザント

16

DC(256 255バイト)

ここに、私は(自分で言うならかなり成功しました)文字以外のものを隠そうとしました+-[];:=(そして、それは難読化するのに不可欠で不可能です)。私のマシンで約8482程度になった後にセグメンテーション違反を起こしますが、それは再帰の実装方法に関連するスタックの問題に関係しています。ソリューション自体は正しいです。空白を削除すると255バイト(読みやすくするために含まれます)

Izzzdsa+dsbrsc+dsdd+sozdsezzsm+s
nloddd++splbz++ddaso+dln-dstsqlm
d+-sr[PPPP]ss[IP]su[lpdlqlrlsxlu
x]lm:f[lpdltdI+lm+rlblm+-lsxlux]
ln:f[[]sulm;fxln;f[IP]sux]la:f[;
fsk]sg[lmlgx]sh[lnlgx]si[lalgx]s
j[lc[lcp]sklerldlolclerlblolcler
lalox=hx=ix=jlkxclcz+scllx]dslx

DCの場合は+1。もちろん、難読化されていなくても、特に読みやすいわけではありません
ジェシーミリカン


11

Brainfuck - 626 656

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

1から255になります


1
これにより、実際にBuzzFizzが実行されます。%15に対してFizzBu​​zzを正しく取得しますが、%3と%5を交換します。私はそれを修正しようとするかもしれませんが、今の私の脳は公式F'edされる
captncraig

2
30のコストで修正されました。努力してもっとゴルフをすることもできましたが、私はすでにこれに十分な時間を浪費しました。
captncraig

9
「廃棄物」は強力な言葉です...
Claudiu 14

10

Brainfuck、708文字

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

仕組みの説明は、コードレビューの質問にあります。


9

ハスケル- 147の 142 138文字

fi=zz.bu
bu=zz.(:).(++"zz")
[]#zz=zz;zz#__=zz
zZ%zz=zZ zz$zZ%zz
zz=(([[],[]]++).)
z=zipWith3(((#).).(++))(bu%"Fi")(fi%"Bu")$map show[1..]

コードは必要な長さよりも19文字長くなっていますが、美学には価値があると思いました!3つの「目的」はすべて満たされていると思います。

> take 20 z
["1","2","Fizz","4","Buzz","Fizz","7","8","Fizz","Buzz","11","Fizz","13","14",
"FizzBuzz","16","17","Fizz","19","Buzz"]

こんにちは、私はあなたのコードを理解しようとしますが、実行できません!関数zZ' is applied to six arguments, but its type
a0-

そして、私はそれを実行することはできますが、取得するだけです["1","2","3","4","5","6"...]
アルチョーム

修正済み-適切なバージョンがまだディスクに残っていた...ずっと前にテキストを誤って貼り付けたに違いない!
MtnViewMark

19文字短縮する方法を指定するか、コードを表示してください。私は好奇心am
盛で

2文字の名前の19 occurrancesがありますbufizz、とzZ。これらは1文字の名前に短縮できます。
MtnViewMark 14


6

Javascript、469バイト

これはおそらく私が今までで一番楽しかったでしょう。

z=0;_=(function(){b=0;window[0xA95ED.toString(36)]((function(){yay="&F bottles of beer on the wall, &F bottles of beer. Take one down, pass it around, &z Bottles of beer on the wall.";return atob("eisrOyAg") + "console.log(((function(y){if((y%0xf)==0){return [1,72,84,84,86,78,84,84]}else if(y%0b11==0){return [1,72,84,84]}else if(y%0b101==0){return [86,78,84,84]}else{b=1;return [y]}})(z).map(function(x){return b==0?yay[x]:x}) ).join(''))"})())});setInterval(_,1000);

ここで試してみてください


ダン、私はちょうど目的が短く、従うのが難しいことに
気づいた

+1不足分を逃したかもしれませんが、少なくともあなたはそこに
フィズバズを

4

ルビー-165文字

(1..100).each{|i|i%0xF==0? puts(["46697A7A42757A7A"].pack("H*")):i%(0xD-0xA)==0? puts(["46697A7A"].pack("H*")):i%(0xF-0xA)==0? puts(["42757A7A"].pack("H*")):puts(i)}

これはコードゴルフでの私の最初の試みでした。楽しかった。=)


4

Perl 6(52バイト)

say "Fizz"x$_%%(2+1)~"Buzz"x$_%%(4+1)||$_ for 1..100

ここで説明します。それは私がそのようなタスクで行った最悪のルール乱用です。私はあなたが言っていることを知っています-明白でFizzBuzzここにあります。しかし、ルールを見てみましょう。

難読化されていると見なされるには、次の少なくとも1つを満たす必要があります。

これにより35およびが回避され15ます。したがって、それは有効で本当に短い解決策です。


3

Scala、295文字

object F extends Application{var(f,i,z)=("",('z'/'z'),"FBiuzzzz");while(i<(-'b'+'u'+'z'/'z')*('¥'/'!')){if(i%(-'f'+'i'/('z'/'z'))==0)f+=z.sliding(1,2).mkString;if(i%((-'b'+'u'+'z'/'z')/('f'/'f'+'i'/'i'+'z'/'z'+'z'/'z'))==0)f+=z.drop(1).sliding(1,2).mkString;if(f=="")f+=i;println(f);i+=1;f="";}}

3

C(237 209文字)

#include<stdlib.h>
#define e printf  
a=50358598,b=83916098,c=1862302330;_(m,n){return(m%((c&n)>>24))
||!(e(&n)|e(&c));}main(_);(*__[])(_)={main,exit};main(i){_(i,a)
&_(i,b)&&e("%i",i);e("\n");__[i>=100](++i);}

私は、C規格に必ずこの準拠していないんだけど:)
しかし、それは動作します。GCCを使用するLinuxでは、つまり。


3

Python 3-338

import sys
def fibu():
        (F,I,B,U),i,u,z=sys._getframe(0).f_code.co_name,0xf,0xb,lambda x,y:x%((i//u)+(i^u))==u>>i if y>u else x%(((u<<(u>>2))&i)>>(u>>2))==i>>u
        A,RP = "",chr(ord(U)+((i//u)+(i^u)))*2
        for x in range(100):print(x if not (z(x,u)or z(x,i))else A.join((F+I+RP if z(x,u)else A,B+U+RP if z(x,i)else A)))
fibu()

これは私の最初のゴルフです。最短ではありませんが、かなりugいです!禁止されている数字や文字列リテラルはありません。げっぷ、げっぷ!


3

パイソン-157

from itertools import cycle as r
c=str.replace
[c(c(c(z+y,'x','fix'),'y','bux'),'x','zz').strip() or x for z,y,x in zip(r('  y'),r('    x'),range(1,101))]

最短ではありませんが、読者が純粋に機能的なスタイルと任意の長いカウントへの拡張性に感謝することを願っています。


3

K、155

{m:{x-y*x div y};s:{"c"$(10-!#x)+"i"$x};$[&/0=m[x]'(2+"I"$"c"$49;4+"I"$"c"$49);s"<`rs<pvw";0=m[x;2+"I"$"c"$49];s"<`rs";0=m[x;4+"I"$"c"$49];s"8lrs";x]}'!100

ゴルフはかなりできましたが、もっと難読化したいです。


3

Python 2-54文字

i=0
while 1:i+=1;print'FizzBuzz'[i%~2&4:12&8+i%~4]or i

Python 3-56文字

i=0
while 1:i+=1;print('FizzBuzz'[i%~2&4:12&8+i%~4]or i)

「FizzBu​​zz」を表示したくない場合:

Python 2-58文字

i=0
while 1:i+=1;print' zzuBzziF'[12&8+i%~2:i%~4&4:-1]or i

Python 3-60文字

i=0
while 1:i+=1;print(' zzuBzziF'[12&8+i%~2:i%~4&4:-1]or i)

またはPythonでGolfScriptを破る方法;)


最初の2つi=0は、whileループに入らないことを意味するため、何もしないようです。
xnor

Lol私は自分のテストバージョンを使用しましたi<20
ラボ

しかし、今では動作します:)
ラボ

元のFizzBu​​zzの問題に応じて、100で停止すべきではありませんか?
デビッドオンガロ

2

JavaScript 111文字-キー番号なし

a=b=c=0;while(a++<99)document.write((b>1?(b=0,"Fizz"):(b++,""))+(c==4?(c=0,"Buzz"):(c++,""))+(b*c?a:"")+"<br>")


2

C#-218文字

using System;class D{static void Main(){int l,i,O=1;l++;string c="zz",a="fi",b="bu";l++;l++;i=l;i++;i++;for(;O<101;O++)Console.WriteLine(((O%l)>0&&1>(O%i))?a+c:(1>(O%l)&&(O%i)>0)?b+c:(1>(O%l)&&1>(O%i))?a+c+b+c:O+"");}}

次のような他の数字を導入すると短縮できます:(合計210文字)

using System;class D{static void Main(){int l=1,i,O=1;string c="zz",a="fi",b="bu";l+=2;i=l;i+=2;for(;O<101;O++)Console.WriteLine(((O%l)>0&&1>(O%i))?a+c:(1>(O%l)&&(O%i)>0)?b+c:(1>(O%l)&&1>(O%i))?a+c+b+c:O+"");}}

明らかな単語fizzとbuzzを削除し、もう少し難読化することにしました。2つ目は1つ目よりも短いですが、追加で発生していることに関しては、より直接的です。


2

これは正確にはゴルフではなく、約120行です。

C ++のメモリ管理で、未定義の動作に対するすべての楽しみの可能性を活用する何かをしたいと思いました。

#include <iostream>
#include <string>

using namespace std;

class Weh;
class HelloWorld;

class Weh
{
public:

    string value1;
    string value2;
    void (*method)(void * obj);

    Weh();

    string getV1();

    static void doNothing(void * obj);
};

class HelloWorld
{
public:
    static const int FOO = 1;
    static const int BAR = 2;
    static const int BAZ = 4;
    static const int WUG = 8;

    string hello;
    string world;
    void (*doHello)(HelloWorld * obj);

    HelloWorld();

    void * operator new(size_t size);

    void tower(int i);
    const char * doTower(int i, int j, int k);

    static void doHe1lo(HelloWorld * obj);
};

Weh::Weh()
{
    method = &doNothing;
}

void Weh::doNothing(void * obj)
{
    string s = ((Weh *) obj)->getV1();
    ((HelloWorld *) obj)->tower(1);
}

string Weh::getV1()
{
    value1[0] += 'h' - 'j' - 32;
    value1[1] += 'k' - 'g';
    value1[2] += 'u' - 'g';
    value1[3] = value1[2];
    value2 = value1 = value1.substr(0, 4);

    value2[0] += 'd' - 'h';
    value2[1] += 'w' - 'k';
    value2[2] = value1[2];
    value2[3] = value1[3];

    return "hello";
}

void * HelloWorld::operator new(size_t size)
{
    return (void *) new Weh;
}

HelloWorld::HelloWorld()
{
    hello = "hello";
    world = "world";
}

void HelloWorld::doHe1lo(HelloWorld * obj)
{
    cout << obj->hello << " " << obj->world << "!" << endl;
}

void HelloWorld::tower(int i)
{
    doTower(0, 0, i);
    tower(i + (FOO | BAR | BAZ | WUG));
}

const char * HelloWorld::doTower(int i, int j, int k)
{
    static const char * NOTHING = "";
    int hello = BAR;
    int world = BAZ;
    int helloworld = FOO | BAR | BAZ | WUG;

    if ((hello & i) && (world & j))
        cout << this->hello << this->world << endl;
    else if (hello & i)
    {
        cout << this->hello << endl;
        cout << doTower(0, j + 1, k + 1);
    }
    else if (world & j)
    {
        cout << this->world << endl;
        cout << doTower(i + 1, 0, k + 1);
    }
    else
    {
        cout << k << endl;
        cout << doTower(i + 1, j + 1, k + 1);
    }

    return NOTHING;
}

int main()
{
    HelloWorld * h = new HelloWorld;
    h->doHello(h);
}

2

ルビー-89文字

puts (0..99).map{|i|srand(1781773465)if(i%15==0);[i+1,"Fizz","Buzz","FizzBuzz"][rand(4)]}

私はこの輝きを称賛することはできませんが、私のお気に入りの難読化された実装なしにこの質問を残すことはできませんでした:)

上記の実装はDavid Bradyによって書かれ、fizzbuzz ruby gem からのものです。ソースコードからの説明は次のとおりです。

Rubyのrandのシード1781773465は、FizzBu​​zzの進行で繰り返される15桁のシーケンスを生成するという事実を使用します。ここでの前提は、予測可能なシーケンスを提供するためにrandを巧妙にだますことです。(興味深いことに、情報サイズを実際に削減することはできません。15桁のシーケンスはビットペアとしてエンコードし、30ビットの数値で格納できます。1781773465は31ビットのストレージを必要とするため、賢い実際にはストレージの効率が少し低下しますが、それはポイントではありません!

ルビー-87文字

puts (0..99).map{|i|srand(46308667)if(i%15==0);["FizzBuzz","Buzz",i+1,"Fizz"][rand(4)]}

短いシードを使用する別のバージョンがありますが、ルックアップテーブルの順序は異なります。ソースコードからの説明は次のとおりです。

最初の実装(89文字)は、0 = int、1 = Fizz、2 = Buzz、3 = FizzBu​​zzの特定の順序に従います。順序が変更されると、より小さなキーを見つけることができる場合があります。24の可能な順列があります。順列が2 * 31の空間全体に均等に分布しており、これが「約半分」の確率で約50%であると仮定すると、まともな自信(たとえば20-50%)が存在すると仮定できます。 1.4e + 9付近のキー(2 * 28 未満)。それはあまり利益にはなりませんが、30ビット未満のスペースで30ビットの情報を「隠す」ためにrandの事前定義されたシーケンスを活用することを示しています。

結果:順列[3,2,0,1]はシード46308667に表示され、26ビットで保存できます。


2
非常に甘いが、文字通りの「フィズ」、「バズ」などそれほど有効でないルールに従って含まれていません
アルネBrasseur

2

Python、1行、376文字

pep8-E501は無視されます。python3でのみ機能します。

print(*((lambda x=x: ''.join(chr(c) for c in (102, 105)) + (2 * chr(122)) + ''.join(chr(c) for c in (98, 117)) + (2 * chr(122)) + '\n' if x % (30 >> 1) == 0 else ''.join(chr(c) for c in (102, 105)) + (2 * chr(122)) + '\n' if x % (6 >> 1) == 0 else ''.join(chr(c) for c in (98, 117)) + (2 * chr(122)) + '\n' if x % (10 >> 1) == 0 else str(x) + '\n')() for x in range(1, 101)))

2

代替ルビー(126文字)

(1..100).map{|i|(x="\xF\3\5\1Rml6ekJ1eno=".unpack('C4m'))[-1]=~/(.*)(B.*)/
[*$~,i].zip(x).map{|o,d|i%d>0||(break $><<o<<?\n)}}

短くてあいまいで、私たちが好きなだけです。3と5は実際にはそこにありますが、整数リテラルとしてではありませんので、まだ重要だと思います。

これは、文字通り 'Fizz'、 'Buzz'、 'FizzBu​​zz'のない最短のRubyバージョンであることに注意してください。


1

Squeak(4.4)Smalltalk 206バイト

|f i zz b u z|z:=''.b:=28r1J8D0LK. 1to:100do:[:o|0<(f:=(i:=(zz:=b\\4)//2*4)+(u:=zz\\2*4))or:[z:=z,o].b:=zz<<28+(b//4).z:=z,((z first:f)replaceFrom:1to:f with:28r1A041FHQIC7EJI>>(4-i*u*2)startingAt:1),'
'].z

または、明示的なメッセージが少なく、同じ文字数の同じアルゴリズム

|l f i zz b u z|z:=#[].b:=36rDEB30W. 1to:100do:[:o|0<(f:=(i:=(zz:=b\\4)//2)+(u:=zz\\2)*4)or:[z:=z,('',o)].b:=zz<<28+(b//4).l:=36r2JUQE92ONA>>(1-u*i*24).1to:f do:[:k|z:=z,{l-((l:=l>>6)-1<<6)}].z:=z,'
'].'',z

Smalltalkに対して行ったことに対して、Alan Kayに謝罪します。
これらのハックのいくつかは、Smalltalk方言間で移植可能であり、一部はSqueak互換性レイヤーを必要とします...

ワークスペースで実行する場合、宣言を省略できることに注意してください| fi zz buz | 14キャラクターを獲得します。

357文字(1文字の変数で315文字)の余裕がある場合、些細な#to:do:ループを避ける方が良いでしょう:

|fizz buzz if f fi zz b u bu z|f:=fizz:=buzz:=0.z:=#[].b:=814090528.if:=[:i|i=0or:[fi:=28.zz:=27<<7+i.u:=26.(fizz:=[zz=0or:[z:=z,{(u:=u//2)\\2+1+(zz+((fi:=fi//2)\\2+2-(zz:=zz//8)*8)*4)}.fizz value]])value]].(buzz:=[(f:=f+1)>100or:[(fi:=(zz:=b\\4)//2*17)+(bu:=zz\\2*40)>0or:[z:=z,('',f)].b:=zz<<28+(b//4).if value:fi;value:bu.z:=z,'
'.buzz value]])value.'',z

1

Haskell 226バイト、レイアウト用の空白を含む;)

z=[fI$ (++)            \ 
(fi zz 1 "Fi" )        \  
(fi zz 2 "Bu" )        \ 
:[show zz]  | zz<-[1..]]
fI (zZ:zz)  | zZ==[]   \
= concat zz | 1==1=zZ  
fi zZ bu zz | zZ%bu=   \
(zz++"zz")  | 1==1=[] 
bu%zz=mod bu (zz*2+1)==0

「実際の」コードは160バイトであり、圧縮できますが、そのときは縮れ音がなくなります。

それを実行します(素晴らしい出力のために):

putStrLn (unwords (take 20 z ))

出力:

1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz 

0

Perl

use MIME::Base64;print map{map{(++$i,'Fizz','Buzz','FizzBuzz')[$_]."\n"}(3&ord,3&ord>>2,3&ord>>4,3&ord>>6)}split//,decode_base64"EAZJMIRBEgxhkARDGCTBEAZJMIRBEgxhkA"

私が2009年に作ったものです。しかし、理解するのはかなり簡単です。

編集:くそー、「フィズ」と「バズ!」を使用します :(私はそれを変えたと思った。


0

C 216バイト

#define t(b) putchar(p+=b);
main(p,v,c){p=70;for(v=c=1;v<=p*2-40&&!(c=0);++v){if(!(v%(p/23))){t(0)t(35)t(17)t(0)++c;}if(!(v%(p/(14+c*9)))){t(-56+!c*52)t(51)t(5)t(0);++c;}if(c){t(-112)p+=60;}else printf("%i\n",v);}}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.