จากความท้าทายที่เกี่ยวข้องกับ FizzBuzz จำนวนมาก (สองรายการ) ที่โพสต์เมื่อเร็ว ๆ นี้ทาง PPCG ฉันถูกล่อลวงให้คิดหาตัวเอง ดูเถิด ...
Fizz Buzz Lightyear
เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้เป็นจำนวนเต็มnและพิมพ์ออกมาFizzBuzzสำหรับหารจำนวนใด ๆ โดย 15 Fizzสำหรับหารจำนวนใด ๆ โดย 3 และBuzzสำหรับหารจำนวนใด ๆ โดย 5 ขึ้นไป n(และรวม) เอาต์พุตสำหรับทุกคนiจะต้องตามด้วยการขึ้นบรรทัดใหม่ แต่มีการบิด!
ทุกครั้งที่คุณพิมพ์งานBuzzBuzz Lightyear ในท้ายที่สุดจะได้รับสายเรียกเข้าและข้อผิดพลาดในโปรแกรมของคุณ จากนั้นเขาก็แนะนำตัวเอง - แต่เนื่องจากเขาชนพื้นดินสิ่งที่เขาพูดบางอย่างปะปนกับเอาท์พุทของโปรแกรมของคุณ:
Buzz Lightyear, Space Ranger, Universe Protection Unit.
FizzBuzz Lightyear, Space Ranger, Universe Protection Unit.
(นั่นคือเพียงผนวก Lightyear, Space Ranger, Universe Protection Unit.ไปBuzzหรือFizzBuzz- สิ่งที่เป็นคุณจะมีการแสดงมิฉะนั้นหมายเหตุพื้นที่ชั้นนำ.)
แต่เสียงพึมพำ Lightyear, เป็นเรนเจอร์พื้นที่เขาเป็นมีการได้ยินเฉียบพลันมากและเพื่อให้การพิมพ์FizzBuzzจะนับของคุณBuzzนับ
จากนั้น Buzz แขวนรอบเพื่อปกป้องคอมพิวเตอร์ของคุณจากผลลัพธ์ที่ชั่วร้ายทั้งหมดจนกว่าคุณจะกดหมายเลขอื่นที่หารด้วย 5 (หรือ 15 เนื่องจากตัวเลขเหล่านั้นหารด้วย 5 ด้วย) หมายความว่าจนกว่าคุณจะต้องพิมพ์Buzz(หรือFizzBuzz) อีกครั้งคุณจะไม่พิมพ์อะไรเลย
ในที่สุดเมื่อคุณถึงสภาพที่เหมาะสม Buzz จะออก:
To infinity and beyond!
ตัวอย่างผลลัพธ์
นี่คือผลลัพธ์ที่คาดไว้สำหรับn = 25: (สังเกตว่ามันข้าม 16 ถึง 19)
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz Lightyear, Space Ranger, Universe Protection Unit.
To infinity and beyond!
Fizz
22
23
Fizz
Buzz
กฎระเบียบ
ขึ้นบรรทัดใหม่ที่เป็นตัวเลือกยอมรับได้
นี่คือรหัสกอล์ฟ เช่นรหัสสั้นที่สุดในไบต์ชนะ
สมมติให้nถูกต้องและมีค่ามากกว่าหรือเท่ากับ 15 (ซึ่งเป็นเมื่อความท้าทายครั้งแรกเบี่ยงเบนจาก fizzbuzz มาตรฐาน)
Buzz ทักทายคุณเมื่อ "ตัวนับ Buzz" (ซึ่งนับทั้งคู่BuzzและFizzBuzz) ฮิต 3; เขาออกเดินทางเมื่อมีการพิมพ์ถัดไปBuzz(รวมถึงอีกครั้งทั้งสองBuzzและFizzBuzz)
หมายเลขที่เขาออกจะไม่นับรวมใน "Buzz counter" ถัดไป คุณควรเริ่มนับBuzzes อีกครั้งจาก 0 ตัวอย่างเช่นโปรแกรมที่ทำงานด้วยn = 25(ตัวอย่างเอาต์พุต) ควรลงท้ายด้วย "Buzz counter" 1 ซึ่งเป็นจำนวนครั้งที่Buzzพิมพ์นับตั้งแต่ครั้งสุดท้ายที่เขาจากไป
ในกรณีที่nอยู่ระหว่างหนึ่งในการมาถึงของ Buzz และหนึ่งในการออกเดินทางของเขา (เช่นเขายังคงอยู่ที่นั่น - คุณไม่ได้พิมพ์อะไร) คาดว่าจะยุติอย่างสง่างาม ดังนั้นบรรทัดสุดท้ายของเอาต์พุตจะเป็นการแนะนำของเขา
ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
nอยู่ระหว่างการมาถึงของ Buzz Lightyear และการจากไปของเขา?