Golf FizzBuzz Kebingungan [tertutup]

50

Buat implementasi FizzBuzz sesingkat mungkin yang sesingkat mungkin.

Untuk dianggap dikaburkan, itu harus memenuhi setidaknya satu dari yang berikut:

  1. Tidak mengandung kata "Fizz", "Buzz", atau "FizzBuzz"
  2. Tidak mengandung angka 3, 5, atau 15.
  3. Gunakan salah satu di atas dengan cara yang menyesatkan.

Ingat: Tujuannya adalah menjadi singkat dan sulit untuk diikuti.

Contoh kode yang menginspirasi pertanyaan ini adalah sebagai berikut:

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);
        }
}
mootinator
sumber
Bagaimana Anda tahu batasnya? Dalam solusi Anda, Anda memiliki m. Panjang tetapi dalam beberapa solusi tidak ada terikat seperti itu ...
Labo
Saya memberikan suara untuk menutup pertanyaan ini sebagai di luar topik karena tidak memiliki kriteria validitas obyektif, sehingga tidak mungkin untuk memutuskan secara tak terbantahkan apakah pengajuan mengikuti aturan.
Dennis

Jawaban:

25

GolfScript, 75 69 65 60 59 karakter

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

Jadi, Anda akan berpikir GolfScript dengan sendirinya sudah dikaburkan, bukan? Nah, hanya untuk mengikuti spek, saya memutuskan agar program tidak mengandung "fizz", "buzz", atau angka 3, 5, atau 15. :-)

Ya, ada beberapa angka dengan kelipatan 5, seperti 25, 35, 90, 100, dan 6875. Apakah itu ikan haring merah? Kamu putuskan. ;-)

Chris Jester-Young
sumber
2
Meskipun saya sudah menulis komentar untuk semua kiriman GolfScript saya yang lain, tidak ada yang akan datang untuk yang ini. Dasar Pemikiran: chat.stackexchange.com/transcript/message/436819#436819 :-D
Chris Jester-Young
Angka 3 dan 5 muncul di kode Anda, jadi itu tidak benar !!!
Labo
@ Labo Hanya satu kriteria yang perlu dipenuhi, tidak ketiganya. Baca lagi pertanyaannya. :-)
Chris Jester-Young
Apakah ini LELUCON? Saya menghabiskan beberapa jam untuk itu! Meskipun saya masih berhasil memiliki kode Python 58 char panjang: p codegolf.stackexchange.com/a/63543/47040
Labo
4
@ Labo: Saya bisa melihat angka 3 dan 5 tetapi bukan angka 3 dan 5.
David Ongaro
65

Javascript 97 karakter - tidak ada angka sama sekali

Angka? Siapa yang butuh nomor ketika Anda memiliki Javascript!

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

Catatan: Ada loop tak terbatas yang akan memberi tahu Anda urutannya.

Bonus (666 karakter)

  • Tidak ada nomor
  • Tidak ada surat (hanya zfordigunakan dalam keseluruhan skrip)

.

