模糊的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,但在某些解决方案中,没有这种限制...
Labo

我投票结束这个问题是离题的,因为它没有客观的有效性标准,因此不可能毫无争议地决定提交的内容是否符合规则。
丹尼斯

Answers:


25

GolfScript,75 69 65 60 59个字符

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

所以,您会认为GolfScript本身已经被混淆了,对吗?好吧,为了遵循规范,我决定让程序不包含“嘶嘶声”,“嗡嗡声”或数字3、5或15。:-)

是的,有些数字是5的倍数,例如25、35、90、100和6875。它们是红色鲱鱼吗?你决定。;-)


2
尽管我已经为其他所有GolfScript提交的内容撰写了评论,但是对于这一方面,都不会发表任何评论。理由:chat.stackexchange.com/transcript/message/436819#436819 :-D
克里斯·杰斯特·杨

数字3和5出现在您的代码中,因此不正确!
Labo 2015年

@Labo仅需要满足一个条件,而不是三个条件。再次阅读问题。:-)
克里斯·杰斯特·杨

是开玩笑吗?我花了几个小时!虽然我仍然设法拥有58个字符的Python代码:p codegolf.stackexchange.com/a/63543/47040
Labo

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
真正的程序员就像第二个程序员一样编写代码。

9
@ M28:是的。这是建立工作安全性的一种方法……因为找到可以维护此代码的人并不是最简单的事情。
安迪(Andy)

1
您可以将window [“ eval”]('“ \\'+ 1 + 7 + 2 +'”')用于z
Nabb 2011年

3
@stevether主要与滥用类型转换(例如:+!![]和相同,1并且({}+"")[5]相同c)和滥用访问方法的数组符号(例如:window['eval'](相同eval()有关。
HolyVieR 2012年

1
如果我看过合适的字符数。
captncraig 2013年

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
我觉得你的意思膜
Korvin Szanto

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

直流+1。当然,即使不被混淆,它也不是特别可读
杰西·米利坎


11

Brainfuck - 626 656

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

从1到255


1
原来这实际上是BuzzFizz。它使FizzBu​​zz的%15正确无误,但它交换了%3和%5。我可能会尝试修复它,但现在我的大脑正式F'ed
captncraig

2
固定为30的成本。本可以花更多的精力来打高尔夫球,但是我已经在此上浪费了很多时间。
captncraig

9
“浪费”是一个很强的词...
Claudiu 2014年

10

Brainfuck,708个字符

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

我的代码审查问题中提供了有关其工作方式的描述


9

的Haskell - 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个字符,但是我认为美观是值得的!我相信所有三个“目标”都得到满足。

> 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-> b0-> c0)-> [a0]-> [b0]-> [c0]'只有三个
RobAu 2013年

而我虽然能够运行它,但只能得到["1","2","3","4","5","6"...]
Artyom

已修复-正确的版本仍在我的磁盘上...很早以前一定已经误粘贴了文本!
MtnViewMark

请指定如何将其缩短19个字符,或显示代码。我很好奇,我也不知道
骄傲的haskeller 2014年

有2个字母的名字19个occurrances: ,bufizzzZ。这些可以缩写为一个字母名称。
MtnViewMark 2014年


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);

在这里尝试


Dang,我刚刚意识到目标是简短又难以遵循...抱歉:P
anOKsquirrel 2015年

+1可能已经错过了急促,但至少你没有嘶嘶声嗡嗡声在那里
MickyT

4

Ruby-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这里。但是,让我们看看规则。

要被视为混淆,它应至少满足以下条件之一:

这避免了3515。因此,这是有效且非常短的解决方案。


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(237209个字符)

#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()

这是我的第一次高尔夫。不是最短的,但是很丑!没有禁止的数字或字符串文字。Firp,打p!


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

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;)


前两个似乎什么也不做,因为这i=0意味着while永远不会进入循环。
xnor

大声笑,我使用了我的测试版本,条件是i<20
Labo 2015年

但现在它有效了:)
Labo

根据原始的FizzBu​​zz问题,它不应该停在100吗?
David Ongaro

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+"");}}

决定删除明显的“嘶嘶声”和“嗡嗡声”,然后进行更多混淆。第二个比第一个短,但是在加法中发生的事情上则更直接一些。


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 rand中的种子1781773465将生成在FizzBu​​zz进程中重复的15位序列的事实。这里的前提是我们要巧妙地诱使兰德交付可预测的序列。(有趣的是,我们实际上并没有减小信息大小。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)。虽然收益不大,但是确实演示了如何利用rand的预定义序列在不到30位的空间中“隐藏” 30位信息。

结果:置换[3,2,0,1]出现在种子46308667中,可以以26位存储。


2
非常甜美,但确实包含文字“ Fizz”,“ Buzz”等,因此根据规则无效
Arne Brasseur 2014年

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

备用Ruby(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实际上在那儿,但不是整数,所以我认为仍然很重要。

请注意,这是最短的Ruby版本,此处没有文字“ Fizz”,“ Buzz”,“ FizzBu​​zz”。


1

吱吱声(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

我向艾伦·凯(Alan Kay)向我的Smalltalk致歉。
这些黑客中的一些可以跨Smalltalk方言移植,有些则需要Squeak兼容层...

请注意,如果您在工作区中执行,则可以省略声明| fi zz buz | 并获得14个字符。

如果我们能负担357个字符(单字母vars为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

佩尔

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);}}
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.