質問するログイン新規登録

回答編集履歴

3

加筆

2020/09/17 21:48

投稿

AkitoshiManabe
AkitoshiManabe

スコア5434

answer CHANGED
@@ -33,13 +33,13 @@
33
33
  問題には要件として示されていませんので、「書かないと駄目」ということはありませんが、
34
34
  ベン図を見ても分かるように、**最も多くの条件を有した領域から消去法で if else を書く手法**に過ぎません(重なっている部分を先に処理したほうが、あとで切り分けし直さなくて済むため)。
35
35
 
36
- 別段、以下のように、**文字列の結合処理 or 数値取得に着目した処理**も正答です。
36
+ 別段、以下のように、**文字列の結合処理に着目した処理**も正答です。
37
37
  ```javascrit
38
38
  for(var i = 1; i <= 100; i++ ){
39
39
  var rslt = "";
40
40
  if (i % 3 ===0) rslt = "Fizz";
41
41
  if (i % 5 ===0) rslt += "Buzz"
42
- if (rslt === "") rslt = i;
42
+ if (rslt === "") rslt += i; // その数字の代わりに表示. 数値でなく数字と示されている
43
43
  console.log( rslt );
44
44
  }
45
45
  ```

2

追記

2020/09/17 21:48

投稿

AkitoshiManabe
AkitoshiManabe

スコア5434

answer CHANGED
@@ -31,7 +31,7 @@
31
31
  > 3の倍数「且つ」5の倍数の "&&" は、if文の中で先頭に書かないとダメなのでしょうか?
32
32
 
33
33
  問題には要件として示されていませんので、「書かないと駄目」ということはありませんが、
34
- ベン図を見ても分かるように、**最も多くの条件を有した領域から消去法で if else を書く手法**に過ぎません。
34
+ ベン図を見ても分かるように、**最も多くの条件を有した領域から消去法で if else を書く手法**に過ぎません(重なっている部分を先に処理したほうが、あとで切り分けし直さなくて済むため)
35
35
 
36
36
  別段、以下のように、**文字列の結合処理 or 数値取得に着目した処理**も正答です。
37
37
  ```javascrit

1

追記

2020/09/17 21:33

投稿

AkitoshiManabe
AkitoshiManabe

スコア5434

answer CHANGED
@@ -1,3 +1,54 @@
1
+ 追記)
2
+ FizzBuzz 問題は、様々な処理を訓練するものであり、「1つの回答例だけが正解」というものではありません。
3
+ ただ、問題文から「[ベン図](https://ja.wikipedia.org/wiki/%E3%83%99%E3%83%B3%E5%9B%B3)を想像できる」だけの知識があることが望ましい題材です。
4
+
5
+ 1. 1から100 の数 という矩形のグループ ... **反復処理**(for, while)のブロックで表現
6
+ 2. 3で割り切れる という円(Fizz)のグループ ... if 文などで切り分ける
7
+ 3. 5で割り切れる という円(Buzz)のグループ ... 同上
8
+ 4. 2.3. の重なったグループ ... 同上
9
+
10
+ ご質問(疑問2)で示されるコードは正しく切り分けができていませんので、[if文](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/if...else)を再確認する必要があります。
11
+
12
+ * ``if(条件a) { 処理A }`` .. モシ、「条件aが真」ナラ、「処理A」ヲジッコウ
13
+ * ``else if(条件b) { 処理B }`` .. ソウジャナク、「条件bが真」ナラ、「処理B」ヲジッコウ
14
+ * ``else { 処理C }`` .. ソウジャナイナラ、「処理C」ヲジッコウ(条件aも条件bも共に偽のとき)
15
+
16
+ ```javascrit
17
+ for(var i = 1; i <= 100; i++ ){
18
+ //console.log(i); ... 割り切れるかどうかに関わらず、出力してしまっている
19
+ if(i % 3 ===0 && i % 5===0){
20
+ console.log("FizzBuzz");
21
+ } else if (i % 5 ===0){
22
+ console.log("Buzz");
23
+ } else if (i % 3 ===0) {
24
+ console.log("Fizz");
25
+ } else {
26
+ console.log( i )
27
+ }
28
+ }
29
+ ```
30
+
31
+ > 3の倍数「且つ」5の倍数の "&&" は、if文の中で先頭に書かないとダメなのでしょうか?
32
+
33
+ 問題には要件として示されていませんので、「書かないと駄目」ということはありませんが、
34
+ ベン図を見ても分かるように、**最も多くの条件を有した領域から消去法で if else を書く手法**に過ぎません。
35
+
36
+ 別段、以下のように、**文字列の結合処理 or 数値取得に着目した処理**も正答です。
37
+ ```javascrit
38
+ for(var i = 1; i <= 100; i++ ){
39
+ var rslt = "";
40
+ if (i % 3 ===0) rslt = "Fizz";
41
+ if (i % 5 ===0) rslt += "Buzz"
42
+ if (rslt === "") rslt = i;
43
+ console.log( rslt );
44
+ }
45
+ ```
46
+
47
+ ※柔軟な考え方で様々な処理法がある問題ですので、「他人のコードを読む」、「他人にコードを読ませる」といった訓練に使われます。
48
+ (追記ここまで
49
+
50
+ ----
51
+
1
52
  A. 1
2
53
 
3
54
  [if文](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/if...else)でelse を使っているからです。