นักวิจัยได้ค้นพบอาณานิคมผึ้งที่น่าสนใจซึ่งอาศัยอยู่ในทุ่งรวงผึ้งที่ไม่มีที่สิ้นสุด:
แต่ละเซลล์สามารถเลี้ยงผึ้งได้หรือไม่ ในความเป็นจริงชีวิตของสิ่งมีชีวิตเหล่านั้นดูเหมือนจะวุ่นวาย ... สามารถคำนวณได้ว่าอาณานิคมจะเริ่มต้นด้วยรูปแบบต่อไปนี้เสมอ:
(ผึ้งวาดโดย เอ็มมานู Boutet ในวิกิพีเดีย . นี้ภาพรังผึ้งและผึ้งจึงออกภายใต้ CC-By-SA . grumbles )
หลังจากนั้นวงจรชีวิตของผึ้งจะถูกแบ่งออกเป็นรุ่นที่เรียกว่า ผึ้งเก่าแต่ละรุ่นตายและฟักใหม่และขึ้นอยู่กับเพื่อนบ้านของเซลล์เป็นหลัก:
- หากผึ้งมีเพื่อนบ้านน้อยกว่าสองคนมันจะตายเนื่องจากความเหงา
- หากผึ้งมีเพื่อนบ้านมากกว่าสามคนมันจะตายเนื่องจากความแออัด
- หากเซลล์มีผึ้งสองหรือสามหรือสี่ตัวในเซลล์ข้างเคียงผึ้งตัวใหม่จะฟักที่นั่นในรุ่นต่อไป
ผึ้งที่ตายจะไม่ตายจนกว่าจะถึงยุคสุดท้ายดังนั้นพวกมันจึงยังคงมีผลต่อเซลล์รอบข้างที่อาจฟักผึ้งในรุ่นต่อไป
ตอนนี้เรารู้แล้วว่าอาณานิคมเหล่านี้ทำงานอย่างไรเราสามารถจำลองมันได้หลายชั่วอายุคน
อินพุต
อินพุตเป็นหมายเลขเดียวNซึ่งถูกกำหนดให้กับอินพุตมาตรฐานถูกยกเลิกโดยตัวแบ่งบรรทัด 0 ≤ N ≤ 150 นี่คือจำนวนรุ่นที่จะจำลอง
เอาท์พุต
เอาท์พุทเป็นตัวเลขเดี่ยวในเอาต์พุตมาตรฐานและตามด้วยตัวแบ่งบรรทัดเดียวซึ่งแทนจำนวนผึ้งที่มีชีวิตหลังจาก รุ่นN
เอาต์พุตเพิ่มเติมเกี่ยวกับข้อผิดพลาดมาตรฐานจะถูกละเว้น
อินพุตตัวอย่าง
0
5
42
100
ตัวอย่างผลลัพธ์
6
44
1029
5296
สภาพการชนะ
รหัสที่สั้นที่สุดชนะเช่นเดียวกับในกอล์ฟ ในกรณีที่เสมอกันการแก้ปัญหาก่อนหน้านี้ชนะ
กรณีทดสอบ
มีสองสคริปต์ทดสอบที่มีกรณีทดสอบเหมือนกัน:
ภาวนาอยู่ในทั้งสองกรณี: <test script> <my program> [arguments]
เช่นหรือ./test ruby beehive.rb
./test.ps1 ./beehive.exe
ฉันรู้ว่ามีเพียง 22 การทดสอบแทน 151 (ส่วนใหญ่เป็นเพราะการแก้ปัญหามักจะค่อนข้างช้า) โปรดงดเว้นการฝังกรณีทดสอบที่แน่นอนแทนที่จะแก้ปัญหา สคริปต์เหล่านี้อำนวยความสะดวกให้คุณทดสอบว่าการเปลี่ยนแปลงยังทำให้โปรแกรมทำงานอย่างถูกต้องหรือไม่ ไม่ใช่ว่าคุณสามารถปรับรหัสของคุณกับกรณีทดสอบเฉพาะ
หมายเหตุอื่น
งานนี้เป็นส่วนหนึ่งของการแข่งขันกอล์ฟที่จัดขึ้นที่มหาวิทยาลัยของฉันในช่วงปี 2011-W24 คะแนนและภาษาของผู้แข่งขันของเรามีดังนี้:
- 336 - C
- 363 - C
- 387 - C
- 389 - Haskell
- 455 - C
ทางออกของเราคือ
- 230 - ทับทิม