challenge 変形Fizz-Buzz問題

どもraynstardです。
どちらにしようか迷いましたが発想の元ネタがUIさんの投稿からなので
こちらに投稿してみます。
--------------
以下の仕様を満たす文字列を
20行出力するプログラムを作成してください。

1. 1行の出力は「<行番号> ':' <メッセージ>」であること。
2. 行番号が 3の倍数であるとき、メッセージは「Fizz」であること
3. 行番号が 5の倍数であるとき、メッセージは「Buzz」であること
4. 行番号が 3の倍数かつ5の倍数であるとき、メッセージは「FizzBuzz」であること
5. 上記に記した条件以外のメッセージについては「hoge」であること
6. 条件分岐する場合、if文のみが使用でき、
   かつ、論理式が成立した場合の処理のみが記述できます。
#アセンブリなどifがなければif以外でもかまわないです。(意味が同じならば)

というわけでこの問題はFizz-Buzz問題をelseなしならどう書く?という問題です。

出力例:
 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

Posted feedbacks - 秀丸マクロ

 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
32
    #i = 1;
    #a[0] =  1; $b[0] = "hoge";
    #a[1] =  3; $b[1] = "Fizz";
    #a[2] =  5; $b[2] = "Buzz";
    #a[3] = 15; $b[3] = "FizzBuzz";
    while( #i <= 20 ) {
        call KetaSoroe #i, 2;
        insert $$return + ":";
        #j = 3;
        while( #j >= 0 ) {
            if( #i % #a[#j] == 0 ) {
                insert $b[#j];
                break;
            }
            #j = #j - 1;
        }
        insert "\n";
        #i = #i + 1;
    }
    endmacro;

KetaSoroe:
    ##i = ##2 - strlen( str( ##1 ) );
    $$result = "";
    if ( ##i >= 0 ) {
        while( ##i > 0 ) {
            $$result = $$result + " ";
            ##i = ##i - 1;
        }
    }
    $$result = $$result + str( ##1 );
    return $$result;

Index

Feed

Other

Link

Pathtraq

loading...