สูตรสามเหลี่ยมปาสคาลพร้อมตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

สามเหลี่ยมปาสคาล คือการจัดเรียงตัวเลขเป็นรูปสามเหลี่ยม โดยที่แต่ละค่าเท่ากับผลรวมของตัวเลขสองตัวที่อยู่เหนือมันโดยตรง ซึ่งเผยให้เห็นรูปแบบที่ลึกซึ้งในคณิตศาสตร์เชิงการจัดเรียง การกระจายทวินาม และความน่าจะเป็น ที่ดึงดูดความสนใจของนักคณิตศาสตร์มานานหลายศตวรรษ

  • 🔺 โครงสร้าง: แต่ละแถวเริ่มต้นและสิ้นสุดด้วยเลข 1 โดยค่าภายในแถวเกิดจากการบวกตัวเลขสองตัวด้านบนเข้าด้วยกัน
  • 📐 การเชื่อมโยงแบบทวินาม: แถว n คอลัมน์ k เท่ากับสัมประสิทธิ์ทวินาม C(n, k) ทำให้รูปสามเหลี่ยมนี้เป็นตัวค้นหาภาพสำหรับชุดค่าผสม
  • 🔢 รูปแบบที่ซ่อนอยู่: ผลรวมของแถวเท่ากับกำลังของ 2 และผลรวมของแนวทแยงมุมจะสร้างลำดับฟิโบนาชชี
  • สามวิธี: คุณสามารถสร้างได้โดยใช้แถวก่อนหน้า โดยการคำนวณสัมประสิทธิ์ทวินาม หรือโดยวิธีลัดแบบวนซ้ำด้วยสัมประสิทธิ์ที่ปรับเปลี่ยนแล้ว
  • 🧪 การใช้งาน: ใช้ในพีชคณิต ความน่าจะเป็น วิทยาการคอมพิวเตอร์ และการพิสูจน์เชิงการจัดเรียงในหลักสูตรการศึกษาสมัยใหม่

สามเหลี่ยมปาสคาลคืออะไร?

สามเหลี่ยมปาสคาล คืออาร์เรย์ของตัวเลขรูปสามเหลี่ยมที่ปฏิบัติตามรูปแบบง่ายๆ โดยอิงจากแถวด้านบน นักคณิตศาสตร์ชาวฝรั่งเศส บлезал ปาสคาล เป็นผู้ทำให้สามเหลี่ยมนี้เป็นที่รู้จักอย่างแพร่หลายในศตวรรษที่ 17 สามเหลี่ยมนี้เริ่มต้นด้วยเลข "1" เพียงตัวเดียวที่ด้านบนสุด และทุกแถวถัดไปก็เริ่มต้นและสิ้นสุดด้วยเลข "1" เช่นกัน

สามเหลี่ยมปาสคาล

นอกเหนือจากรูปทรงที่สวยงามแล้ว สามเหลี่ยมปาสคาลยังแฝงความสัมพันธ์ทางคณิตศาสตร์ที่ลึกซึ้งเอาไว้ มันมีความเกี่ยวข้องอย่างใกล้ชิดกับทฤษฎีบททวินาม การนับเชิงการจัดเรียง และความน่าจะเป็น ซึ่งเป็นเหตุผลว่าทำไมมันจึงปรากฏอยู่ในห้องเรียนพีชคณิต สถิติ และวิทยาการคอมพิวเตอร์ทั่วโลก

ประวัติสามเหลี่ยมปาสคาล

แม้ว่าชื่อรูปสามเหลี่ยมจะตั้งตามชื่อของแบลส์ ปาสคาล แต่รูปสามเหลี่ยมนี้มีมาก่อนเขาหลายศตวรรษ ตำราคณิตศาสตร์ของจีน “เก้าบทว่าด้วยศิลปะทางคณิตศาสตร์” มีตัวอย่างที่เก่าแก่ที่สุดชิ้นหนึ่ง ซึ่งแสดงให้เห็นรูปแบบหลายอย่างที่คล้ายคลึงกับที่เราใช้ในปัจจุบัน

