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

回答編集履歴

2

追記

2020/10/17 22:20

投稿

退会済みユーザー
answer CHANGED
@@ -1,9 +1,97 @@
1
1
  該当のソースコードの挙動は理解していますか?
2
- ざっと見た感じ、FuzzNumbuzzNum の倍数を「作り出そう」としているのですが、要件として
2
+ ざっと見た感じ、FizzNumBuzzNum の倍数を「作り出そう」としているのですが、要件として
3
3
 
4
- > 1.fizzNumに入力された値の倍数とbuzzNumに入力された値の倍数を小さい順に表示する
4
+ > 1.FizzNumに入力された値の倍数とBuzzNumに入力された値の倍数を小さい順に表示する
5
5
 
6
6
  があるので、この方向性で実現するのであれば、作った数字をすべて配列にでもまとめた後に、ソートしてやる必要があります。(ほかにも双方の倍数を抽出するとかも必要)
7
7
  また分岐条件がズレたことをやっているので、フローを見直してください。
8
8
 
9
- 手っ取り早いのは、順次インクリメントした数字が、FuzzNumbuzzNum の倍数かどうかを確認することですが、私は今の方向性の方が好きなので、頑張ってください。
9
+ 手っ取り早いのは、順次インクリメントした数字が、FizzNumBuzzNum の倍数かどうかを確認することですが、私は今の方向性の方が好きなので、頑張ってください。
10
+
11
+ #追記
12
+ 自己回答として倍数かどうかを検証する方向に変えたコードに落ち着いてしまったようなので、「倍数を作る方向性のコード」を追記しておきます。
13
+ ソートしなくてよいようにインデックスを使用しました。
14
+ 普段 JavaScript を使用しないので、ちょっと自信ないですが。。。
15
+ ```JavaScript
16
+ const num1 = {'str':'Fizz', 'num':5};
17
+ const num2 = {'str':'Buzz', 'num':2};
18
+
19
+ const a = num1.num < num2.num ? num1 : num2 ;
20
+ const b = num1.num < num2.num ? num2 : num1 ;
21
+
22
+ let i = 0;
23
+ let result = [];
24
+
25
+ while (a.num * ++i <= 100) {
26
+ result[a.num * i] = result[a.num * i] ? 'FizzBuzz' : a.str;
27
+ if (b.num * i <= 100) result[b.num * i] = b.str;
28
+ }
29
+
30
+ console.table(result);
31
+ ```
32
+ ```
33
+ ┌─────────┬────────────┐
34
+ │ (index) │ Values │
35
+ ├─────────┼────────────┤
36
+ │ 2 │ 'Buzz' │
37
+ │ 4 │ 'Buzz' │
38
+ │ 5 │ 'Fizz' │
39
+ │ 6 │ 'Buzz' │
40
+ │ 8 │ 'Buzz' │
41
+ │ 10 │ 'FizzBuzz' │
42
+ │ 12 │ 'Buzz' │
43
+ │ 14 │ 'Buzz' │
44
+ │ 15 │ 'Fizz' │
45
+ │ 16 │ 'Buzz' │
46
+ │ 18 │ 'Buzz' │
47
+ │ 20 │ 'FizzBuzz' │
48
+ │ 22 │ 'Buzz' │
49
+ │ 24 │ 'Buzz' │
50
+ │ 25 │ 'Fizz' │
51
+ │ 26 │ 'Buzz' │
52
+ │ 28 │ 'Buzz' │
53
+ │ 30 │ 'FizzBuzz' │
54
+ │ 32 │ 'Buzz' │
55
+ │ 34 │ 'Buzz' │
56
+ │ 35 │ 'Fizz' │
57
+ │ 36 │ 'Buzz' │
58
+ │ 38 │ 'Buzz' │
59
+ │ 40 │ 'FizzBuzz' │
60
+ │ 42 │ 'Buzz' │
61
+ │ 44 │ 'Buzz' │
62
+ │ 45 │ 'Fizz' │
63
+ │ 46 │ 'Buzz' │
64
+ │ 48 │ 'Buzz' │
65
+ │ 50 │ 'FizzBuzz' │
66
+ │ 52 │ 'Buzz' │
67
+ │ 54 │ 'Buzz' │
68
+ │ 55 │ 'Fizz' │
69
+ │ 56 │ 'Buzz' │
70
+ │ 58 │ 'Buzz' │
71
+ │ 60 │ 'FizzBuzz' │
72
+ │ 62 │ 'Buzz' │
73
+ │ 64 │ 'Buzz' │
74
+ │ 65 │ 'Fizz' │
75
+ │ 66 │ 'Buzz' │
76
+ │ 68 │ 'Buzz' │
77
+ │ 70 │ 'FizzBuzz' │
78
+ │ 72 │ 'Buzz' │
79
+ │ 74 │ 'Buzz' │
80
+ │ 75 │ 'Fizz' │
81
+ │ 76 │ 'Buzz' │
82
+ │ 78 │ 'Buzz' │
83
+ │ 80 │ 'FizzBuzz' │
84
+ │ 82 │ 'Buzz' │
85
+ │ 84 │ 'Buzz' │
86
+ │ 85 │ 'Fizz' │
87
+ │ 86 │ 'Buzz' │
88
+ │ 88 │ 'Buzz' │
89
+ │ 90 │ 'FizzBuzz' │
90
+ │ 92 │ 'Buzz' │
91
+ │ 94 │ 'Buzz' │
92
+ │ 95 │ 'Fizz' │
93
+ │ 96 │ 'Buzz' │
94
+ │ 98 │ 'Buzz' │
95
+ │ 100 │ 'FizzBuzz' │
96
+ └─────────┴────────────┘
97
+ ```

1

修正

2020/10/17 22:19

投稿

退会済みユーザー
answer CHANGED
@@ -3,5 +3,7 @@
3
3
 
4
4
  > 1.fizzNumに入力された値の倍数とbuzzNumに入力された値の倍数を小さい順に表示する
5
5
 
6
- があるので、作った数字をすべて配列にでもまとめた後に、ソートしてやる必要があります。
6
+ があるので、この方向性で実現するのであれば、作った数字をすべて配列にでもまとめた後に、ソートしてやる必要があります。(ほかにも双方の倍数を抽出するとかも必要)
7
- また分岐条件がズレたことをやっているので、フローを見直してください。
7
+ また分岐条件がズレたことをやっているので、フローを見直してください。
8
+
9
+ 手っ取り早いのは、順次インクリメントした数字が、FuzzNum と buzzNum の倍数かどうかを確認することですが、私は今の方向性の方が好きなので、頑張ってください。