Hatena::Groupfizzbuzz

mattnの日記

2010-03-23なでしこ&バッチファイル

なでしこ

21:34

1から100まで繰り返す
   もし(それ%3=0)ならば
      "Fizz"を継続表示
   もし(それ%5=0)ならば
      "Buzz"を継続表示
   もし(それ%3!=0 かつ それ%5!=0)ならば
      それを継続表示
   改行を継続表示

バッチファイル

18:17

@echo off
setlocal enabledelayedexpansion
for /l %%i in (1,1,100) do (
  set /a TMP15=%%i%%15
  set /a TMP3=%%i%%3
  set /a TMP5=%%i%%5
  if "!TMP15!"=="0" (echo FizzBuzz) else (if "!TMP3!"=="0" (echo Fizz) else (if "!TMP5!"=="0" (echo Buzz) else (echo %%i)))
)
endlocal

追記

ちょっと修正

2010-03-15C言語

int*b[][2]={{0,"Buzz"},{"Fizz","FizzBuzz"}},*c,n;main(){while(n++-100)(c=b[n%3<1][n%5<1])?puts(c):printf("%d\n",n);}

http://golf.shinh.org/p.rb?FizzBuzz#Cで118位だった。先は遠い。

追記

21:58

int*b[]={0,"Buzz","Fizz","FizzBuzz"},*c,n;main(){while(n++-100)(c=b[(n%3<1)*2+(n%5<1)])?puts(c):printf("%d\n",n);}

114バイト。でも118位... orz

もうちょっとC言語

02:14

int *s[]={"%d\n","Fizz\n","Buzz\n","FizzBuzz\n"},i;main(){while(i++-100)printf(s[(i%3<1)+2*(i%5<1)],i);}

104バイトで102位

まだまだC言語

02:21

*s[]={"%d\n","Fizz\n","Buzz\n","FizzBuzz\n"},i;main(){while(i++-100)printf(s[(i%3<1)+2*(i%5<1)],i);}

100バイトで96位

ちょっと考え方変えないと上位には入れないな。

ねばるよ!C言語

02:26

i=0;main(){while(++i-101)printf(i%15?i%5?i%3?"%d\n":"Fizz\n":"Buzz\n":"FizzBuzz\n",i);}

87バイトで65位

セコいよ!C言語

02:28

i;main(){while(++i-101)printf(i%15?i%5?i%3?"%d\n":"Fizz\n":"Buzz\n":"FizzBuzz\n",i);}

85バイトで60位

セコすぎだろ!C言語

02:33

i;main(){while(++i-101)printf(i%3?i%5?"%d\n":"Buzz\n":i%5?"Fizz\n":"FizzBuzz\n",i);}

84バイトで53位

2010-03-09Luaで

for v=1,100 do print(v%15>0 and(v%3>0 and(v%5>0 and v or"Buzz")or"Fizz")or"FizzBuzz")end

2010-03-04

vimでFizzBuzz

01:55

for v in range(1,100)|echo v%15>0?v%3>0?v%5>0?v :"Buzz":"Fizz":"FizzBuzz"|endfor

追記:もしこし短く出来た

09:38

for v in range(1,100)|echo v%15?v%3?v%5?v :"Buzz":"Fizz":"FizzBuzz"|endfor

追記:ほんとにもしこし短く

09:38

for v in range(1,100)|ec v%15?v%3?v%5?v :"Buzz":"Fizz":"FizzBuzz"|endfo

tyrutyru2010/03/05 07:54三項演算子ってこんな使い方できるんですね...