นักคณิตศาสตร์ชาวเปอร์เซีย อัล-คาราจี และนักวิชาการชาวอินเดีย Pingนอกจากนี้ ปาสคาลยังได้สำรวจอาร์เรย์ที่คล้ายกันอีกด้วย ปาสคาลได้วางกรอบคุณสมบัติของสามเหลี่ยมอย่างเป็นทางการในตำรา "Traité du triangle arithmétique" ที่เขียนขึ้นในปี ค.ศ. 1654 ซึ่งเป็นที่มาของชื่อเรียกสมัยใหม่ในคณิตศาสตร์ตะวันตกสำหรับโครงสร้างนี้

การก่อสร้างสามเหลี่ยมปาสคาล

การสร้างสามเหลี่ยมปาสคาลนั้นไม่ซับซ้อน กฎข้อเดียวที่ต้องจำคือแต่ละแถวเริ่มต้นและสิ้นสุดด้วยเลข 1 และตัวเลขอื่นๆ จะสร้างขึ้นจากแถวด้านบน

สำหรับแถว r และคอลัมน์ c ใดๆ ค่าที่ได้จะเท่ากับผลรวมของตัวเลขในคอลัมน์ c-1 และ c ของแถว r-1

ที่นี่

  • r = 3, 4, 5, …
  • n และ c = 2, 3, 4, …, r-1

ต่อไปนี้คือขั้นตอนในการสร้างสามเหลี่ยมปาสคาล:

ขั้นตอน 1) เริ่มจากการกรอกข้อมูลในสองแถวแรกก่อน

การก่อสร้างสามเหลี่ยมปาสคาล

ขั้นตอน 2) องค์ประกอบที่สองของแถวที่สามคือผลรวมของตัวเลขแรกและตัวเลขที่สองในแถวที่สอง

การก่อสร้างสามเหลี่ยมปาสคาล

ขั้นตอน 3) แถวที่สี่เริ่มต้นด้วยเลข “1” ตัวเลขที่สองคือ 3 ซึ่งเป็นผลรวมของ 1 และ 2 (ไฮไลต์ด้วยสีน้ำเงิน)

ภาพด้านล่างแสดงวิธีการกรอกข้อมูลในแถวที่สี่:

การก่อสร้างสามเหลี่ยมปาสคาล

ขั้นตอน 4) แถวที่ห้าประกอบด้วยตัวเลขห้าตัว เราทราบรูปแบบการเติมตัวเลขลงในแต่ละแถวจากขั้นตอนก่อนหน้านี้แล้ว

การก่อสร้างสามเหลี่ยมปาสคาล

สูตรสามเหลี่ยมปาสคาล – สัมประสิทธิ์ทวินาม

สัมประสิทธิ์ทวินามนับจำนวนวิธีในการเลือกเซตย่อยที่มี k องค์ประกอบจากเซตที่มี n องค์ประกอบ โดยทั่วไปจะเขียนในรูป “C(n, k)” หรือ “n เลือก k”

สัมประสิทธิ์ทวินามถูกกำหนดดังนี้:

สูตรสามเหลี่ยมของปาสคาล - สัมประสิทธิ์ทวินาม

เครื่องหมาย “!” แสดงถึงแฟกทอเรียลของจำนวนนั้น

n! = n.(n-1).(n-2)…3.2.1

ตัวอย่างเช่น

5! = 5.4.3.2.1

= 120

ดังนั้น C(5, 3) หรือ “5 เลือก 3” = 5! / 3!(5-3)!

= 120/12

= 10

วิธีที่ 1: การสร้างสามเหลี่ยมปาสคาลโดยใช้แถวก่อนหน้า

ขั้นตอนในที่นี้คล้ายคลึงกับวิธีที่เราวาดรูปสามเหลี่ยมด้วยมือ สมมติว่าเราต้องการสร้างรูปสามเหลี่ยมของปาสคาลที่มีมากถึงเจ็ดแถว

ขั้นตอนในการดำเนินการมีดังต่อไปนี้:

ขั้นตอน 1) เริ่มแถวบนสุดด้วยเลข “1”

ขั้นตอน 2) สำหรับแถว “r” ค่าขององค์ประกอบ “c” จะเป็นผลรวมของคอลัมน์ “c-1” และคอลัมน์ “c” ของแถว “r-1”

ขั้นตอน 3) ตัวเลขแรกและตัวเลขสุดท้ายในทุกแถวจะเป็น “1” เสมอ

