Project Euler Problem #2

เลข Fibonacci มาจากการเอาตัวเลขสองตัวสุดท้ายมาบวกกันเพื่อที่จะได้เลขในลำดับถัดไป ถ้าเราเริ่มจากเลข 1 กับ 2 สิบเลขแรก เราจะได้ลำดับ Fibonacci ดังต่อไปนี้

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …

ด้วยลำดับเลข Fibonacci ที่มีค่าไม่ถึง 4 ล้าน จงรวมยอดเลข Fibonacci ที่เป็นเลขคู่

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

comment ผมให้แบบรวมๆนะครับ อย่าลืมอ่านของคนอื่นด้วย จะได้เข้าใจคะแนนของตัวเอง ส่วนคะแนนบ่อยครั้งจะถ่วงกันครับ เช่น โค้ดที่สร้างสรรค์มากอาจอ่านไม่ค่อยรู้เรื่อง อย่าไปเปรียบเทียบกับคนอื่นนะครับ

Prem https://repl.it/@IAMPREM/CoderDojoProjectEulerProblem2:
ชัดเจน: 2/3 สร้างสรรค์: 2/3 กระชับ 1/3 ความเร็ว 1/3
ผมชอบความ Recursive และการลดตัวเลขแทนการเพิ่มตัวเลข อันนี้น่าสนใจดี แต่โค้ดรันช้ามาก อาจจะเป็นเพราะต้องคำนวน Fibonacci ตั้งแต่ต้นให่มทุกครั้ง ผมลองเพิ่ม cache เข้าไปให้ และรู้สึกว่าไม่ชัดเจนเท่าไหร่ว่า Fibonacci() คืออะไร ผมต้องทำการ print([Fibonacci(i) for i in range(1,10)]) เพื่อให้ดูออกว่าโค้ดทำานยังไง

Max https://repl.it/@maxpirawat/euler2:
ชัดเจน: 3/3 สร้างสรรค์: 1/3 กระชับ 2/3 ความเร็ว 3/3
ชอบมากที่เขียน C โค้ดตามง่าย สะอาดตา เร็วมาก algorithm ค่อนข้างเป็นมาตรฐานฉะนั้นความสร้างสรรค์ไม่ได้

Safe https://repl.it/@STGSurfers/2:
ชัดเจน: 2/3 สร้างสรรค์: 1/3 กระชับ 2/3 ความเร็ว 2/3
โอเคครับค่อนข้างเป็นมาตรฐาน อาจทำให้อ่านได้ชัดกว่านี้ถ้าปรับช่องว่างระหว่างบรรทัดครับ

รยา https://repl.it/@rayaaaaaaaaaa/dojocodingchalleng2:
ชัดเจน: 1/3 สร้างสรรค์: 1/3 กระชับ 2/3 ความเร็ว 2/3
โค้ดกระชับครับ แต่อ่านยาก ส่วน algorithm ที่ใช้ค่อนข้าง standard นอกนั้นแล้วได้คำตอบที่ถูกต้อง ผ่านครับ :slight_smile:

Rain https://repl.it/@KidCoding/PracticalUnwieldyAutomaticparallelization:
ชัดเจน 1/3 สร้างสรรค์: 2/3 กระชับ 1/3 ความเร็ว 2/3
ความชัดเจนโดนหักคะแนนเพราะใช้ while True แล้วมา break เอา จริงๆ while นี่ควรมีเงื่อนไขในนั้นให้ชัดไปเลย เช่น while Number > 4000000 เป็นต้น ตรงนี้ทำให้ไม่กระชับด้วย แต่โอเคกับการใช้ while แทน กับการเซฟค่า fibonacci ลงไปใน list ส่วนความเร็ว ไม่เร็ว ไม่ช้า

