Skip to content

Commit e6a9f9a

Browse files
committed
add diamond with name feature
1 parent 5f83d74 commit e6a9f9a

File tree

2 files changed

+50
-10
lines changed

2 files changed

+50
-10
lines changed

src/main/java/edu/thoughtworks/training/Asterisk.java

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,21 @@ public String printVerticalLine(int numberOfLines) {
2626

2727
public String printRightTriangle(int numberOfLines) {
2828
StringBuilder builder = new StringBuilder();
29-
for (int i = 1; i <= numberOfLines; ++i) builder.append(printHorizontalLine(i)).append(END_OF_LINE);
29+
for (int i = 1; i <= numberOfLines; ++i) {
30+
builder
31+
.append(printHorizontalLine(i))
32+
.append(END_OF_LINE);
33+
}
3034
return builder.toString();
3135
}
3236

3337
public String printIsoscelesTriangle(int numberOfLines) {
38+
int numberOfAsterisks = 2 * numberOfLines - 1;
3439
StringBuilder builder = new StringBuilder();
35-
for (int i = 0; i < numberOfLines; ++i) {
36-
int initialSpaces = numberOfLines - i - 1;
37-
int leftAsterisks = 2 * i + 1;
38-
builder.append(printSpaces(initialSpaces)).append(printHorizontalLine(leftAsterisks)).append(END_OF_LINE);
39-
}
40+
builder
41+
.append(printIsoscelesTriangleWithInitialSpaces(numberOfLines - 1))
42+
.append(printHorizontalLine(numberOfAsterisks))
43+
.append(END_OF_LINE);
4044
return builder.toString();
4145
}
4246

@@ -48,7 +52,9 @@ String printSpaces(int numberOfSpaces) {
4852

4953
public String printDiamond(int n) {
5054
StringBuilder builder = new StringBuilder();
51-
builder.append(printIsoscelesTriangle(n)).append(printInvertedIsoscelesTriangleWithInitialSpaces(n-1));
55+
builder
56+
.append(printIsoscelesTriangle(n))
57+
.append(printInvertedIsoscelesTriangleWithInitialSpaces(n - 1));
5258
return builder.toString();
5359
}
5460

@@ -57,12 +63,33 @@ String printInvertedIsoscelesTriangleWithInitialSpaces(int n) {
5763
for (int i = 0; i < n; ++i) {
5864
int initialSpaces = i+1;
5965
int leftAsterisks = 2*(n-i)-1;
60-
builder.append(printSpaces(initialSpaces)).append(printHorizontalLine(leftAsterisks)).append(END_OF_LINE);
66+
builder
67+
.append(printSpaces(initialSpaces))
68+
.append(printHorizontalLine(leftAsterisks))
69+
.append(END_OF_LINE);
6170
}
6271
return builder.toString();
6372
}
6473

6574
public String printDiamondWithName(int n, String someName) {
66-
return null;
75+
StringBuilder builder = new StringBuilder();
76+
builder
77+
.append(printIsoscelesTriangleWithInitialSpaces(n - 1))
78+
.append(someName).append(END_OF_LINE)
79+
.append(printInvertedIsoscelesTriangleWithInitialSpaces(n - 1));
80+
return builder.toString();
81+
}
82+
83+
String printIsoscelesTriangleWithInitialSpaces(int numberOfLines) {
84+
StringBuilder builder = new StringBuilder();
85+
for (int i = 0; i < numberOfLines; ++i) {
86+
int initialSpaces = numberOfLines - i;
87+
int leftAsterisks = 2 * i + 1;
88+
builder
89+
.append(printSpaces(initialSpaces))
90+
.append(printHorizontalLine(leftAsterisks))
91+
.append(END_OF_LINE);
92+
}
93+
return builder.toString();
6794
}
6895
}

src/test/java/edu/thoughtworks/training/AsteriskShould.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ public class AsteriskShould {
3838
"Some name\n" +
3939
" ***\n" +
4040
" *\n";
41+
private static final String ISOSCELES_TRIANGLE_WITH_SPACES =
42+
" *\n" +
43+
" ***\n" +
44+
" *****\n" +
45+
" *******\n";
4146

4247
private Asterisk asterisk;
4348

@@ -108,8 +113,16 @@ public void printInvertedIsoscelesTriangle() {
108113
@Test
109114
public void printDiamondWithName() {
110115
int n = 3;
111-
assertEquals("Asterisks don't print an inverted isosceles triangle",
116+
assertEquals("Asterisks don't print a diamond with name",
112117
DIAMOND_WITH_NAME,
113118
asterisk.printDiamondWithName(n, "Some name"));
114119
}
120+
121+
@Test
122+
public void printIsoscelesTriangleWithInitialSpaces() {
123+
int n = 4;
124+
assertEquals("Asterisks don't print an isosceles triangle with spaces",
125+
ISOSCELES_TRIANGLE_WITH_SPACES,
126+
asterisk.printIsoscelesTriangleWithInitialSpaces(n));
127+
}
115128
}

0 commit comments

Comments
 (0)