การแสดงทศนิยมที่แม่นยำสองเท่าสามารถรับประกันความถูกต้องของตำแหน่งทศนิยม 15 ตำแหน่งเท่านั้นดังนั้น pi จึงประมาณเป็น:
3.141592653589793
คุณจะเห็นว่าตัวเลข3
อยู่ในตำแหน่ง1, 10, 16
ตัวเลข1
อยู่ในตำแหน่ง2, 4
อื่น ๆ
ท้าทาย
งานของคุณคือการสร้างโปรแกรมหรือฟังก์ชั่นที่สร้างตัวเลขสองเท่าแบบสุ่มระหว่าง 0 ถึง 1 และจับคู่ค่าของตัวเลขนั้นกับค่าของ pi คุณทำได้โดยการวางตัวเลขที่แตกต่างกันในตัวเลขสุ่มในตำแหน่งที่ตัวเลขนั้นมีหน่วยเป็นปี่ x
ถ้าหลักไม่พบในปี่คุณจะข้ามมันและหลักในปี่ทุกคนที่ไม่ได้อยู่ในจำนวนสุ่มจะถูกแทนด้วย แต่ละค่าสามารถใช้ได้เพียงครั้งเดียวโดยเริ่มจากด้านซ้าย
ตัวอย่างบางส่วนอาจทำให้เรื่องนี้ชัดเจนยิ่งขึ้น ในตัวอย่างต่อไปนี้หมายเลขแรกคือ pi ที่สองคือหมายเลขสุ่มและสุดท้ายคือผลลัพธ์ที่ต้องการ
3.141592653589793
0.111111111111111
x.1x1xxxxxxxxxxxx
3.141592653589793
0.531000000000000
3.1xx5xxxxxxxxxxx
3.141592653589793
0.123456789123456
3.141592653x8x7xx
3.141592653589793
0.967552381459391
3.14159265358979x
กฎ:
- ฟังก์ชั่นไม่ควรรับอินพุตใด ๆ (มีข้อยกเว้นที่เป็นไปได้อธิบายไว้ในหัวข้อย่อย 3)
- การส่งออกจะต้องประกอบด้วยเพียงสตริงการส่งออกที่มีการขึ้นบรรทัดใหม่ตัวเลือก (ยอมรับพื้นที่ต่อท้ายเดียว)
- หากโปรแกรมของคุณไม่มีค่า Pi ในตัวและ / หรือ RNG คุณสามารถ hardcode Pi และนำตัวเลขสุ่มเป็นอินพุต คุณไม่สามารถ hardcode หมายเลขสุ่มหรือใช้ Pi เป็นอินพุตได้
- ทั้งค่าฮาร์ดโค้ดสำหรับ Pi และตัวเลขสุ่ม 15 หลัก (คุณสามารถข้ามได้
0.
เนื่องจากคุณรู้ว่ามันจะอยู่ระหว่าง 0 ถึง 1) จะรวมอยู่ในการนับไบต์ - หากภาษาของคุณไม่มีความแม่นยำที่ต้องการคุณสามารถใช้ความแม่นยำน้อยลงภายใต้ข้อ จำกัด ต่อไปนี้
- ตัวเลขของ Pi ต้องแม่นยำขึ้นอยู่กับความแม่นยำที่คุณมี
- คุณไม่สามารถส่งออกค่ามากกว่าที่คุณรับประกันได้ว่าถูกต้องเช่นคุณไม่สามารถส่งออก 15 หลักหากความแม่นยำอนุญาตให้ใช้ทศนิยม 8 ตำแหน่งที่แม่นยำเท่านั้น
- ค่า hardcoded ของ Pi จะนับเป็น 16 ไบต์ (คุณไม่จำเป็นต้องมีจุดทศนิยม) แม้ว่าโปรแกรมของคุณรองรับเฉพาะตัวเลข 8 หลัก
- ค่าที่ป้อนสำหรับหมายเลขสุ่มจะนับเป็น 15 ไบต์ (คุณไม่ต้องการ
0.
) เนื่องจากภาษาที่มีความแม่นยำต่ำไม่ควรมีข้อได้เปรียบที่ไม่เป็นธรรม - โปรแกรมต้องรองรับความแม่นยำ 5 ทศนิยม (อย่างน้อย)
- แก้ไข: เพื่อตรวจสอบความถูกต้องของคำตอบ: หมายเลขสุ่มควรถูกพิมพ์อย่างใด แต่การดำเนินการนี้ไม่จำเป็นต้องรวมอยู่ในจำนวนไบต์ ตัวอย่างเช่นหากเป็นไปได้ที่จะแทรก a
print r
ในตอนท้ายของสคริปต์ส่วนนั้นจะไม่เพิ่มคะแนน - คุณไม่สามารถลบไบต์ได้หากเป็นส่วนหนึ่งของการดำเนินการอื่นที่จำเป็น เช่นถ้ารหัสเป็นแล้วคุณสามารถลบ
print pi, r
, r
- หากคุณต้องใส่ชิ้นส่วนหลายแห่งในรหัสโปรดใส่ทั้งสองเวอร์ชัน (อันที่พิมพ์หมายเลขสุ่มและอันที่ไม่มีความคิดเห็นเช่น:
_p
และ_oNo
จำเป็นต้องพิมพ์หมายเลขสุ่ม_p
ทำ xxx และ_oNo
ทำ yyy._p
และ_oNo
จะไม่รวมอยู่ในจำนวนไบต์
รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ
ลีดเดอร์บอร์ด
สแต็คส่วนย่อยที่ด้านล่างของโพสต์นี้สร้างแคตตาล็อกจากคำตอบ a) เป็นรายการคำตอบสั้นที่สุดต่อภาษาและ b) เป็นลีดเดอร์บอร์ดโดยรวม
เพื่อให้แน่ใจว่าคำตอบของคุณปรากฏขึ้นโปรดเริ่มคำตอบด้วยหัวข้อโดยใช้เทมเพลต Markdown ต่อไปนี้:
## Language Name, N bytes
ที่N
มีขนาดของส่งของคุณ หากคุณปรับปรุงคะแนนของคุณคุณสามารถเก็บคะแนนเก่าไว้ในบรรทัดแรกโดยการตีพวกเขาผ่าน ตัวอย่างเช่น
## Ruby, <s>104</s> <s>101</s> 96 bytes
หากคุณต้องการรวมหลายตัวเลขไว้ในส่วนหัวของคุณ (เช่นเนื่องจากคะแนนของคุณคือผลรวมของไฟล์สองไฟล์หรือคุณต้องการแสดงรายการบทลงโทษการตั้งค่าสถานะของล่ามแยกต่างหาก) ตรวจสอบให้แน่ใจว่าคะแนนจริงเป็นตัวเลขสุดท้ายในส่วนหัว:
## Perl, 43 + 2 (-p flag) = 45 bytes
คุณยังสามารถตั้งชื่อภาษาให้เป็นลิงค์ซึ่งจะปรากฏในตัวอย่างข้อมูล:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
0 < random < 1
หรือ0 <= random <= 1
?