【ISSUE】【初学者実践録】Fizzbuzzゲームについて

0

2024年12月23日 22:38

こんにちは!ばーんです。

今回は有名なfizzbuzzゲームをjavascriptでやっていきます。

#はじめに

今回はQiitaをメモ形式で使用してみます。
本当に考えた順序に、何を考えたか?記載しながら書き綴ります。
(僕のレベルはJSとjQueryをprogateでやった程度です^^)

ですので、対象は

・初学者がどんなルートで考えているのか知りたい
・JSはprogate終わったところで正直不安…

という方が対象となっていますのでご理解下さい。

※流石に多少の編集はしますが、基本は書き殴っていくだけです

##目標確認
一般的なルールはこちら

1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。

基本的にどの言語でも表現できそうですが、今回はJSで書いていきます。
ここで、ルールから読み取る必要なものは、
###①1〜100まで表示するプログラム
###②3と5の倍数の場合はそれぞれfizz,buzzと表記させる
###③②より優先させて3かつ5の倍数の時はfizzbuzzを表記させる
ですかね。それでは行ってみましょー!
今回はfizzbuzzでは検索せずにその他の検索で解いていきます。

###①1〜100まで表示するプログラム
はい。これ何か見たことありますね…とりあえずそのまま検索してみます
「JS 1〜100まで表示」と…

あ、for文ね!やった気がする… 参考サイト

img

で、100まで表示なので、100に変える。でえぃっ

だとdocument.writeがよく分からん…表示でいいはずなのでお馴染みのconsole.logに変えると

おし!ただし99までなので、比較演算子か数値変えないと…でえいっ

Screen Shot 2020-01-28 at 22.48.35.png いけましたね!(画面では切れてますが100まで表記されてます)

###②3と5の倍数の場合はfizz,buzzと表記させる
これは、恐らくif文ですね^^これぐらいであれば自分でもわかります(そんな気がする^^)

if文の作り方ってどうだったっけ…「JS if」で検索と… 参考サイト

img

あーこんなんだった。これをいじってまずは3の時を出してみると…

img

あれ。ちょっとまって全部fizzになってるwしかも処理終わってなくない?
あれ?esc押しても消えない。macが唸ってる。ふぁあああって唸ってる

焦る焦る。一旦VS(テキストエディタ)閉じます。心をしずめる。

他の例文を見ると…あー条件式がおかしいのね。演算子の問題か。
MDNを見て、とりあえず動くものを作りたいから…
Screen Shot 2020-01-29 at 17.28.14.png
いけた!あとはこれを3の倍数にしたらいいので。えーっと…「nの倍数」で調べるとなんか数学的なことが出てくる…
違う違う。「nの倍数 JS」で調べると、TOPに良さげなサイトが。

なるほど。3で割り切って0になれば3の倍数ね。確かに。

img

をいけたいけた。あとは5の条件も追加して…(この辺りはエクセルでIFの分岐にIF入れてた経験があったので理解が早かったです)
Screen Shot 2020-01-29 at 17.40.05.png

よし!おk!
※0が表示されてるせいで最初がfizzなので、i=1にここで変更します

###③②より優先させて3かつ5の倍数の時はfizzbuzzを表記させる
これはつまり、
・3かつ5の倍数を求める
・②より優先的に処理させる
が必要で、

####・3かつ5の倍数を求める
→数学やってて良かったぁ…最小公倍数分かればいいので、この場合は「15」でおkですね
ごめんなさい。なんかこれは感覚的に15だなって分かりました。

####・②より優先的に処理させる
→エクセルやってて良かったぁ…この場合最初の条件のチェックで15の倍数か?チェックすればいいので、「5」を追加した時と同じ容量でやればおk!(のはず)

これを組み合わせると…ドンっ!
Screen Shot 2020-01-29 at 17.57.06.png
できた!勝った!第三部(完)!

##「ちょっと待って」
ここでメンターから神の啓示が。要約すると
「動いたものを作れたのはOKなんだけど、改善点がある」
といって作ってくれたコードと比較しながら説明してもらいました…

今のコードだと他人が見た時にどう動くか分かりにくい
fizzbuzzは有名すぎるので分かるけど、業務に落とし込んで考えるとコード量も増えるし
数値が変わった時に応用が効かない
fizzbuzzとして成立しているけど…

なるほどなるほど…
(本当は作ってもらったやつを元に説明したかったんですが、無くしてしまったので…)

というわけで最後に言われた記憶を元に、直していきます!断片的に思い出していくと…

・3とか5が何を示しているのか?
・あとからこの3とか5の数値を変えるのがこの状態だと煩わしい

みたいな感じだったはず…つまり変数(定数)宣言して、分かる名前にして…

こんな感じかな?
Screen Shot 2020-01-29 at 20.24.32.png
こうすれば上のconst部分を修正するだけで、出力や計算数値が変えれるはず。

##答え合わせ
ここで「fizzbuzz JS」で検索します(参考記事)。

あーなるほど。&&でかつを表現するのね。
最大公倍数の出し方調べてて、素因数分解とか連除法しかでてこなくて諦めてました;;

そして、else ifを使うのね…(自分のだとネスト深いし、というかインデント間違えてる気もするし)

img
↑最終的に修正した形です。記事では無駄な処理と書かれていましたが、直感的にはこちらの方が処理を理解されやすいと思っているので、この形で置いています。

##さいごに
いかがでしたでしょうか?
今回は自分のメモ書きがメインだったので、最後まで見て頂いた方はありがとうございましたToT
もしよろしければ感想などを聞かせて頂けると嬉しいです。
それではまた!

###補足
今回はnode.jsを使用しました。自分はたまたまnode.jsを環境構築していたので使用できましたが、初学者の方で「そもそもJSってどこに表記するの?」ってなる方もいらっしゃるかと思います(実際に自分が最初した時なりました)
JS自体はWeb上で動くものなので2つ方法があります。
1、node.jsを入れる 少ししんどいですが、後々を考えるならこちらがおすすめです
2、htmlと紐づけてクロームのデベロッパーツール→consoleで確認する
Screen Shot 2020-01-29 at 20.36.40.png

環境構築で躓いて途方に暮れるのは勿体無いので、最悪2でもいいのかなーとは思います。以上です。
[cv:issue_marketplace_engineer]

0

診断を受けるとあなたの現在の業務委託単価を算出します。今後副業やフリーランスで単価を交渉する際の参考になります。また次の単価レンジに到達するためのヒントも確認できます。