การพิมพ์รูปสามเหลี่ยมดาวกลับ (Downward Triangle Star Pattern) ใน Java
รูปสามเหลี่ยมกลับ (Downward/Inverted Triangle) เริ่มจากฐานกว้างสุดที่บน แล้วลดจำนวนดาวลงทีละแถวจนเหลือ 1 ดาว ใช้ Nested Loops ควบคุมช่องว่างหน้าและดาว
อัลกอริทึม
- รับจำนวนแถว
n - ลูปแถว i = 0 ถึง n-1
- ช่องว่างหน้า: i ช่อง (เพิ่มขึ้นทุกแถว)
- ดาว: n - i ดวง (ลดลงทุกแถว)
- ขึ้นบรรทัดใหม่
ตัวอย่างที่ 1: รับค่าจากผู้ใช้ (Scanner)
import java.util.Scanner;
public class DownwardTriangle {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("ป้อนจำนวนแถว: ");
int n = scanner.nextInt();
System.out.println("รูปสามเหลี่ยมดาวกลับ:");
for (int i = 0; i < n; i++) {
// ช่องว่างหน้า
for (int j = 0; j <= i; j++) {
System.out.print(" ");
}
// ดาว
for (int k = 0; k <= n - 1 - i; k++) {
System.out.print("* ");
}
System.out.println();
}
}
}
ตัวอย่างที่ 2: ค่าคงที่ (Hardcoded)
public class DownwardTriangle {
public static void main(String[] args) {
int n = 8;
System.out.println("จำนวนแถว: " + n);
System.out.println("รูปสามเหลี่ยมดาวกลับ:");
for (int i = 0; i < n; i++) {
System.out.print(" ".repeat(i + 1));
System.out.println("* ".repeat(n - i));
}
}
}
ผลลัพธ์ (n=5)
รูปสามเหลี่ยมดาวกลับ:
* * * * *
* * * *
* * *
* *
*
การปรับปรุง: ใช้ StringBuilder (Java 11+)
public class DownwardTriangleModern {
public static void main(String[] args) {
int n = 8;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < n; i++) {
sb.append(" ".repeat(i + 1));
sb.append("* ".repeat(n - i));
sb.append("\n");
}
System.out.print(sb.toString());
}
}
รูปแบบแปรผัน: Downward Triangle แบบ Solid (ไม่มีช่องว่างระหว่างดาว)
public class DownwardSolidTriangle {
public static void main(String[] args) {
int n = 5;
for (int i = 0; i < n; i++) {
System.out.print(" ".repeat(i));
System.out.println("*".repeat(n - i));
}
}
}
ผลลัพธ์ Solid (n=5)
*****
****
***
**
*
รูปแบบแปรผัน: Downward Triangle ชิดซ้าย (Left-aligned)
public class LeftAlignedDownward {
public static void main(String[] args) {
int n = 5;
for (int i = n; i >= 1; i--) {
System.out.println("*".repeat(i));
}
}
}
ผลลัพธ์ Left-aligned (n=5)
*****
****
***
**
*
การวิเคราะห์
- Time: O(n²)
- Space: O(1) เพิ่มเติม
- ช่องว่างหน้า: เพิ่มขึ้นทีละ 1 (0, 1, 2, ...)
- ดาว: ลดลงทีละ 1 (n, n-1, ..., 1)
- รูปแบบนี้คือครึ่งบนของ Mirror Lower Triangle