การทำตามสามขั้นตอนง่ายๆ นี้จะช่วยให้เราสร้างรูปสามเหลี่ยมทั้งหมดได้อย่างเป็นระบบ

C++ Code ของสามเหลี่ยมปาสคาลโดยแถวก่อนหน้า

#include <bits/stdc++.h>
using namespace std;
void printRow(int n)
{
  int numbers[n][n];
  for (int row = 0; row < n; row++)
  {
    for (int col = 0; col <= row; col++)
    {
      if (col == 0 || col == row)
      {
        numbers[row][col] = 1;
      }
      else
      {
        numbers[row][col] = numbers[row - 1][col - 1] + numbers[row - 1][col];
      }
      cout << numbers[row][col] << "\t";
    }
    cout << endl;
  }
}
int main()
{
  int n;
  cout << "How many rows: ";
  cin >> n;
  printRow(n);
}

Output:

How many rows: 7
1
1       1
1       2       1
1       3       3       1
1       4       6       4       1
1       5       10      10      5       1
1       6       15      20      15      6       1

Python Code ของสูตรสามเหลี่ยมปาสคาลโดยแถวก่อนหน้า

def printRow(n):
    numbers = [[0 for row in range(n)]
               for col in range(n)
               ]
    for row in range(len(numbers)):
        for col in range(0, row+1):
            if row == col or col == 0:
                numbers[row][col] = 1
            else:
                numbers[row][col] = numbers[row-1][col-1]+numbers[row-1][col]

            print(numbers[row][col],end="\t")
        print("\n")
n = int(input("How many rows: "))
printRow(n)

ผลลัพธ์ตัวอย่างสามเหลี่ยมของปาสคาล:

How many rows: 7
1
1       1
1       2       1
1       3       3       1
1       4       6       4       1
1       5       10      10      5       1
1       6       15      20      15      6       1

การวิเคราะห์ความซับซ้อน

A อาร์เรย์สองมิติ ถูกนำมาใช้ในการใช้งานนี้ เนื่องจาก N คือจำนวนแถวในสามเหลี่ยมปาสคาล จึงต้องใช้ N2 พื้นที่หน่วย ดังนั้น ความซับซ้อนของพื้นที่จึงเป็น O(N)2).

ฟังก์ชันนี้ใช้ลูปซ้อนกันสองลูป โดยแต่ละลูปทำงานซ้ำได้สูงสุด “N” ครั้ง ดังนั้น ความซับซ้อนของเวลาจึงเป็น เช่นกัน บน2)หรือความซับซ้อนของเวลาแบบยกกำลังสอง

วิธีที่ 2: การสร้างสามเหลี่ยมปาสคาลโดยการคำนวณสัมประสิทธิ์ทวินาม

เราสามารถหาค่าของสามเหลี่ยมปาสคาลได้โดยตรงโดยใช้สัมประสิทธิ์ทวินาม แผนภาพด้านล่างแสดงให้เห็นถึงความสัมพันธ์ดังกล่าว:

การสร้างสามเหลี่ยมปาสคาลโดยการคำนวณสัมประสิทธิ์ทวินาม

ต่อไปนี้คือขั้นตอนในการสร้างสามเหลี่ยมปาสคาลโดยการคำนวณสัมประสิทธิ์ทวินาม:

ขั้นตอน 1) แถวบนสุดคือ C(0, 0) โดยใช้สูตรข้างต้น C(0, 0) = 1 เพราะ 0! = 1

ขั้นตอน 2) สำหรับแถว “i” จะมีองค์ประกอบทั้งหมด “i” รายการ โดยแต่ละรายการจะคำนวณเป็น C(n, r) โดยที่ n คือ i-1

ขั้นตอน 3) ทำซ้ำขั้นตอนที่ 2 สำหรับจำนวนแถวของสามเหลี่ยมปาสคาลที่คุณต้องการสร้าง

C++ Code สามเหลี่ยมปาสคาลโดยใช้สัมประสิทธิ์ทวินาม

#include <iostream>
using namespace std;
int factorial(int n)
{
    int result = 1;
    for (int i = 1; i <= n; i++)
    {
        result *= i;
    }
    return result;
}
int binomialCoefficient(int n, int r)
{
    int result = 1;
    if (r > n)
    {
        return -1;
    }
    result = factorial(n) / (factorial(r) * factorial(n - r));
    return result;
}
void printPascalTriangle(int row)
{
    for (int i = 0; i <= row; i++)
    {
        for (int j = 0; j <= i; j++)
        {
            cout << binomialCoefficient(i, j) << "\t";
        }
        cout << endl;
    }
}
int main()
{
    int n;
    cout << "Enter row number: ";
    cin >> n;
    printPascalTriangle(n);
}

