45 lines
1.1 KiB
Java
45 lines
1.1 KiB
Java
public class SierpinskiTriangle {
|
|
|
|
public static void main(String[] args) {
|
|
System.out.println(getSierpinskiTriangle(4));
|
|
}
|
|
|
|
private static final String getSierpinskiTriangle(int n) {
|
|
if ( n == 0 ) {
|
|
return "*";
|
|
}
|
|
|
|
String s = getSierpinskiTriangle(n-1);
|
|
String [] split = s.split("\n");
|
|
int length = split.length;
|
|
|
|
// Top triangle
|
|
StringBuilder sb = new StringBuilder();
|
|
String top = buildSpace((int)Math.pow(2, n-1));
|
|
for ( int i = 0 ; i < length ;i++ ) {
|
|
sb.append(top);
|
|
sb.append(split[i]);
|
|
sb.append("\n");
|
|
}
|
|
|
|
// Two triangles side by side
|
|
for ( int i = 0 ; i < length ;i++ ) {
|
|
sb.append(split[i]);
|
|
sb.append(buildSpace(length-i));
|
|
sb.append(split[i]);
|
|
sb.append("\n");
|
|
}
|
|
return sb.toString();
|
|
}
|
|
|
|
private static String buildSpace(int n) {
|
|
StringBuilder sb = new StringBuilder();
|
|
while ( n > 0 ) {
|
|
sb.append(" ");
|
|
n--;
|
|
}
|
|
return sb.toString();
|
|
}
|
|
|
|
}
|