にっき

2007/11/27 23:46:11

FizzBuzz って HogeMoge?


昨日の今日で今度はこ〜んす〜ぷの粉をごはんにかけちゃうなんてありえないにう _(.._;【みかん
やっぱりごはんにはお味噌汁のほうが・・・
っていうか粉す〜ぷがけごはんはふつうに粉っぽいにう(つx;【みかん
そんなことはおいといて☆
今日は『変形 Fizz-Buzz 問題』にちゃれんぢ☆
べ〜すになってるのはぷろぐらむの適正があるかを見るのに使えるってうわさのだけど・・・



077-Fizz_Buzz.lua
function Fizz_Buzz(n)
    local f = [[%]] .. string.len(n) .. [[d : %s]];
    local arr = {
        [[FizzBuzz]],[[hoge]],[[hoge]],[[Fizz]],[[hoge]],
        [[Buzz]],[[Fizz]],[[hoge]],[[hoge]],[[Fizz]],
        [[Buzz]],[[hoge]],[[Fizz]],[[hoge]],[[hoge]]
    }
    
    for i = 1,n,1 do
        print(string.format(f,i,arr[math.mod(i,15) + 1]));
    end
end

Fizz_Buzz(arg[1]);

else どころか if も消えちゃった・・・にう?(´ω`;【みかん
っていうかさすがに1る〜ぷする15個列挙しちゃうのは力技過ぎるから

077-FizzBuzz.lua
function FizzBuzz(n)
    local f = [[%]] .. string.len(n) .. [[d : %s]];
    local arr = {[[hoge]],[[Fizz]],[[Buzz]],[[FizzBuzz]]};
    
    for i = 1,n,1 do
        print(
            string.format(
                f,
                i,
                arr[
                    math.floor(math.floor(i / 3) * 3 / i)
                  + math.floor(math.floor(i / 5) * 5 / i) * 2
                  + 1
                ]
            )
        );
    end
end

FizzBuzz(arg[1]);

bit 演算は今回使わなかったけど true を 1 として扱うのもNGなのですか _(.._;【みかん
おかげでなんだかすてきな計算になってるけど
  math.floor(math.floor(i / 3) * 3 / i)
+ math.floor(math.floor(i / 5) * 5 / i) * 2
+ 1

ってとこでべ〜すは1,3の倍数なら+1,5の倍数なら+2なかんじで1〜4の値に変換して
それを使って arr[1] 〜 arr[4] の中にあるぴったりな文字列に変換してるってことで☆
ここまで来るとどう見ても if で描いたほうが速い・・・よね?(´ω`;【みかん
引数はどっちも n の値を指定するってことで結果は
>lua5.1.exe 077-Fizz_Buzz.lua 20
 1 : hoge
 2 : hoge
 3 : Fizz
 4 : hoge
 5 : Buzz
 6 : Fizz
 7 : hoge
 8 : hoge
 9 : Fizz
10 : Buzz
11 : hoge
12 : Fizz
13 : hoge
14 : hoge
15 : FizzBuzz
16 : hoge
17 : hoge
18 : Fizz
19 : hoge
20 : Buzz

>lua5.1.exe 077-FizzBuzz.lua 20
 1 : hoge
 2 : hoge
 3 : Fizz
 4 : hoge
 5 : Buzz
 6 : Fizz
 7 : hoge
 8 : hoge
 9 : Fizz
10 : Buzz
11 : hoge
12 : Fizz
13 : hoge
14 : hoge
15 : FizzBuzz
16 : hoge
17 : hoge
18 : Fizz
19 : hoge
20 : Buzz

結果は変わっちゃったら困るしにゃぁ・・・ (´ω`;【みかん

ちなみに true を 1 として扱えると
077-FizzBuzz.php
<?php
function FizzBuzz($n)
{
    $f = '%' . strlen($n) . "d : %s\n";
    $arr = array('hoge','Fizz','Buzz','FizzBuzz');
    
    for($i = 1;$i <= $n;$i++)
    {
        printf($f,$i,$arr[($i % 3 == 0) + ($i % 5 == 0) * 2]);
    }
}

FizzBuzz(20);
?>

こんなかんじですっきり?

出力の整形とか not 演算子を使って 0 と判定するのもかっとすると
077-FizzBuzz.js
for(i=1;i<21;i++)alert(i+':'+['hoge','Fizz','Buzz','FizzBuzz'][!(i%3)+!(i%5)*2])

わんらいな〜?(´ω`;【みかん

hoge じゃないでふぉるとの FizzBuzz だと
0077-Fizz_Buzz.js
for(i=1;i<21;i++)alert([i,'Fizz','Buzz','FizzBuzz'][!(i%3)+!(i%5)*2])

こんなかんじかなぁ?
っていうか配列生成してそのまま添字で指定ってどんなにう?(´ω`;【みかん


こめんと

こめんとする?



 
投稿された内容の著作権はこめんとの投稿者に帰属するっぽいです☆
また,現在 IE6 以下で Sleipnir,Lunascape,Donut じゃないゆ〜ざえ〜じぇんとからの描き込みを制限してますです☆
該当しちゃうかたはてきとうにゆ〜ざえ〜じぇんとを偽装しちゃってくださいです(´ω`;【みかん
さぶこんてんつ
前月 2024年 5月 翌月
      1
 
2
 
3
 
4
 
5
 
6
 
7
 
8
 
9
 
10
 
11
 
12
 
13
 
14
 
15
 
16
 
17
 
18
 
19
 
20
 
21
 
22
 
23
 
24
 
25
 
26
 
27
 
28
 
29
 
30
 
31
 
 
             
  • あじ あじ
  • ED ED
  • えでん えでん
  • えれふぃ えれふぃ
  • ぐらぶれ ぐらぶれ
  • etc etc
  • にっき にっき

あわせて読みたい

先頭に戻る
めにう 先頭に戻る