ภาพรวม
โปรแกรมคำนวณว่าวันแต่ละวัน (จันทร์-อาทิตย์) เกิดขึ้นกี่ครั้งในปีที่กำหนด โดยรับพารามิเตอร์จำนวนวันในปี (365 หรือ 366) และวันแรกของปี
ตัวอย่างโค้ด
def num_of_occurrence(n, firstday):
my_days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
my_count = [4 for i in range(7)] # ทุกวันมีอย่างน้อย 4 รอบ (28 วัน)
my_position = -1
for i in range(7):
if firstday == my_days[i]:
my_position = i
break
inc = n - 28 # วันที่เหลือหลังจาก 4 สัปดาห์เต็ม
for i in range(my_position, my_position + inc):
if i > 6:
my_count[i % 7] = 5
else:
my_count[i] = 5
for i in range(7):
print(my_days[i], my_count[i])
num = 31 # ตัวอย่างใช้ 31 วัน
first_day = "Thursday"
num_of_occurrence(num, first_day)ผลลัพธ์
Monday 4 Tuesday 4 Wednesday 4 Thursday 5 Friday 5 Saturday 5 Sunday 4
คำอธิบาย
- ปีปกติมี 365 วัน = 52 สัปดาห์ + 1 วัน (ปีอธิกสุรทิน +2 วัน)
- ทุกวันเกิดขึ้นอย่างน้อย 52 ครั้ง (4 รอบใน 28 วัน × 13 = 52)
- วันที่เหลือ (1 หรือ 2 วัน) จะทำให้วันบางวันเกิดขึ้น 53 ครั้ง
- อัลกอริทึมเริ่มนับจากวันแรกของปี แล้วกระจายวันที่เหลือไปยังวันถัดไป
หมายเหตุ
โค้ดตัวอย่างใช้ 31 วัน เพื่อสาธิตตรรกะ สำหรับปีจริงให้ใช้ 365 หรือ 366