Project Euler Problem #9

ชุดตัวเลขสามจำนวน ของ ปิทากอรัส (Pythagorean Triplet) เป็นชุดของตัวเลขธรรมชาติสามจำนวน คือ a < b < c โดย

a^2 + b^2 = c^2

ตัวอย่างเช่น 3^2 + 4^2 = 9 + 16 = 25 = 5^2

มีชุดตัวเลขสามจำนวน ของ ปิทากอรัสอยู่ชุดหนึ่ง ซึ่ง a + b + c = 1000
จงหาผลคูณของตัวเลข a b และ c

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

ของเซฟครับ

1 Likes

@STGSafe
ชัดเจน: 2/3 สร้างสรรค์: 2/3 กระชับ 1/3 ความเร็ว 1/3
Comment:​ flow ของโค้ดอ่านง่าย สบายตาครับ แต่ผมไม่ชอบตรงที่ loop ตัว c เพราะจริงๆ a + b = c ยังไง cใหญ่กว่าa + b` เสมออยู่แล้ว ฉะนั้นผมว่ามันเปลือง ไม่ให้คะแนนสำหรับความเร็วกับความกระชับครับ

@prin09
ชัดเจน: 2/3 สร้างสรรค์: 3/3 กระชับ 2/3 ความเร็ว 2/3
Comment: ชอบ flow ครับ ที่ตั้งหลักที่ตัว c ก่อน โค้ดสะอาด ชัดเจนครับ

@Rain
ชัดเจน: 2/3 สร้างสรรค์: 2/3 กระชับ 1/3 ความเร็ว 1/3
Comment: สามารถกระชับกว่านี้ได้ครับ for b in range(1,c) กับ for a in range(1,b)

@IMPREM
ชัดเจน: 2/3 สร้างสรรค์: 2/3 กระชับ 1/3 ความเร็ว 1/3
Comment: อ่านคอมเมนต์ที่ผมลงไว้ให้ rain ครับ

@teerathornmoon3
ชัดเจน: 2/3 สร้างสรรค์: 2/3 กระชับ 1/3 ความเร็ว 1/3
Comment: รู้สึกว่าไม่จำเป็นต้อง loop c ด้วยนะครับ เพราะ c เป็นผลลัพธ์ของ \sqrt{ a^2 + b^2} อยู่แล้ว คำนวนออกมาได้เลย @teerathornmoon3 ที่อัพเดทใหม่ ดีครับ

@Sss
ชัดเจน: 2/3 สร้างสรรค์: 2/3 กระชับ 1/3 ความเร็ว 2/3
Comment: ถ้า b ใหญ่กว่า a ก็ไม่ต้องเสียเวลาไป loop ค่าของ b ที่เล็กกว่า a ครับ ให้เริ่มที่ a ได้เลย เช่น for b in range (a,1000)

@Home
ชัดเจน: 2/3 สร้างสรรค์: 2/3 กระชับ 2/3 ความเร็ว 1/3
Comment: โค้ดสวยงามครับ อาจจะมีส่วนเกินมาบ้าง เช่น c=1 ส่วนตัวผมคงใช้เป็น while loop แทน เพราะ for จะทำงานไปเรื่อยๆถึงแม้ว่าจะได้คำตอบที่ถูกต้องแล้วก็ตาม

@Akira
ชัดเจน: 1/3 สร้างสรรค์: 2/3 กระชับ 3/3 ความเร็ว 2/3
Comment: กระชับดีครับ แต่อ่านยากมากครับ ลองดูวิธีการตั้งชื่อตัวแปรของ rain ดูครับ


Rain’s answer for #9

shogun’s answer:

ของธีครับ

Home’s Answer: