Google Apps Script

3の倍数と3が付く数字のときだけアホになってみた。Google Apps ScriptでFizzBuzz問題

プログラミングのWebページを見ていると、仮の文字列として「Hello! World」「hoge」「FizzBuzz」がよく使われています。
なんとなく「FizzBuzz」を調べてみたら、プログラミングの練習問題として「FizzBuzz問題」があるらしいのです。

「FizzBuzz」とは、順番に数字を言っていき、3の倍数で「Fizz」、5の倍数で「Buzz」、15の倍数で「FizzBuzz」と言う言葉遊びのこと。それをプログラムで出力させるのがFizzBuzz問題です。

せっかくなのでやってみよう、と思ったら、調べたウェブサイトに答えが書いてあるではありませんか。
んー、どうしよう?と、思って閃いたのが「世界のナベアツ」。そう、「3の倍数と3が付く数字のときだけアホになってみた」です。
というわけで、Google Apps Scriptで「FizzBuzz問題・世界のナベアツバージョン」をやってみました。

 

まず、何も考えずにGoogle Apps ScriptでFizzBuzz問題を書いてみた

なんのひねりもないですが、普通に書くとこうなるよ、というコードがこちらです。

function FizzBuzz() {
    let a = '';
    for (let i = 1; i <= 100; i++) {
        if (i % 15 == 0) {
            a = 'Fizz Buzz';
        } else if (i % 3 == 0) {
            a = 'Fizz';
        } else if (i % 5 == 0) {
            a = 'Buzz';
        } else {
            a = i;
        };
        console.log(a);
    }
}
 
// 出力した結果
// 1,2,'Fizz',4,'Buzz','Fizz',7,8,'Fizz','Buzz',11,'Fizz',13,14,'Fizz Buzz',16,17,'Fizz',19,'Buzz','Fizz',22,23,'Fizz','Buzz',26,'Fizz',28,29,'Fizz Buzz',
// 31,32,'Fizz',34,'Buzz','Fizz',37,38,'Fizz','Buzz',41,'Fizz',43,44,'Fizz Buzz',46,47,'Fizz',49,'Buzz','Fizz',52,53,'Fizz','Buzz',56,'Fizz',58,59,'Fizz Buzz',
// 61,62,'Fizz',64,'Buzz','Fizz',67,68,'Fizz','Buzz',71,'Fizz',73,74,'Fizz Buzz',76,77,'Fizz',79,'Buzz','Fizz',82,83,'Fizz','Buzz',86,'Fizz',88,89,'Fizz Buzz',
// 91,92,'Fizz',94,'Buzz','Fizz',97,98,'Fizz','Buzz'

2022年12月6日追記:15の倍数から判定するように修正しました。コメントでのご指摘ありがとうございます。

このFizzBuzz問題、「2分以内」とか「1行で」と制限を設けてやることもあるそうです。
1行で書いた方によると、for文を工夫したり「短絡論理OR演算子」、「三項演算子」を使うと短く書けるとのこと。
初めて知ったキーワードなので、とても勉強になりました。

 

世界のナベアツバージョンを書いてみた

何も調べずに書いたものがこちらです。

function BecomeStupidOnly3(){
    for (let i = 1; i <= 40; i++){
        if(String(i).match('3') > 0 | i%3 == 0){
            console.log(i + "!(アホっぽく)");
        }else{
            console.log(i);
        }
    }
    console.log('オモロー!');
}
 
// 出力した結果
// 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!(アホっぽく),33!(アホっぽく),
// 34!(アホっぽく),35!(アホっぽく),36!(アホっぽく),
// 37!(アホっぽく),38!(アホっぽく),39!(アホっぽく),
// 40,オモロー!

多少の記述ミスに阻まれながらも、10分くらいで完成しました。

 

ナベアツバージョンをWebで調べてみた

やはりブレイクした2007~2008年あたりにチャレンジした方が多く見られました。
3の付く数字の見つけ方として他にあったのは、正規表現を使うとか、数学的に考えるとかでした。
中でも、3の付く数字は「10・100・1000」と順番に割っていき余りが3になる、という見つけ方には目から鱗でした。

 

まとめ

FizzBuzz問題を実際にやってみて、自分もそれなりにやれることが分かって良かった半面、本職の方の凄さを痛感しました。
エディタの見た目は良くなったので、少しずつ知識を蓄えて良いものが書けるようになりたいです。

-Google Apps Script
-, , , , , , , ,