回答編集履歴
2
間違い
answer
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
行(c) を 0 始まりとして max=5 とする時、ひし形の上半分(=三角形) c=0~4 は
|
5
5
|
スペース `max-1-c` 個
|
6
|
-
アスタリスク `c*2
|
6
|
+
アスタリスク `c*2+1` 個
|
7
7
|
を表示すれば書くことが出来ます。
|
8
8
|
ひし形の下半分(中央無し)は c=3~0 ならそのまま書けますが、それではループを別にしなければならないため、 c=5~8 を 3~0 に変換するようにします。
|
9
9
|
```
|
@@ -15,7 +15,7 @@
|
|
15
15
|
しかしどうせ同じ処理をするのなら c=9 以上もひし形(の各行)を描けるようにすればループは1つで済みますので、全体のループカウンタを i とした時 `c = i % ひし形の行数` で 9 以上を c=0~8 に変換するようにします。
|
16
16
|
|
17
17
|
max=5の時:
|
18
|
-
|i|c=i%9|c=
|
18
|
+
|i|c=i%9|c>=max → c=(max-1)*2-c|`" "(max-1-c)` + `"*"(c*2+1)`)|
|
19
19
|
|:--:|:--:|:--:|:----|
|
20
20
|
|0|0|0|`____*`|
|
21
21
|
|1|1|1|`___***`|
|
1
表追加
answer
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
ひし形と三角形では無くひし形1つとひし形の上半分(中央含む)とし、コードとしては複数行で構成された図形では無く1行の重なりと考えることもできます。
|
3
3
|
|
4
4
|
行(c) を 0 始まりとして max=5 とする時、ひし形の上半分(=三角形) c=0~4 は
|
5
|
-
スペース `max-c` 個
|
5
|
+
スペース `max-1-c` 個
|
6
6
|
アスタリスク `c*2-1` 個
|
7
7
|
を表示すれば書くことが出来ます。
|
8
8
|
ひし形の下半分(中央無し)は c=3~0 ならそのまま書けますが、それではループを別にしなければならないため、 c=5~8 を 3~0 に変換するようにします。
|
@@ -13,6 +13,25 @@
|
|
13
13
|
```
|
14
14
|
これにより c=0~8 でひし形を1つ描け、また c=0~5 のループも並べれば三角形をもう1つ描けます。
|
15
15
|
しかしどうせ同じ処理をするのなら c=9 以上もひし形(の各行)を描けるようにすればループは1つで済みますので、全体のループカウンタを i とした時 `c = i % ひし形の行数` で 9 以上を c=0~8 に変換するようにします。
|
16
|
+
|
17
|
+
max=5の時:
|
18
|
+
|i|c=i%9|c=5~8→3~0|`" "(max-1-c)` + `"*"(c*2+1)`)|
|
19
|
+
|:--:|:--:|:--:|:----|
|
20
|
+
|0|0|0|`____*`|
|
21
|
+
|1|1|1|`___***`|
|
22
|
+
|2|2|2|`__*****`|
|
23
|
+
|3|3|3|`_*******`|
|
24
|
+
|4|4|4|`*********`|
|
25
|
+
|5|5|**3**|`_*******`|
|
26
|
+
|6|6|**2**|`__*****`|
|
27
|
+
|7|7|**1**|`___***`|
|
28
|
+
|8|8|**0**|`____*`|
|
29
|
+
|9|**0**|0|`____*`|
|
30
|
+
|10|**1**|1|`___***`|
|
31
|
+
|11|**2**|2|`__*****`|
|
32
|
+
|12|**3**|3|`_*******`|
|
33
|
+
|13|**4**|4|`*********`|
|
34
|
+
|
16
35
|
```java
|
17
36
|
public class Main {
|
18
37
|
public static void main(String[] args) throws Exception {
|
@@ -25,7 +44,7 @@
|
|
25
44
|
c = (max-1)*2 - c;
|
26
45
|
}
|
27
46
|
//1行描画
|
28
|
-
for(int j=0; j<max-c; j++) {
|
47
|
+
for(int j=0; j<max-1-c; j++) {
|
29
48
|
System.out.print(" ");
|
30
49
|
}
|
31
50
|
for(int j=0; j<c*2+1; j++) {
|
@@ -37,18 +56,18 @@
|
|
37
56
|
}
|
38
57
|
```
|
39
58
|
```
|
40
|
-
|
59
|
+
*
|
41
|
-
|
60
|
+
***
|
42
|
-
|
61
|
+
*****
|
43
|
-
|
62
|
+
*******
|
44
|
-
|
63
|
+
*********
|
45
|
-
|
64
|
+
*******
|
46
|
-
|
65
|
+
*****
|
47
|
-
|
66
|
+
***
|
48
|
-
|
67
|
+
*
|
49
|
-
|
68
|
+
*
|
50
|
-
|
69
|
+
***
|
51
|
-
|
70
|
+
*****
|
52
|
-
|
71
|
+
*******
|
53
|
-
|
72
|
+
*********
|
54
73
|
```
|