回答編集履歴

3

加筆

2020/09/17 21:48

投稿

AkitoshiManabe
AkitoshiManabe

スコア5432

test CHANGED
@@ -68,7 +68,7 @@
68
68
 
69
69
 
70
70
 
71
- 別段、以下のように、**文字列の結合処理 or 数値取得に着目した処理**も正答です。
71
+ 別段、以下のように、**文字列の結合処理に着目した処理**も正答です。
72
72
 
73
73
  ```javascrit
74
74
 
@@ -80,7 +80,7 @@
80
80
 
81
81
  if (i % 5 ===0) rslt += "Buzz"
82
82
 
83
- if (rslt === "") rslt = i;
83
+ if (rslt === "") rslt += i; // その数字の代わりに表示. 数値でなく数字と示されている
84
84
 
85
85
  console.log( rslt );
86
86
 

2

追記

2020/09/17 21:48

投稿

AkitoshiManabe
AkitoshiManabe

スコア5432

test CHANGED
@@ -64,7 +64,7 @@
64
64
 
65
65
  問題には要件として示されていませんので、「書かないと駄目」ということはありませんが、
66
66
 
67
- ベン図を見ても分かるように、**最も多くの条件を有した領域から消去法で if else を書く手法**に過ぎません。
67
+ ベン図を見ても分かるように、**最も多くの条件を有した領域から消去法で if else を書く手法**に過ぎません(重なっている部分を先に処理したほうが、あとで切り分けし直さなくて済むため)
68
68
 
69
69
 
70
70
 

1

追記

2020/09/17 21:33

投稿

AkitoshiManabe
AkitoshiManabe

スコア5432

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