回答編集履歴

6

テキスト修正

2019/12/08 13:40

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -194,7 +194,7 @@
194
194
 
195
195
  考え方の違う案をもう一つ挙げます。
196
196
 
197
- 一行に星を5個出力する場合であれば、まず初めに、2つの文字列、`"★☆★☆★"` と `"☆★☆★☆"` とを作っておいて、各行を出力ます。
197
+ 一行に星を5個出力する場合であれば、まず初めに、2つの文字列、`"★☆★☆★"` と `"☆★☆★☆"` とを作っておいて、れらの2つ交互に出力すれば望む結果が得られます。
198
198
 
199
199
  以下、そのサンプルです。
200
200
 

5

テキスト修正

2019/12/08 13:40

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -186,4 +186,28 @@
186
186
 
187
187
 
188
188
 
189
+
190
+
191
+ ### 追記3
192
+
193
+
194
+
195
+ 考え方の違う案をもう一つ挙げます。
196
+
197
+ 一行に星を5個出力する場合であれば、まず初めに、2つの文字列、`"★☆★☆★"` と `"☆★☆★☆"` とを作っておいて、それから各行を出力します。
198
+
199
+ 以下、そのサンプルです。
200
+
201
+
202
+
203
+ - **動作確認用CodePen:** [https://codepen.io/jun68ykt/pen/VwYvNzd?editors=1010](https://codepen.io/jun68ykt/pen/VwYvNzd?editors=1010)
204
+
205
+
206
+
207
+
208
+
209
+
210
+
211
+
212
+
189
213
  参考になれば幸いです。

4

テキスト修正

2019/12/08 10:01

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -146,7 +146,7 @@
146
146
 
147
147
 
148
148
 
149
- という考え方だと、一行に含まれる星の数を1個増やして 6 にすると(どの行も同じにな)意図した結果にならなくなります。一行の星の数が任意の個数でも対応できるようにするには、上記のような全ての星の通し番号で判定するのではなく、`i`と `a` を使って、以下のようにします。
149
+ という考え方だと、一行に含まれる星の数を1個増やして 6 にすると(どの行も★始まりになって、)意図した結果にならなくなります。一行の星の数が任意の個数でも対応できるようにするには、上記のような全ての星の通し番号で判定するのではなく、`i`と `a` を使って、以下のようにします。
150
150
 
151
151
  ```javascript
152
152
 

3

テキスト修正

2019/12/08 09:02

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -142,7 +142,7 @@
142
142
 
143
143
  上記に書いた、
144
144
 
145
- - 1行目一番左の星から、最後の行の一番右の星まで、`0` から始まる番号を付け、その番号の奇偶で★とを出し分ける。
145
+ - 1行目一番左の星から、最後の行の一番右の星まで、`0` から始まる通し番号を付け、その番号の奇偶で☆と★とを出し分ける。
146
146
 
147
147
 
148
148
 

2

テキスト修正

2019/12/08 09:00

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -136,6 +136,54 @@
136
136
 
137
137
 
138
138
 
139
+ ### 追記2
140
+
141
+
142
+
143
+ 上記に書いた、
144
+
145
+ - 1行目一番左の星から、最後の行の一番右の星まで、`0` から始まる番号を付け、その番号の奇偶で★と☆を出し分ける。
146
+
147
+
148
+
149
+ という考え方だと、一行に含まれる星の数を1個増やして 6 にすると(どの行も同じになり)意図した結果にならなくなります。一行の星の数が任意の個数でも対応できるようにするには、上記のような全ての星の通し番号で判定するのではなく、`i`と `a` を使って、以下のようにします。
150
+
151
+ ```javascript
152
+
153
+ const NUM_PER_LINE = 5; // 一行に含まれる星の数
154
+
155
+
156
+
157
+ for(var i = 0; i < 5; i++) {
158
+
159
+ for(var a = 0; a < NUM_PER_LINE; a++) {
160
+
161
+ if(i % 2 === a % 2) {
162
+
163
+ document.write("☆");
164
+
165
+ }
166
+
167
+ else {
168
+
169
+ document.write("★")
170
+
171
+ };
172
+
173
+ };
174
+
175
+ document.write("<br>");
176
+
177
+ };
178
+
179
+ ```
180
+
181
+ - **動作確認用CodePen:** [https://codepen.io/jun68ykt/pen/JjoYVjN?editors=1010](https://codepen.io/jun68ykt/pen/JjoYVjN?editors=1010)
182
+
183
+
184
+
185
+ 上記で、 `NUM_PER_LINE` を `6` に変えても望ましい結果が得られます。
186
+
139
187
 
140
188
 
141
189
  参考になれば幸いです。

1

テキスト修正

2019/12/08 08:53

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -30,9 +30,9 @@
30
30
 
31
31
 
32
32
 
33
- - j が奇数ならば ☆
33
+ - __j__ が奇数ならば ☆
34
34
 
35
- - j が偶数ならば ★
35
+ - __j__ が偶数ならば ★
36
36
 
37
37
 
38
38
 
@@ -40,7 +40,7 @@
40
40
 
41
41
 
42
42
 
43
- j が奇数である if条件は
43
+ __j__ が奇数である if条件は
44
44
 
45
45
  ```javascript
46
46
 
@@ -90,7 +90,51 @@
90
90
 
91
91
 
92
92
 
93
- - 動作確認用CodePen: [https://codepen.io/jun68ykt/pen/GRgpeyO?editors=1010](https://codepen.io/jun68ykt/pen/GRgpeyO?editors=1010)
93
+ - **動作確認用CodePen:** [https://codepen.io/jun68ykt/pen/GRgpeyO?editors=1010](https://codepen.io/jun68ykt/pen/GRgpeyO?editors=1010)
94
+
95
+
96
+
97
+
98
+
99
+ ### 追記
100
+
101
+
102
+
103
+ 上記の回答に記載した、
104
+
105
+
106
+
107
+ - 星に `0`以上`24`以下の番号を付け、その番号の変数を `j` とする。
108
+
109
+
110
+
111
+ という考え方を使うと以下のようにも書けます。
112
+
113
+
114
+
115
+ ```javascript
116
+
117
+ const NUM_LINES = 5, // 行の数
118
+
119
+ NUM_PER_LINE = 5, // 一行に含まれる星の数
120
+
121
+ NUM_ALL = NUM_LINES * NUM_PER_LINE; // 全ての星の数
122
+
123
+
124
+
125
+
126
+
127
+ [...Array(NUM_ALL)].forEach((_, j) => {
128
+
129
+ document.write(`${j % 2 ? '☆':'★'}${(j+1) % NUM_PER_LINE ? '' : '<br />'}`);
130
+
131
+ });
132
+
133
+ ```
134
+
135
+ - **動作確認用CodePen:** [https://codepen.io/jun68ykt/pen/PowPLaR?editors=1010](https://codepen.io/jun68ykt/pen/PowPLaR?editors=1010)
136
+
137
+
94
138
 
95
139
 
96
140