_=$=+!![];$__=((_$={})+'')[_+$+_+$+_];__$=((![])+'')[$];_$_=((_$={})+'')
[_+$+_+$+_+$];____=[][$__+((_$={})+'')[$]+(($)/(![])+'')[$]+$__+__$+_$_];$__$=(!![]+"")
[$+$+$]+([][(![]+"")[$+$+$]+(+[]+{})[$+$]+(!![]+"")[$]+(!![]+"")[+[]]]+"")[($+$)+""+
($+$+$)]+(![]+"")[$]+(![]+"")[$+$];$_$_=____()[$-$][$__$]("\"\\"+($)+($+$+$+$+$+$+$)+
($+$)+"\"");_$=(![]+'')[$-$]+([][[]]+[])[$+$+$+$+$]+$_$_+$_$_;$_=(_+{})[$+$+$]+(!![]+'')
[_+$]+$_$_+$_$_;_--,$$=$+$;____()[$-$][$__$]((![]+"")[+[]]+(+[]+{})[$+$]+(!![]+"")[$]+
"(;++_;)$$$=!(_%("+($$+$$+$)+")),____()[+[]][__$+((![])+'')["+($+$)+"]+((!![])+'')["+
($+$+$)+"]+((!![])+'')[+!![]]+_$_](!(_%("+($$+$)+"))?$$$?_$+$_:_$:$$$?$_:_);");
HoLyVieR
sumber
18
Kode programmer nyata seperti yang kedua.
9
@ M28: Yap. Itu salah satu cara untuk membangun keamanan pekerjaan ... karena menemukan seseorang yang dapat mempertahankan kode ini bukan yang termudah.
Andy
1
Anda dapat menggunakan jendela ["eval"] ('"\\' + 1 + 7 + 2 + '" ") untuk z.
Nabb
3
@stevether Ini sebagian besar tentang penyalahgunaan konversi tipe (mis .: +!![]sama dengan 1dan ({}+"")[5]sama dengan c) dan penyalahgunaan notasi array untuk mengakses metode (mis .: window['eval'](sama eval().
HoLyVieR
1
Jumlah karakter yang sesuai jika saya pernah melihatnya.
captncraig
26

Python - 78 karakter

i=0
while 1:i+=1;print"".join("BzuzzizF"[::2*j]for j in(-1,1)if 1>i%(4+j))or i
gnibbler
sumber
1
Butuh waktu 10 menit untuk memahami apa yang Anda lakukan di sana. Bagus dan bengkok.
Trufa
23

PostScript, 96 byte

Jadi dikaburkan seperti sampah acak.

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

Pemakaian: $ gs -q -dNODISPLAY -dNOPROMPT file.ps

KirarinSnow
sumber
5
Aku bertaruh bahwa melewati diehard .
kaoD
23

C ++: 886 karakter

Saya sudah mencoba menyembunyikan 'desis' dan 'desas-desus'. Bisakah Anda menemukannya?

#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;
Mendesis
sumber
5
Itu membingungkan bran saya.
Mateen Ulhaq
2
Saya pikir maksud Anda adalah membran
Korvin Szanto
16

DC ( 256 255 byte)

Ini dia, saya mencoba (agak berhasil, jika saya bisa mengatakannya sendiri) untuk menyembunyikan apa pun kecuali untuk surat, dan +-[];:=(yang penting dan tidak mungkin dikaburkan). Memang segfault setelah mencapai sekitar 8482 atau lebih pada mesin saya, tapi itu berkaitan dengan masalah tumpukan yang terkait dengan cara rekursi diimplementasikan. Solusinya sendiri sudah benar. 255 byte jika Anda menghapus spasi putih (termasuk untuk kemudahan membaca) Nikmati:

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
Hiato
sumber
+1 untuk dc. Bahkan tanpa gangguan, tentu saja, itu tidak mudah dibaca .
Jesse Millikan
12

Ini agak sulit untuk ditanamkan menggunakan lekukan jadi intinya:

Ruby, 4312 karakter

https://gist.github.com/dzucconi/1f88a6dffa2f145f370f

eval("                                                 

















































                                                                                                                             ".split(/\n/).map(&:size).pack("C*"))
dzuc
sumber
Bagaimana cara kerjanya?
addison
._. Bagaimana hal ini bekerja ...
TuxCrafting
"string program Anda" .unpack ("C *"). map {| x | "" * x} .join ("\ n")
dzuc
11

Brainfuck - 626 656

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

Mulai dari 1 hingga 255

captncraig
sumber
1
Ternyata ini benar-benar melakukan BuzzFizz. FizzBuzz benar untuk% 15, tetapi bertukar% 3 dan% 5. Saya mungkin mencoba memperbaikinya, tetapi untuk saat ini otak saya secara resmi F'ed
captncraig
2
Diperbaiki dengan biaya 30. Bisa bermain golf lebih dengan usaha, tapi saya sudah membuang waktu yang cukup untuk ini.
captncraig
9
"buang" adalah kata yang kuat ...
Claudiu
10

Brainfuck, 708 karakter

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

Deskripsi cara kerjanya tersedia di pertanyaan Tinjauan Kode saya

Simon Forsberg
sumber
9

Haskell - 147 142 138 karakter

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..]

Kode ini 19 karakter lebih panjang dari yang seharusnya, tapi saya pikir estetika itu sepadan! Saya percaya ketiga "tujuan" tersebut dipenuhi.

> take 20 z
["1","2","Fizz","4","Buzz","Fizz","7","8","Fizz","Buzz","11","Fizz","13","14",
"FizzBuzz","16","17","Fizz","19","Buzz"]
MtnViewMark
sumber
Hai, saya mencoba memahami kode Anda, tetapi saya tidak dapat menjalankannya! Fungsi zZ' is applied to six arguments, but its type (a0 -> b0 -> c0) -> [a0] -> [b0] -> [c0] 'hanya memiliki tiga
RobAu
Dan saya, sementara bisa menjalankannya, hanya dapat ["1","2","3","4","5","6"...].
Artyom
Diperbaiki - Versi yang tepat masih ada di disk saya ... pasti sudah salah tempel teks lama!
MtnViewMark
tolong sebutkan bagaimana bisa disingkat menjadi 19 karakter, atau tunjukkan kode saya ingin tahu dan saya tidak tahu
bangga haskeller
Ada 19 occurrances nama 2 huruf: bu, fi, zz, dan zZ. Ini bisa disingkat menjadi satu nama huruf.
MtnViewMark
8

π”Όπ•Šπ•„π•šπ•Ÿ, 33 karakter / 92 byte (tidak kompetitif)

Ρ¨Εƒ(1,αΉ₯)Δ‡β‡€α΅–Ι˜Ζƒα‚–Χ‘Π κΉœβ€‚#Δ“($%3β…‹4,$%5?4:8)β‹Ž$βΈ©

Try it here (Firefox only).

Bahasa ini terlalu OP untuk tantangan sumber terbatas.

Mama Fun Roll
sumber
6

Javascript, 469 byte

Ini mungkin yang paling menyenangkan yang pernah saya miliki.

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

Coba di sini

anOKsquirrel
sumber
Dang, saya baru sadar bahwa tujuannya adalah singkat dan sulit untuk diikuti ... Maaf: P
anOKsquirrel
+1 Mungkin sudah ketinggalan pada kekurangannya, tapi setidaknya Anda tidak memiliki desis desis di sana
MickyT
4

Ruby - 165 karakter

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

Ini adalah upaya pertama saya di kode golf. Saya bersenang-senang. =)

Kemegahan
sumber
4

Perl 6 (52 byte)

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

Biarkan saya memberikan penjelasan di sini. Ini adalah penyalahgunaan aturan terburuk yang pernah saya lakukan dalam tugas seperti itu. Saya tahu apa yang Anda katakan - ada yang jelas Fizzdan di Buzzsini. Tapi mari kita lihat peraturannya.

Untuk dianggap dikaburkan, itu harus memenuhi setidaknya satu dari yang berikut:

Ini menghindari 3, 5dan 15. Oleh karena itu, ini solusi yang valid dan sangat singkat.

Konrad Borowski
sumber
3

Scala, 295 karakter

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="";}}
Gareth
sumber
3