Home: https://repl.it/repls/ToughLowForce
ชัดเจน 3/3 สร้างสรรค์​ 2/3 กระชับ 2/3 ความเร็ว 2/3
ชอบตรงที่ 4 ล้านใช้ 4 x 1000 x 1000 ทำให้อ่านง่าย แต่ควรใช้ final แล้วใช้ตัวแปรเป็นตัวใหญ่ด้วย สร้างสรรค์ให้คะแนนเพิ่มหน่อยเพราะใช้ while กระชับ โอเค ทุกบรรทัดมีค่า ส่วนความเร็ว ไม่เร็วไม่ช้าครับ

Rain @MomAey:
ชัดเจน 2/3 สร้างสรรค์​ 2/3 กระชับ 2/3 ความเร็ว 2/3
Comment: ขอเรื่องมากหน่อย หัก 1 คะแนนเพราะใช้ CamelCase ครับ ควรใช้ snake_case ในการตั้งชื่อแทน นอกนั้นทุกอย่างโอเคครับค่อนข้างเป็นมาตรฐาน

เนตร @XCN_Nate:
ชัดเจน 2/3 สร้างสรรค์​ 2/3 กระชับ 2/3 ความเร็ว 2/3
Comment: โอเคครับ ค่อนข้างเป็นมาตรฐาน แต่มีการพิมพ์ 4 * 1000 * 1000 ซ้ำครับ กรณีนี้ควรใช้ Max ไปเลย และไม่ควรใช้ CamelCase สำหรับการเขียนไพธอนครับเว้นแต่จะสร้าง Object ควรใช้ snake_case แทน

@Sss
ชัดเจน 2/3 สร้างสรรค์​ 2/3 กระชับ 2/3 ความเร็ว 2/3
Comment: โอเคครับ ผ่าน แต่วันหลังช่วยใช้ snake_case แทน CamelCase ตอนตั้งตัวแปรครับ ดูคอมเมนต์ของเนตรด้วยครับ

@prin09
ชัดเจน 2/3 สร้างสรรค์​ 2/3 กระชับ 2/3 ความเร็ว 2/3
Comment: ชัดเจนดีครับ

@Akira
ชัดเจน 2/3 สร้างสรรค์​ 2/3 กระชับ 2/3 ความเร็ว 2/3
Comment: ตรงไปตรงมา ขอบคุณครับ

Answer#2 From Rain.

1 Likes

Home’s Answer:

1 Likes

@mishariทักเรื่องcamel case กะsnake case กับเรน คำเดียวสั้นๆค่ะ “แม่เราขี้เกียจพิมพ์” มีทางแก้ไขความขี้เกียจลูกไหมคะ555

1 Likes

โดนหักคะแนนครับ ถ้ารับได้ก็รับไป :stuck_out_tongue: มันเหมือนเวลาพิมพ์ข้อความครับ สามารถพิมพ์ว่า ผนงรจตกม ก็ได้ หรือจะพิมพ์ว่า “ผู้นำที่ขาดวุฒิภาวะ สามารถนำพาประชาชนชาวไทยไปสู่ความหายนะ” ก็ได้ แต่ต้องเข้าใจว่าหนึ่งในวัตถุประสงค์หลักของการเขียนโค้ด คือการสื่อสารให้คนอื่นครับ เด็กๆมักจะไม่เข้าใจกัน สมัยเโ็กๆผมก็ไม่เคยเข้าใจ Rain กับ Home ก็ยังไม่ค่อยเข้าใจเท่าไหร่ครับ :wink:

1 Likes

ของเนตรครับ

1 Likes

shogun’s answer:

1 Likes

โทษครับ @XCN_Nate ผลลัพธ์ไม่ถูกครับ ช่วยเช็คใหม่อีกทีครับ

1 Likes

1 Likes

คำตอบข้อ2
colab notebook มีคำอธิบายด้วยครับต้อง login google account

https://colab.research.google.com/drive/1JeQ5wmmIwYYpgRgHIW9lO2rVE2JqsAwn?usp=sharing#forceEdit=true&sandboxMode=true

ยังไม่มีคะแนนของผมครับ