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

回答編集履歴

6

テキスト修正

2019/12/08 13:40

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -96,7 +96,7 @@
96
96
  ### 追記3
97
97
 
98
98
  考え方の違う案をもう一つ挙げます。
99
- 一行に星を5個出力する場合であれば、まず初めに、2つの文字列、`"★☆★☆★"` と `"☆★☆★☆"` とを作っておいて、各行を出力ます。
99
+ 一行に星を5個出力する場合であれば、まず初めに、2つの文字列、`"★☆★☆★"` と `"☆★☆★☆"` とを作っておいて、れらの2つ交互に出力すれば望む結果が得られます。
100
100
  以下、そのサンプルです。
101
101
 
102
102
  - **動作確認用CodePen:** [https://codepen.io/jun68ykt/pen/VwYvNzd?editors=1010](https://codepen.io/jun68ykt/pen/VwYvNzd?editors=1010)

5

テキスト修正

2019/12/08 13:40

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -92,4 +92,16 @@
92
92
 
93
93
  上記で、 `NUM_PER_LINE` を `6` に変えても望ましい結果が得られます。
94
94
 
95
+
96
+ ### 追記3
97
+
98
+ 考え方の違う案をもう一つ挙げます。
99
+ 一行に星を5個出力する場合であれば、まず初めに、2つの文字列、`"★☆★☆★"` と `"☆★☆★☆"` とを作っておいて、それから各行を出力します。
100
+ 以下、そのサンプルです。
101
+
102
+ - **動作確認用CodePen:** [https://codepen.io/jun68ykt/pen/VwYvNzd?editors=1010](https://codepen.io/jun68ykt/pen/VwYvNzd?editors=1010)
103
+
104
+
105
+
106
+
95
107
  参考になれば幸いです。

4

テキスト修正

2019/12/08 10:01

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -72,7 +72,7 @@
72
72
  上記に書いた、
73
73
  - 1行目一番左の星から、最後の行の一番右の星まで、`0` から始まる通し番号を付け、その番号の奇偶で☆と★とを出し分ける。
74
74
 
75
- という考え方だと、一行に含まれる星の数を1個増やして 6 にすると(どの行も同じにな)意図した結果にならなくなります。一行の星の数が任意の個数でも対応できるようにするには、上記のような全ての星の通し番号で判定するのではなく、`i`と `a` を使って、以下のようにします。
75
+ という考え方だと、一行に含まれる星の数を1個増やして 6 にすると(どの行も★始まりになって、)意図した結果にならなくなります。一行の星の数が任意の個数でも対応できるようにするには、上記のような全ての星の通し番号で判定するのではなく、`i`と `a` を使って、以下のようにします。
76
76
  ```javascript
77
77
  const NUM_PER_LINE = 5; // 一行に含まれる星の数
78
78
 

3

テキスト修正

2019/12/08 09:02

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -70,7 +70,7 @@
70
70
  ### 追記2
71
71
 
72
72
  上記に書いた、
73
- - 1行目一番左の星から、最後の行の一番右の星まで、`0` から始まる番号を付け、その番号の奇偶で★とを出し分ける。
73
+ - 1行目一番左の星から、最後の行の一番右の星まで、`0` から始まる通し番号を付け、その番号の奇偶で☆と★とを出し分ける。
74
74
 
75
75
  という考え方だと、一行に含まれる星の数を1個増やして 6 にすると(どの行も同じになり)意図した結果にならなくなります。一行の星の数が任意の個数でも対応できるようにするには、上記のような全ての星の通し番号で判定するのではなく、`i`と `a` を使って、以下のようにします。
76
76
  ```javascript

2

テキスト修正

2019/12/08 09:00

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -67,5 +67,29 @@
67
67
  ```
68
68
  - **動作確認用CodePen:** [https://codepen.io/jun68ykt/pen/PowPLaR?editors=1010](https://codepen.io/jun68ykt/pen/PowPLaR?editors=1010)
69
69
 
70
+ ### 追記2
70
71
 
72
+ 上記に書いた、
73
+ - 1行目一番左の星から、最後の行の一番右の星まで、`0` から始まる番号を付け、その番号の奇偶で★と☆を出し分ける。
74
+
75
+ という考え方だと、一行に含まれる星の数を1個増やして 6 にすると(どの行も同じになり)意図した結果にならなくなります。一行の星の数が任意の個数でも対応できるようにするには、上記のような全ての星の通し番号で判定するのではなく、`i`と `a` を使って、以下のようにします。
76
+ ```javascript
77
+ const NUM_PER_LINE = 5; // 一行に含まれる星の数
78
+
79
+ for(var i = 0; i < 5; i++) {
80
+ for(var a = 0; a < NUM_PER_LINE; a++) {
81
+ if(i % 2 === a % 2) {
82
+ document.write("☆");
83
+ }
84
+ else {
85
+ document.write("★")
86
+ };
87
+ };
88
+ document.write("<br>");
89
+ };
90
+ ```
91
+ - **動作確認用CodePen:** [https://codepen.io/jun68ykt/pen/JjoYVjN?editors=1010](https://codepen.io/jun68ykt/pen/JjoYVjN?editors=1010)
92
+
93
+ 上記で、 `NUM_PER_LINE` を `6` に変えても望ましい結果が得られます。
94
+
71
95
  参考になれば幸いです。

1

テキスト修正

2019/12/08 08:53

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -14,12 +14,12 @@
14
14
 
15
15
  そうすると、 __j__ (0≦ __j__ ≦ 24)番目の星について
16
16
 
17
- - j が奇数ならば ☆
17
+ - __j__ が奇数ならば ☆
18
- - j が偶数ならば ★
18
+ - __j__ が偶数ならば ★
19
19
 
20
20
  を出力すればよいことになります。
21
21
 
22
- j が奇数である if条件は
22
+ __j__ が奇数である if条件は
23
23
  ```javascript
24
24
  if (j % 2 === 1) { // i が奇数の場合
25
25
  ```
@@ -44,6 +44,28 @@
44
44
  };
45
45
  ```
46
46
 
47
- - 動作確認用CodePen: [https://codepen.io/jun68ykt/pen/GRgpeyO?editors=1010](https://codepen.io/jun68ykt/pen/GRgpeyO?editors=1010)
47
+ - **動作確認用CodePen:** [https://codepen.io/jun68ykt/pen/GRgpeyO?editors=1010](https://codepen.io/jun68ykt/pen/GRgpeyO?editors=1010)
48
48
 
49
+
50
+ ### 追記
51
+
52
+ 上記の回答に記載した、
53
+
54
+ - 星に `0`以上`24`以下の番号を付け、その番号の変数を `j` とする。
55
+
56
+ という考え方を使うと以下のようにも書けます。
57
+
58
+ ```javascript
59
+ const NUM_LINES = 5, // 行の数
60
+ NUM_PER_LINE = 5, // 一行に含まれる星の数
61
+ NUM_ALL = NUM_LINES * NUM_PER_LINE; // 全ての星の数
62
+
63
+
64
+ [...Array(NUM_ALL)].forEach((_, j) => {
65
+ document.write(`${j % 2 ? '☆':'★'}${(j+1) % NUM_PER_LINE ? '' : '<br />'}`);
66
+ });
67
+ ```
68
+ - **動作確認用CodePen:** [https://codepen.io/jun68ykt/pen/PowPLaR?editors=1010](https://codepen.io/jun68ykt/pen/PowPLaR?editors=1010)
69
+
70
+
49
71
  参考になれば幸いです。