C ( 237 209 karakter)

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

Meskipun saya tidak yakin ini sesuai dengan standar C :) Tapi
itu berhasil. Di Linux menggunakan GCC, yaitu.

marinus
sumber
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()

Ini golf pertama saya. Bukan yang terpendek, tapi itu sangat jelek! Tidak ada angka terlarang atau string literal. Firp, Bersendawa!

LexyStardust
sumber
3

Python - 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))]

Bukan yang terpendek, tapi saya harap pembaca akan menghargai gaya fungsional murni dan ekstensibilitas untuk jumlah panjang yang sewenang-wenang.

Marcin
sumber
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

Saya bisa bermain golf sedikit tapi saya lebih suka itu lebih dikaburkan.

tmartin
sumber
3

Python 2 - 54 karakter

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

Python 3 - 56 karakter

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

Jika Anda tidak ingin 'FizzBuzz' muncul:

Python 2 - 58 karakter

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

Python 3 - 60 karakter

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

Atau cara mengalahkan GolfScript dengan Python;)

Labo
sumber
Dua yang pertama tampaknya melakukan apa-apa, karena i=0cara tersebut whileloop tidak pernah masuk.
xnor
Lol saya menggunakan versi pengujian saya, di mana kondisinya i<20.
Labo
Tapi sekarang berhasil :)
Labo
Tidakkah seharusnya berhenti pada 100 sesuai dengan masalah FizzBuzz asli?
David Ongaro
2

JavaScript 111 karakter - tidak ada nomor kunci

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

aaaaaaaaaaaa
sumber
2

C # - 218 karakter

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

Dapat dipersingkat jika saya memperkenalkan nomor lain seperti: (total 210 karakter)

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

Memutuskan untuk menghapus kata fizz dan buzz jelas dan pergi untuk kebingungan sedikit lebih. Yang kedua lebih pendek dari yang pertama tetapi sedikit lebih langsung pada apa yang terjadi di samping.

jcolebrand
sumber
2

Ini bukan golf, itu sekitar 120 baris.

Saya pikir saya akan melakukan sesuatu yang memanfaatkan semua potensi kesenangan untuk perilaku yang tidak terdefinisi dengan manajemen memori 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);
}
Wug
sumber
2

Ruby - 89 karakter

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

