นักฟิสิกส์ขี้เกียจมีหน้าที่ในการทำการทดลองสองช่อง อย่างไรก็ตามพวกเขาขี้เกียจและไม่สามารถใส่ใจในการตั้งค่าอุปกรณ์ทั้งหมดด้วยตัวเองและเพื่อจำลองผลกระทบ พวกเขาไม่สามารถตั้งโปรแกรมได้ดังนั้นจะต้องการความช่วยเหลือบ้าง โปรแกรมของคุณควรสั้นที่สุดเท่าที่จะเป็นไปได้
รับจำนวนเต็มบวกคี่n
( n >= 1
และn % 2 == 1
) ทำการจำลอง
มันทำงานอย่างไร
คุณจะเริ่มต้นด้วยผ้าใบที่ว่างเปล่าและแต่ละเฟรมจะมีแสงอนุภาคเดียวผ่านทะลุและลงบนผืนผ้าใบ อนุภาคจะตกลงมาถึงจุดสูงสุดโดยมีโอกาส:
n = 1
:
+-----+
| |
| 1/2 |
| |
+-----+
n = 3
:
+-----+ +-----+ +-----+
| | | | | |
| 1/4 | | 1/2 | | 1/4 |
| | | | | |
+-----+ +-----+ +-----+
n = 5
:
+-----+ +-----+ +-----+ +-----+ +-----+
| | | | | | | | | |
| 1/8 | | 1/4 | | 1/2 | | 1/4 | | 1/8 |
| | | | | | | | | |
+-----+ +-----+ +-----+ +-----+ +-----+
เป็นต้น
ตัวอย่างเช่นn=5
เราตรวจสอบกล่องกลางมีโอกาส 50% ที่จะตกลงไป ถ้ามันอยู่ท้ายเฟรมหากไม่เลื่อนไปยังอีกสองเฟรมถัดไปแสดงว่ามีโอกาส 25% ที่จะตกลงมา ถ้ามันอยู่ท้ายเฟรมหากไม่เลื่อนไปยังอีกสองเฟรมถัดไปแสดงว่ามีโอกาส 12.5% ที่จะตกลงไป หากไม่ตกไม่เป็นไรก็ยังเป็นจุดจบของเฟรม
มีความสับสนเกี่ยวกับวิธีการคำนวณโอกาสส่วนใหญ่เกิดจากคนที่คิดว่าพวกเขาเป็นความน่าจะเป็นที่ควรรวมถึง 1 เอาความคิดนั้นออกจากใจของคุณและควรทำให้ชัดเจนขึ้นเล็กน้อยสำหรับคุณ
- อย่างน้อยที่สุดหนึ่งอนุภาคจะลดลงต่อหนึ่งเฟรมซึ่งหมายความว่าอนุภาคอาจไม่ตกลงบนเฟรมนั้น
- อนุภาคสามารถแสดงด้วยอักขระที่พิมพ์ได้
- อนุภาคจะลงที่ใดก็ได้ในกล่องโดยมีโอกาสสุ่ม
- ความกว้างของกล่องควรเป็น
2n-1
ขนาดของผืนผ้าใบ ดังนั้นสำหรับn=5
พวกเขาควรเป็น1/9
ความกว้างของผืนผ้าใบ - ความสูงของกล่องควรเป็นความสูงของผืนผ้าใบ
- อนุภาคไม่ควรลงจอดด้านนอกของกล่องเลย
- หากอนุภาคได้ร่อนลง ณ จุดที่เลือกไว้แล้วไม่สำคัญว่าจะสามารถลงจอดได้อีก
- กล่อง ascii ด้านบนมีไว้เพื่อความชัดเจนไม่ควรดึงกล่อง
- คุณสามารถเลือกขนาดผ้าใบของคุณเองได้ตราบใดที่เหมาะสม ตัวอย่างเช่นจะต้องไม่สูงเพียงไม่กี่พิกเซล มันควรจะสามารถใส่กล่องทั้งหมดที่อยู่ในกล่องได้
- หากรหัสของคุณอยู่ระหว่างเฟรมคุณไม่จำเป็นต้องเพิ่มเข้าไปในจำนวนไบต์ของคุณ
ควรมีช่องว่างระหว่างค่าสูงสุดแต่ละค่าต่ำสุด ควรมีความกว้างเท่ากับกล่อง แต่จะไม่มีอนุภาคลงจอด ดูแผนภาพต่อไปนี้:
+---+---+---+---+---+
| | | | | |
|max|min|max|min|max|
| | | | | |
+---+---+---+---+---+
โปรแกรมควรทำงานจนกว่าจะหยุดด้วยตนเอง
กฎระเบียบ
- ตัวสร้างตัวเลขสุ่มหลอก (pRNG) นั้นใช้ได้
- ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
- ข้อมูลอาจถูกนำไปใช้ในรูปแบบที่เหมาะสม
- คุณควรส่งออกไปยัง STDOUT
- นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดชนะ
ตัวอย่าง
GIF n = 5
ต่อไปนี้เป็นตัวอย่างที่ใช้สำหรับ ฉันเพิ่งกระแทกมันอย่างรวดเร็วเพื่อโอกาสที่จะหลุดออกไปเล็กน้อย