Output:

Enter row number: 9
1
1	1
1	2	1
1	3	3	1
1	4	6	4	1
1	5	10	10	5	1
1	6	15	20	15	6	1
1	7	21	35	35	21	7	1
1	8	28	56	70	56	28	8	1
1	9	36	84	126	126	84	36	9	1

Python Code สามเหลี่ยมปาสคาลโดยใช้สัมประสิทธิ์ทวินาม

def factorial(n):
    result = 1
    for i in range(1,n+1):
        result*=i
    return result
def binomialCoefficient(n,r):
    result =1
    if r>n:
        return None
    result = factorial(n) / (factorial(r) * factorial(n - r))
    return int(result)
def printPascalTriangle(row):
    for i in range(row+1):
        for j in range(i+1):
            print(binomialCoefficient(i, j), end="\t")
        print()
# print(binomialCoefficient(3, 2))
n = int(input("Enter row number: "))
printPascalTriangle(n)

ผลลัพธ์ตัวอย่างสามเหลี่ยมของปาสคาล:

Enter row number: 8
1
1       1
1       2       1
1       3       3       1
1       4       6       4       1
1       5       10      10      5       1
1       6       15      20      15      6       1
1       7       21      35      35      21      7       1
1       8       28      56      70      56      28      8       1

การวิเคราะห์ความซับซ้อน

ในการใช้งานนี้มีการใช้ลูปสามลูป: ลูปหนึ่งสำหรับคำนวณสัมประสิทธิ์ทวินาม และอีกสองลูปสำหรับวนซ้ำผ่านทุกแถวและทุกคอลัมน์ เมื่อเทียบกับจำนวนแถว ลูปทั้งสามจะทำงานทั้งหมด “n” ครั้ง ดังนั้น ความซับซ้อนของเวลาโดยรวมคือ O(n)3).

ความซับซ้อนของพื้นที่จัดเก็บคงที่ เนื่องจากเราไม่ได้จัดเก็บผลลัพธ์ระหว่างกลางใดๆ โปรแกรมคำนวณแต่ละองค์ประกอบแบบเรียลไทม์และพิมพ์ออกมาในแต่ละแถว ดังนั้นความซับซ้อนของพื้นที่จัดเก็บจึงลดลงเหลือ O (1).

วิธีที่ 3: การสร้างสามเหลี่ยมปาสกาลโดยดัดแปลงค่าสัมประสิทธิ์ทวินาม

ในเทคนิคก่อนหน้านี้ เราใช้สูตรสัมประสิทธิ์ทวินามในการคำนวณแต่ละองค์ประกอบ วิธีการที่ปรับปรุงใหม่นี้ได้มาจาก C(n, r) โดยตรงจาก C(n, r-1) ซึ่งช่วยลดขั้นตอนการทำงานลงได้ถึงหนึ่งลำดับ

ต่อไปนี้คือขั้นตอนในการสร้างสามเหลี่ยมปาสคาลโดยใช้สัมประสิทธิ์ทวินามที่ปรับเปลี่ยนแล้ว:

ขั้นตอน 1) เริ่มต้นแถวแรกด้วยเลข “1”

ขั้นตอน 2) คำนวณค่า C(n, r) โดยที่ “n” คือหมายเลขแถว และ “r” คือดัชนีคอลัมน์ กำหนดค่าที่ได้ให้กับตัวแปร C

ขั้นตอน 3) ในการคำนวณสัมประสิทธิ์ตัวถัดไป ให้ใช้ C * (n – k) / k กำหนดค่าใหม่นี้กลับเข้าไปใน C

ขั้นตอน 4) ดำเนินการขั้นตอนที่ 3 ต่อไปจนกว่า “k” จะถึงปลายแถว หลังจากแต่ละรอบ ให้เพิ่มค่า k ขึ้นหนึ่ง

C++ Code สำหรับสามเหลี่ยมปาสคาลโดยใช้สัมประสิทธิ์ทวินามที่ปรับปรุงแล้ว

