@Rain
ชัดเจน: 2/3 สร้างสรรค์: 2/3 กระชับ 2/3 ความเร็ว 1/3
Comment: while loop สวยงามครับ ทีนี้เรื่องความเร็ว อย่าลืมครับว่าทุกครั้งที่แปลงเป็น string มันจะกินเวลามากกว่าเพราะต้องแปลงเป็น string ก่อน ขอยกตัวอย่างโค้ดนะครับ
sequence = 111111111111111111
thousand_digits = 10 ** 1000
def compare_int():
if sequence // thousand_digits < 0:
pass
def compare_string():
if len(str(sequence)) < 1000:
pass
if __name__ == '__main__':
import timeit
# 0.266510009766 seconds
print(timeit.timeit("compare_int()", setup="from __main__ import compare_int"))
# 0.327558040619 seconds
print(timeit.timeit("compare_string()", setup="from __main__ import compare_string"))
ถ้าแปลงเป็น string ก่อน จะใช้เวลา 0.32 วินาที แต่ถ้าเราคำนวน integer ของเลขหนึ่งพันหน่วยออกมาเก็บไว้ แล้วเอามาเปรียบเทียบ จะใช้เวลา 0.26 วินาที ลดเวลาในการคำนวนลงไปได้ประมาณ 30% เลยครับ
@STGSafe
ชัดเจน: 2/3 สร้างสรรค์: 2/3 กระชับ 1/3 ความเร็ว 1/3
Comment: สามารถตัดบรรทัดที่ 13 ออกไปแล้วเอา print() มาไว้นอก loop ได้ครับ
@Akira
ชัดเจน: 2/3 สร้างสรรค์: 2/3 กระชับ 1/3 ความเร็ว 2/3
Comment: ดีครับ แต่ผมว่าถ้าใช้คำเต็มๆ เช่น thousand แทน thsnd จะอ่านเข้าใจง่ายกว่านี้ครับ
@IMPREM
ชัดเจน: 1/3 สร้างสรรค์: 2/3 กระชับ 1/3 ความเร็ว 2/3
Comment: ไม่ชอบ while True ครับ ควรเป็น while fibnew <= 10**999 ไปเลย