การพิมพ์รูปสามเหลี่ยมดาวกระจกด้านบน (Mirror Upper Star Triangle) ใน Java
รูปสามเหลี่ยมกระจกด้านบน (Right-aligned Triangle): ดาวชิดขวา แถวบนเยอะที่สุด แถวล่างน้อยที่สุด ใช้ Nested Loops ควบคุมช่องว่างหน้าและดาว
อัลกอริทึม
- รับจำนวนแถว
n - ลูปแถว i = n ถึง 1 (ลดลง)
- ช่องว่างหน้า: n - i ช่อง
- ดาว: i ดวง
- ขึ้นบรรทัดใหม่
ตัวอย่างที่ 1: รับค่าจากผู้ใช้ (Scanner)
import java.util.Scanner;
public class MirrorUpperTriangle {
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 = n; i >= 1; i--) {
// ช่องว่างหน้า
for (int j = n; j > i; j--) {
System.out.print(" ");
}
// ดาว
for (int k = 1; k <= i; k++) {
System.out.print("*");
}
System.out.println();
}
}
}
ตัวอย่างที่ 2: ค่าคงที่ (Hardcoded)
public class MirrorUpperTriangle {
public static void main(String[] args) {
int n = 8;
System.out.println("จำนวนแถว: " + n);
System.out.println("รูปสามเหลี่ยมกระจกด้านบน:");
for (int i = n; i >= 1; i--) {
System.out.print(" ".repeat(n - i));
System.out.println("*".repeat(i));
}
}
}
ผลลัพธ์ (n=5)
รูปสามเหลี่ยมกระจกด้านบน:
*****
****
***
**
*
การปรับปรุง: ใช้ StringBuilder (Java 11+)
public class MirrorUpperModern {
public static void main(String[] args) {
int n = 8;
StringBuilder sb = new StringBuilder();
for (int i = n; i >= 1; i--) {
sb.append(" ".repeat(n - i));
sb.append("*".repeat(i));
sb.append("\n");
}
System.out.print(sb.toString());
}
}
รูปแบบแปรผัน: Mirror Upper Triangle (มีช่องว่างระหว่างดาว)
public class MirrorUpperSpaced {
public static void main(String[] args) {
int n = 5;
for (int i = n; i >= 1; i--) {
System.out.print(" ".repeat(n - i));
System.out.println("* ".repeat(i).trim());
}
}
}
ผลลัพธ์ Spaced (n=5)
* * * * *
* * * *
* * *
* *
*
ความสัมพันธ์กับรูปแบบอื่นๆ
| รูปแบบ | คำอธิบาย | ความสัมพันธ์ |
|---|---|---|
| Upper Triangle | ดาวชิดซ้าย เพิ่มขึ้น | Mirror ของนี้ (flip horizontal) |
| Downward Triangle | ดาวชิดขวา ลดลง | เหมือนกัน (แค่ชื่อต่าง) |
| Mirror Lower | ดาวชิดขวา เพิ่มขึ้น แล้วลด | Mirror Upper + Mirror Lower = Mirror Lower Full |
การวิเคราะห์
- Time: O(n²)
- Space: O(1) เพิ่มเติม
- ลูป i = n ถึง 1 (descending) เป็นจุดสำคัญ
- ช่องว่าง = n - i, ดาว = i