#include <bits/stdc++.h>
using namespace std;
void printpascalTriangle(int n)
{
  for (int row = 1; row <= n; row++)
  {
    int previous_coef = 1;
    for (int col = 1; col <= row; col++)
    {
      cout << previous_coef << "\t";
      previous_coef = previous_coef * (row - col) / col;
    }
    cout << endl;
  }
}

int main()
{
  int n;
  cout << "How many rows: ";
  cin >> n;
  printpascalTriangle(n);
}

Output:

How many rows: 5
1
1       1
1       2       1
1       3       3       1
1       4       6       4       1

Python Code สำหรับสามเหลี่ยมปาสคาลโดยใช้สัมประสิทธิ์ทวินามที่ปรับปรุงแล้ว

def printpascalTriangle(n):
    for row in range(1, n+1):
        previous_coef = 1
        for col in range(1, row+1):
            print(previous_coef, end="\t")
            previous_coef = int(previous_coef*(row-col)/col)
        print()
n = int(input("How many rows: "))
printpascalTriangle(n)

ผลลัพธ์ของรูปแบบสามเหลี่ยมของ Pascal:

How many rows: 5
1
1       1
1       2       1
1       3       3       1
1       4       6       4       1

การวิเคราะห์ความซับซ้อน

การใช้งานนั้นใช้ลูปสองลูป โดยแต่ละลูปทำงานสูงสุด “n” ครั้ง โดยที่ “n” คือจำนวนแถวในรูปสามเหลี่ยม ดังนั้น ความซับซ้อนของเวลาคือ บน2), เวลากำลังสอง

ในส่วนของความซับซ้อนด้านพื้นที่จัดเก็บ เราไม่จำเป็นต้องใช้อาร์เรย์ในการจัดเก็บข้อมูล เราใช้เพียงตัวแปรเดียวเพื่อเก็บค่าสัมประสิทธิ์ทวินามก่อนหน้า ดังนั้นเราจึงต้องการพื้นที่เพิ่มเพียงหนึ่งหน่วยเท่านั้น ความซับซ้อนด้านพื้นที่จัดเก็บจึงเป็นดังนี้ O (1).

การประยุกต์สามเหลี่ยมปาสคาล

ต่อไปนี้คือตัวอย่างการประยุกต์ใช้สามเหลี่ยมปาสคาลในทางปฏิบัติ:

การขยายทวินาม: สัมประสิทธิ์ของการกระจายทวินามใดๆ สามารถอ่านได้โดยตรงจากสามเหลี่ยมปาสคาล นี่คือตัวอย่าง:

(x + ย)0 1
(x + ย)1 1.x + 1.y
(x + ย)2 1x2 + 2xy+ 1y2
(x + ย)3 1x3 + 3x2และ + 3xy2 + 1y3
(x + ย)4 1x4 + 4x3และ + 6x2y2 + 4xy3 + 1y4

การคำนวณชุดค่าผสม: องค์ประกอบของสามเหลี่ยมปาสคาลสอดคล้องโดยตรงกับสัมประสิทธิ์ทวินาม ตัวอย่างเช่น ถ้าคุณมีลูกบอล 6 ลูกและต้องการเลือก 3 ลูก คำตอบคือ 6C3คุณสามารถหาค่าดังกล่าวได้จากองค์ประกอบที่ 3 ของแถวที่ 6 ในสามเหลี่ยมปาสคาล

ความน่าจะเป็น: สามเหลี่ยมของปาสคาลถูกนำมาใช้กันอย่างแพร่หลายในการคำนวณความน่าจะเป็นในการโยนเหรียญ ปัญหาลูกเต๋า และเหตุการณ์เชิงการจัดเรียงอื่นๆ ที่ผลลัพธ์แต่ละอย่างสอดคล้องกับการแจกแจงแบบทวินาม

ข้อเท็จจริงที่น่าสนใจเกี่ยวกับสามเหลี่ยมปาสคาล

ต่อไปนี้เป็นข้อเท็จจริงบางส่วนที่คุณจะพบว่าน่าสนใจเกี่ยวกับสามเหลี่ยมปาสคาล:

  • ผลรวมของทุกองค์ประกอบในแต่ละแถวจะเป็นกำลังของ 2 เสมอ