Saya tidak dapat mengambil kredit untuk kecemerlangan ini, tetapi saya tidak dapat meninggalkan pertanyaan ini tanpa implementasi favorit saya yang dikaburkan :)

Implementasi di atas ditulis oleh David Brady dan berasal dari permata ruby fizzbuzz . Berikut ini penjelasan dari kode sumber:

Menggunakan fakta bahwa seed 1781773465 dalam rand Ruby akan menghasilkan urutan 15 digit yang berulang dalam perkembangan FizzBuzz. Premis di sini adalah bahwa kami ingin secara cerdik menipu rand agar memberikan urutan yang dapat diprediksi. (Sangat menarik untuk dicatat bahwa kita tidak benar-benar mendapatkan pengurangan dalam ukuran informasi. Urutan 15-digit dapat dikodekan sebagai pasangan bit dan disimpan dalam jumlah 30-bit. Karena 1781773465 membutuhkan 31 bit penyimpanan, kepintaran kita memiliki sebenarnya menghabiskan sedikit efisiensi penyimpanan. TAPI BUKANLAH TITIKNYA!

Ruby - 87 karakter

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

Berikut adalah versi berbeda yang menggunakan seed yang lebih pendek tetapi tabel pencarian dalam urutan yang berbeda. Berikut ini penjelasan dari kode sumber:

Implementasi pertama (89 karakter) mematuhi urutan spesifik 0 = int, 1 = Fizz, 2 = Buzz, 3 = FizzBuzz. Dimungkinkan untuk menemukan kunci yang lebih kecil jika pemesanan diubah. Ada 24 kemungkinan permutasi. Jika kita mengasumsikan bahwa permutasi didistribusikan secara merata di seluruh ruang 2 * 31, dan sekitar 50% probabilitas bahwa ini adalah "sekitar setengah jalan", maka kita dapat mengasumsikan dengan keyakinan yang layak (katakanlah 20-50%) bahwa ada kunci di suatu tempat sekitar 1,4e + 9 (di bawah 2 * 28). Ini tidak banyak menghasilkan tetapi TIDAK menunjukkan memanfaatkan urutan yang telah ditentukan rand untuk "menyembunyikan" 30 bit informasi dalam waktu kurang dari 30 bit ruang.

Hasil: Permutasi [3,2,0,1] muncul pada seed 46308667, yang dapat disimpan dalam 26 bit.

Jacob Stanley
sumber
2
sangat manis, tetapi memang mengandung literal "Fizz", "Buzz" dll jadi tidak berlaku sesuai aturan
Arne Brasseur
2

Python, 1 baris, 376 karakter

pep8-E501 diabaikan. Hanya berfungsi di 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)))
David Watson
sumber
2

Ruby Alternatif (126 karakter)

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

Pendek dan tidak jelas, betapa kita menyukainya. Angka 3 dan 5 sebenarnya ada di sana tetapi tidak sebagai bilangan bulat jadi saya pikir itu masih diperhitungkan.

Perhatikan bahwa ini adalah versi Ruby terpendek tanpa 'Fizz' literal, 'Buzz', 'FizzBuzz' di sini.

Arne Brasseur
sumber
1

Mencicit (4.4) Smalltalk 206 byte

|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

Atau algoritma yang sama dengan pesan yang kurang eksplisit, jumlah karakter yang sama

|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

Saya meminta maaf kepada Alan Kay atas apa yang saya lakukan pada Smalltalk.
Beberapa peretasan ini bersifat portabel di seluruh dialek Smalltalk, beberapa akan membutuhkan lapisan kompatibilitas ...

Perhatikan bahwa jika Anda mengeksekusi di Workspace, Anda bisa menghilangkan deklarasi | fi zz buz | dan dapatkan 14 karakter.

Jika kita mampu membeli 357 karakter (315 dengan vars huruf tunggal), maka lebih baik untuk menghindari hal-hal sepele #to: do: loop:

|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
alias bagus
sumber
1

Haskell 226 byte, termasuk spasi untuk tata letak;)

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

Kode 'nyata' adalah 160 byte dan dapat dikompresi, tetapi kehilangan fizz-buzz-ness saat itu.

Jalankan (untuk hasil yang bagus):

putStrLn (unwords (take 20 z ))

Keluaran:

1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz 
RobAu
sumber
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"

Yang saya buat tahun 2009. Tapi cukup mudah untuk menemukan jawabannya.

Sunting: Sial, ini menggunakan "Fizz" dan "Buzz!" :( Saya pikir saya mengubahnya. Namun kemudian.

Ry-
sumber
0

C 216 byte

#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);}}
Kaslai
sumber