Programming Basics with Java - Drawing-with-Loops - Diamond
Колеги,
Макар че се сборих със задачата, ще приложа моето решение по-долу, ми се струва че това далеч не е най-доброто решение. Моля за коментари и ако някои има по-добри идеи.
import java.util.Scanner;
public class Diamond {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = Integer.parseInt(scanner.nextLine());
int rows = num;
int leftRight = (num - 1) / 2; //1
int mid = num - 2 * leftRight - 2; //-1
int lines = 0;
if (num % 2 == 0) {
for (int i = 0; i < (num / 2); i++) {
System.out.println(repeatStr("-", ((num - 2) / 2) - i) + "*" + repeatStr("-", 2 * i) + "*" + repeatStr("-", ((num - 2) / 2) - i));
}
for (int i = (num / 2) - 2; i >= 0; i--) {
System.out.println(repeatStr("-", ((num - 2) / 2) - i) + "*" + repeatStr("-", 2 * i) + "*" + repeatStr("-", ((num - 2) / 2) - i));
}
} else {
for (int i = 0; i < (num / 2); i++) {
if (i == 0) {
System.out.println(repeatStr("-", ((num - 1) / 2) - i) + "*" + repeatStr("-", ((num - 1) / 2) - i));
} else {
System.out.println(repeatStr("-", ((num - 1) / 2) - i) + "*" + repeatStr("-", 2 * i - 1) + "*" + repeatStr("-", ((num - 1) / 2) - i));
}
}
if (num == 1) {
System.out.println("*");
}
if (num > 1) {
System.out.println("*" + repeatStr("-", num - 2) + "*");
}
for (int i = (num / 2) - 1; i >= 0; i--) {
if (i == 0) {
System.out.println(repeatStr("-", ((num - 1) / 2) - i) + "*" + repeatStr("-", ((num - 1) / 2) - i));
} else {
System.out.println(repeatStr("-", ((num - 1) / 2) - i) + "*" + repeatStr("-", 2 * i - 1) + "*" + repeatStr("-", ((num - 1) / 2) - i));
}
}
}
}
static String repeatStr(String str, int count) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < count; i++) {
sb.append(str);
}
return sb.toString();
}
}