Skip to content

Commit 7211b74

Browse files
catalin-burceaKevinGilmore
authored andcommitted
create triangles with for loops - examples (eugenp#7513)
1 parent 2a9050e commit 7211b74

3 files changed

Lines changed: 155 additions & 0 deletions

File tree

algorithms-miscellaneous-3/pom.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,19 @@
3030
<artifactId>guava</artifactId>
3131
<version>${guava.version}</version>
3232
</dependency>
33+
34+
<dependency>
35+
<groupId>org.apache.commons</groupId>
36+
<artifactId>commons-lang3</artifactId>
37+
<version>3.8.1</version>
38+
</dependency>
39+
40+
<dependency>
41+
<groupId>pl.pragmatists</groupId>
42+
<artifactId>JUnitParams</artifactId>
43+
<version>1.1.0</version>
44+
<scope>test</scope>
45+
</dependency>
3346
</dependencies>
3447

3548
<build>
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package com.baeldung.algorithms.printtriangles;
2+
3+
import org.apache.commons.lang3.StringUtils;
4+
5+
public class PrintTriangleExamples {
6+
7+
public static String printARightAngledTriangle(int N) {
8+
StringBuilder result = new StringBuilder();
9+
for (int r = 1; r <= N; r++) {
10+
for (int j = 1; j <= r; j++) {
11+
result.append("*");
12+
}
13+
result.append(System.lineSeparator());
14+
}
15+
return result.toString();
16+
}
17+
18+
public static String printAnIsoscelesTriangle(int N) {
19+
StringBuilder result = new StringBuilder();
20+
for (int r = 1; r <= N; r++) {
21+
for (int sp = 1; sp <= N - r; sp++) {
22+
result.append(" ");
23+
}
24+
for (int c = 1; c <= (r * 2) - 1; c++) {
25+
result.append("*");
26+
}
27+
result.append(System.lineSeparator());
28+
}
29+
return result.toString();
30+
}
31+
32+
public static String printAnIsoscelesTriangleUsingSubstring(int N) {
33+
StringBuilder result = new StringBuilder();
34+
String helperString = StringUtils.repeat(' ', N - 1) + StringUtils.repeat('*', N * 2 - 1);
35+
36+
for (int r = 0; r < N; r++) {
37+
result.append(helperString.substring(r, N + 2 * r));
38+
result.append(System.lineSeparator());
39+
}
40+
return result.toString();
41+
}
42+
43+
public static void main(String[] args) {
44+
System.out.println(printARightAngledTriangle(5));
45+
System.out.println(printAnIsoscelesTriangle(5));
46+
System.out.println(printAnIsoscelesTriangleUsingSubstring(5));
47+
}
48+
49+
}
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
package com.baeldung.algorithms.printtriangles;
2+
3+
import junitparams.JUnitParamsRunner;
4+
import junitparams.Parameters;
5+
import org.junit.Test;
6+
import org.junit.runner.RunWith;
7+
8+
import static org.junit.Assert.assertEquals;
9+
10+
@RunWith(JUnitParamsRunner.class)
11+
public class PrintTriangleExamplesUnitTest {
12+
13+
private static Object[][] rightAngledTriangles() {
14+
String expected0 = "";
15+
16+
String expected2 = "*" + System.lineSeparator()
17+
+ "**" + System.lineSeparator();
18+
19+
String expected5 = "*" + System.lineSeparator()
20+
+ "**" + System.lineSeparator()
21+
+ "***" + System.lineSeparator()
22+
+ "****" + System.lineSeparator()
23+
+ "*****" + System.lineSeparator();
24+
25+
String expected7 = "*" + System.lineSeparator()
26+
+ "**" + System.lineSeparator()
27+
+ "***" + System.lineSeparator()
28+
+ "****" + System.lineSeparator()
29+
+ "*****" + System.lineSeparator()
30+
+ "******" + System.lineSeparator()
31+
+ "*******" + System.lineSeparator();
32+
33+
return new Object[][] {
34+
{ 0, expected0 },
35+
{ 2, expected2 },
36+
{ 5, expected5 },
37+
{ 7, expected7 }
38+
};
39+
}
40+
41+
@Test
42+
@Parameters(method = "rightAngledTriangles")
43+
public void whenPrintARightAngledTriangleIsCalled_ThenTheCorrectStringIsReturned(int nrOfRows, String expected) {
44+
String actual = PrintTriangleExamples.printARightAngledTriangle(nrOfRows);
45+
46+
assertEquals(expected, actual);
47+
}
48+
49+
private static Object[][] isoscelesTriangles() {
50+
String expected0 = "";
51+
52+
String expected2 = " *" + System.lineSeparator()
53+
+ "***" + System.lineSeparator();
54+
55+
String expected5 = " *" + System.lineSeparator()
56+
+ " ***" + System.lineSeparator()
57+
+ " *****" + System.lineSeparator()
58+
+ " *******" + System.lineSeparator()
59+
+ "*********" + System.lineSeparator();
60+
61+
String expected7 = " *" + System.lineSeparator()
62+
+ " ***" + System.lineSeparator()
63+
+ " *****" + System.lineSeparator()
64+
+ " *******" + System.lineSeparator()
65+
+ " *********" + System.lineSeparator()
66+
+ " ***********" + System.lineSeparator()
67+
+ "*************" + System.lineSeparator();
68+
69+
return new Object[][] {
70+
{ 0, expected0 },
71+
{ 2, expected2 },
72+
{ 5, expected5 },
73+
{ 7, expected7 }
74+
};
75+
}
76+
77+
@Test
78+
@Parameters(method = "isoscelesTriangles")
79+
public void whenPrintAnIsoscelesTriangleIsCalled_ThenTheCorrectStringIsReturned(int nrOfRows, String expected) {
80+
String actual = PrintTriangleExamples.printAnIsoscelesTriangle(nrOfRows);
81+
82+
assertEquals(expected, actual);
83+
}
84+
85+
@Test
86+
@Parameters(method = "isoscelesTriangles")
87+
public void whenPrintAnIsoscelesTriangleUsingSubstringIsCalled_ThenTheCorrectStringIsReturned(int nrOfRows, String expected) {
88+
String actual = PrintTriangleExamples.printAnIsoscelesTriangleUsingSubstring(nrOfRows);
89+
90+
assertEquals(expected, actual);
91+
}
92+
93+
}

0 commit comments

Comments
 (0)