Project Euler Problem #19

เรามีข้อมูลให้เท่านี้ เพื่อนๆ อาจจะต้องค้นคว้าเพิ่มเติมด้วยตนเอง

  • 1 มกราคม 1900 เป็นวันจันทร์

  • เดือนที่มี 30 วัน มี เมษายน, มิถุนายน, กันยายน และ พฤศจิกายน

  • เดือนที่เหลือทั้งหมดมี 31 วัน ยกเว้นเดือนกุมภาพันธ์ ที่มี 28 วันในปีปกติ และ 29 วันในปีอธิกสุรทิน (Leap Year)

  • ปีอธิกสุรทิน คือ ปีที่หารด้วย 4 ลงตัว แต่ต้องไม่ใช่เลขศตวรรษ ยกเว้นเลขศตวรรษนั้นจะหารด้วย 400 ลงตัว

มีวันอาทิตย์ ที่เป็นวันที่ 1 ของเดือน กี่วัน ในช่วงศตวรรษที่ยี่สิบ (1 มกราคม 1901 ถึง 31 ธันวาคม 2000)

(โจทย์นี้แปลมาจาก projecteuler.net สามารถเผยแพร่ภายใต้ลิขสิทธิ์ CC BY-NC-SA 2.0 UK )

@IMPREM
ชัดเจน: 1/3 สร้างสรรค์: 1/3 กระชับ 2/3 ความเร็ว 2/3
Comment: น่าจะใช้ For loop แทน while loop ครับในเคสนี้เพราะเรามีจุดสิ้นสุดที่ชัดเจน

@Home
ชัดเจน: 1/3 สร้างสรรค์: 1/3 กระชับ 2/3 ความเร็ว 2/3
Comment: โอเคครับ ตรงไปตรงมา แต่ผมว่าแตก while loop ออกมาน่าจะได้ครับ มันจะทำให้อ่านได้ง่ายขึ้น

@Rain
ชัดเจน: 2/3 สร้างสรรค์: 2/3 กระชับ 3/3 ความเร็ว 2/3
Comment: เริ่มดูค่อนข้างมือออาชีพแล้ว ต่อไปต้องกำจัด magic number ออกไป เช่น year%400 เป็น year % FOUR_HUNDRED แทน เป็นต้น แล้วแถลง 400 ไว้ด้านบน


Rain’s answer for #19