วันพฤหัสบดีที่ 11 ตุลาคม พ.ศ. 2561

ครอบครัวกระต่าย

จากโจทย์ที่ได้รับมาคือ
มีกระต่าย 1 คู่
1 เดือนต่อมา กระต่ายจะโตพร้อมผสมพันธุ์
1 เดือนต่อมา กระต่ายจะออกลูก 1 คู่ ตัวผู้และตัวเมียอย่างละ 1 ตัว
เดือนต่อๆไปกระต่ายก็จะโตและออกลูกไปเรื่อยๆ
คำถามคือ...ในเดือนที่ 12 จะมีกระต่ายทั้งหมดกี่คู่

เดือนที่1  กระต่าย 1 คู่
เดือนที่2  กระต่าย 1 คู่
เดือนที่3  กระต่าย 2 คู่  ( คู่แรกออกลูก 1 คู่)
เดือนที่4  กระต่าย 3 คู่  (คู่แรกออกลูก 1 คู่ ลูกในเดือนที่แล้วโตพร้อมผสมพันธุ์)
เดือนที่4  กระต่าย 5 คู่  (คู่แรกออกลูก 1 คู่ ลูกในเดือนที่แล้วโตพร้อมผสมพันธุ์ ตัวพร้อมผสมพันธุ์                                                  ออกลูก 1 คู่ ลูกในเดือนที่แล้วโตพร้อมผสมพันธุ์)
เดือนที่5  กระต่าย 8 คู่  (ตัวเต็มวัยออกลูกคู่ละ 1 คู่ ลูกในเดือนที่แล้วโตพร้อมผสมพันธุ์ ตัวพร้อมผสม                                            พันธุ์ออกลูก 1 คู่ ลูกในเดือนที่แล้วโตพร้อมผสมพันธุ์)

จะเห็นได้ว่า การเพิ่มขึ้นของกระต่ายเป็นการเพิ่มแบบลำดับ fibonacci ทำให้เราสามารถเขียนโปรแกรมคำนวณจำนวณของกระต่ายได้ดังนี้

month = 12                     #จำนวนเดือนที่ต้องการนับจำนวนกระต่าย
# first two terms
rabb1 = 0                        #กระต่ายเริ่มต้น
rabb2 = 1                        #กระต่ายเดือนที่1
count = 0                        #จำนวนเดือนที่ผ่านไป
rabbit_month = []           #list ของจำนวนกระต่าย

while count < month :
    rabbit_month.append(rabb2)
    nowrabbit = rabb1 + rabb2
    # update values
    rabb1 = rabb2
    rabb2 = nowrabbit
    count += 1
print(rabbit_month)

ไม่มีความคิดเห็น:

แสดงความคิดเห็น