난독 화 된 FizzBuzz 골프 [닫기]


50

가장 짧은 난독 화 된 FizzBuzz 구현을 만듭니다.

난독 처리 된 것으로 간주 되려면 다음 중 하나 이상을 충족해야합니다.

  1. "Fizz", "Buzz"또는 "FizzBuzz"라는 단어가 포함되어 있지 않습니다.
  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

나는이 질문이 객관적인 타당성 기준을 가지고 있지 않아서 제출물이 규칙을 따르는 지 여부를 확실하게 결정할 수 없기 때문에 주제를 논외로 닫으려고 투표하고 있습니다.
Dennis

답변:


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
Chris Jester-Young

숫자 3과 5가 코드에 나타나므로 올바르지 않습니다!
Labo

@Labo 세 가지 기준 중 하나만 만족하면됩니다. 질문을 다시 읽으십시오. :-)
Chris Jester-Young 20

농담입니까? 나는 그것에 몇 시간을 보낸다! 나는 여전히 58 자 길이의 파이썬 코드를 가지고 있었지만 : p codegolf.stackexchange.com/a/63543/47040
Labo

4
@ 라보 : 숫자 3과 5는 볼 수 있지만 숫자 3과 5는 볼 수 없습니다.
David Ongaro

65

자바 스크립트 97 자-숫자 없음

번호 ? 당신이 자바 스크립트를 가질 때 누가 숫자가 필요합니다!

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
에 창 [ "eval"] ( ' "\\'+ 1 + 7 + 2 + '"')을 사용할 수 z있습니다.
Nabb

3
@stevether 주로 abusing 유형 변환 (예 : +!![]은 동일 1({}+"")[5]동일 c) 및 액세스 방법에 대한 배열 표기법을 abusing 하는 것입니다 (예 : window['eval'](동일 eval().
HoLyVieR

1
내가 본 적이 있다면 적절한 문자 수입니다.
captncraig

26

파이썬-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

포스트 스크립트, 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 정도가 된 후에 segfault를 수행하지만 재귀가 구현되는 방식과 관련된 스택 문제와 관련이 있습니다. 솔루션 자체 가 정확합니다. 공백을 제거하면 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



11

브레인 퍽 - 626 (656)

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

1에서 255로 이동


1
이것이 실제로 BuzzFizz를합니다. % 15에 대해 FizzBuzz가 정확하지만 % 3과 % 5를 교환합니다. 나는 그것을 고치려고 노력할지도 모른다. 그러나 지금 나의 두뇌는 공식적으로 F'ed이다
captncraig

2
30의 비용으로 고정. 노력으로 그것을 더 골프 수 있었지만, 나는 이미 이것에 충분한 시간을 낭비했습니다.
captncraig

9
"폐기물"은 강력한 단어입니다.
Claudiu

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 자 더 길지만 미학은 가치가 있다고 생각했습니다! 세 가지 "목표"가 모두 만족한다고 생각합니다.

> 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"...]있습니다.
Artyom

수정 됨-올바른 버전이 여전히 내 디스크에있었습니다. 오래 전에 텍스트를 잘못 붙여 넣었을 것입니다!
MtnViewMark

길이를 19 자로 줄이거 나 코드를 표시하는 방법을 지정하십시오. 나는 호기심이없고 전혀 모른다
자랑스런 헤 켈러

: 2 편지 이름의 19 occurrances있다 bu, fi, zz, 그리고 zZ. 이들은 하나의 문자 이름으로 단축 될 수 있습니다.
MtnViewMark 1


6

자바 스크립트, 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

+1 부족함을 놓쳤을 수도 있지만, 적어도 거기에 피즈 버즈가 없었습니다.
MickyT

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

펄 6 (52 바이트)

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

여기에 설명을하겠습니다. 그런 작업에서 내가 한 최악의 규칙 남용입니다. 나는 당신이 말하는 것을 알고 있습니다-명백 Fizz하고 Buzz여기 있습니다. 그러나 규칙을 살펴 보겠습니다.

난독 처리 된 것으로 간주 되려면 다음 중 하나 이상을 충족해야합니다 .

이것은 피할 수 3, 515. 따라서 유효하고 실제로 짧은 솔루션입니다.


3

스칼라, 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

파이썬 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, Burp!


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

파이썬 2-54 자

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

파이썬 3-56 자

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

'FizzBuzz'를 표시하지 않으려는 경우 :

파이썬 2-58 자

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

파이썬 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

Lol 조건이 인 테스트 버전을 사용했습니다 i<20.
Labo

그러나 지금 그것은 작동합니다 :)
Labo

원래 FizzBuzz 문제에 따라 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의 랜드에있는 시드 1781773465가 FizzBuzz 진행에서 반복되는 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 = FizzBuzz의 특정 순서를 따릅니다. 순서가 변경되면 더 작은 키를 찾을 수 있습니다. 24 개의 가능한 순열이 있습니다. 순열이 2 * 31 공간에 고르게 분포되어 있고이 공간이 "약 절반 정도"일 확률이 약 50 %라고 가정하면 적절한 확신 (20-50 %)이 있다고 가정 할 수 있습니다. 약 1.4e + 9 (2 * 28 이하 )의 키. 큰 이득은 아니지만 30 비트 미만의 공간에서 30 비트의 정보를 "숨기기"위해 랜드의 사전 정의 된 시퀀스를 활용하는 방법을 보여줍니다.

결과 : 순열 [3,2,0,1]이 시드 46308667에 나타나며 26 비트로 저장할 수 있습니다.


2
매우 달콤하지만 문자 그대로 "Fizz", "Buzz"등을 포함하므로 규칙에 따라 유효하지 않습니다.
Arne Brasseur

2

파이썬, 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', 'FizzBuzz'가없는 가장 짧은 Ruby 버전입니다.


1

스 퀴크 (4.4) 스몰 토크 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에게 사과드립니다.
이러한 핵 중 일부는 스몰 토크 방언을 통해 이식 가능하며 일부는 Squeak 호환 레이어가 필요합니다 ...

작업 공간에서 실행하면 선언을 생략 할 수 있습니다. | fi zz buz | 그리고 14 문자를 얻을 수 있습니다.

우리가 357 자 (단일 문자 vars를 가진 315)를 줄 수 있다면 사소한 #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

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 년에 만든 것.하지만 알아 내기는 꽤 쉽다.

편집 : Darn, "Fizz"와 "Buzz!"를 사용합니다. :( 내 생각이 바뀌 었다고 생각했습니다.


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.