ข้อเท็จจริงเกี่ยวกับสามเหลี่ยมปาสคาล

  • ผลรวมตามแนวทแยงมุมของแถวต่างๆ จะสร้างลำดับฟิโบนาชชีขึ้นมา

ข้อเท็จจริงเกี่ยวกับสามเหลี่ยมปาสคาล

  • แต่ละแถวสอดคล้องกับสัมประสิทธิ์ในการกระจายของ (a+b)n.
  • หากคุณระบายสีเฉพาะตัวเลขคี่ รูปทรงที่ได้จะมีลักษณะเป็นแฟร็กทัลสามเหลี่ยมเซียร์ปินสกี

คำถามที่พบบ่อย

แม้ว่าชื่อสามเหลี่ยมจะตั้งตามชื่อของแบลส์ ปาสคาล ผู้ซึ่งวางรากฐานทางคณิตศาสตร์อย่างเป็นทางการในปี 1654 แต่สามเหลี่ยมนี้เป็นที่รู้จักกันในจีน อินเดีย และเปอร์เซียมาหลายศตวรรษแล้ว นักคณิตศาสตร์อย่างเจียเซียน หยางฮุย เป็นต้น Pingและอัล-คาราจีได้ศึกษาอาร์เรย์ที่คล้ายกันนี้มาก่อนปาสคาลเสียอีก

แต่ละค่าในสามเหลี่ยมปาสคาลเท่ากับสัมประสิทธิ์ทวินาม C(n, k) ตัวเลขในแถว n ให้ค่าสัมประสิทธิ์ของ (a + b) ยกกำลัง n ทำให้สามเหลี่ยมนี้เป็นตารางค้นหาที่รวดเร็วสำหรับการกระจายทวินาม

ผลรวมของตัวเลขทั้งหมดในแถวที่ n ของสามเหลี่ยมปาสคาลคือ 2 ยกกำลัง n ตัวอย่างเช่น แถวที่ 4 ประกอบด้วย 1, 4, 6, 4, 1 ซึ่งรวมกันได้ 16 เท่ากับ 2 ยกกำลัง 4 พอดี

หากคุณบวกตัวเลขตามแนวทแยงมุมตื้นๆ ของสามเหลี่ยมปาสคาล ผลลัพธ์ที่ได้จะเป็นลำดับฟิโบนาชชี: 1, 1, 2, 3, 5, 8, 13 และต่อไปเรื่อยๆ นี่คือหนึ่งในรูปแบบที่ซ่อนอยู่และงดงามที่สุดของสามเหลี่ยมนี้

รูปสามเหลี่ยมของปาสคาลใช้จำลองความน่าจะเป็นของเหตุการณ์ที่มีผลลัพธ์สองอย่างที่มีโอกาสเกิดขึ้นเท่ากัน เช่น การโยนเหรียญ แถว n แสดงจำนวนวิธีที่จะได้หัว k ครั้งในการโยน n ครั้ง ซึ่งนำไปสู่การกระจายความน่าจะเป็นแบบทวินามโดยตรง

ระบบ AI ใช้สัมประสิทธิ์ทวินามที่ได้จากสามเหลี่ยมปาสคาลสำหรับการเลือกคุณลักษณะ การสุ่มตัวอย่าง และการเพิ่มประสิทธิภาพเชิงการจัดเรียง ตัวแทนการเรียนรู้แบบเสริมแรงและตัวแก้ปัญหาทางคณิตศาสตร์เชิงสัญลักษณ์ยังอ้างอิงถึงสามเหลี่ยมนี้เมื่อให้เหตุผลเกี่ยวกับการขยายพหุนามและปัญหาการเลือกแบบไม่ต่อเนื่อง

ใช่แล้ว โปรแกรมติวคณิตศาสตร์ที่ใช้ AI จะสร้างภาพประกอบทีละแถว โจทย์ฝึกหัดที่ปรับเปลี่ยนได้ตามความยากง่าย และให้คำติชมทันทีเกี่ยวกับแบบฝึกหัดสัมประสิทธิ์ทวินาม ช่วยให้ผู้เรียนเชื่อมโยงรูปสามเหลี่ยมเข้ากับการจัดหมู่ ความน่าจะเป็น และทฤษฎีบททวินามได้ตามจังหวะของตนเอง

สรุปโพสต์นี้ด้วย: