Pyth , 4 ไบต์
W
~O
ลองออนไลน์!
นี่เป็นพื้นฐานที่ใช้อัลกอริธึม:
Q←inputRepeat1.2.3.temp←QQ←unif{0,Q−1}Print(temp)Untiltemp=0
ในการแปล Pyth ให้เป็นอัลกอริทึมเราสามารถตรวจสอบความหมายของตัวละครแต่ละตัวได้เป็นส่วนใหญ่ เนื่องจาก Pyth ถูกเขียนด้วยสัญลักษณ์นำหน้า (เช่น* + 1 2 3
คือ(1 + 2) * 3
) เราสามารถเริ่มต้นจากด้านซ้ายและเติมอาร์กิวเมนต์ในขณะที่เราไป
W
เริ่มแบบดั้งเดิมขณะที่วนซ้ำ คำสั่งแรกหลังจากที่มันเป็นเงื่อนไขวงและคำสั่งที่สองหลังจากที่มันเป็นร่างกายห่วง หากคำสั่งที่สองว่างเปล่ามันจะกลายเป็นไม่เลือก ขณะนี้ใช้งานได้เหมือนกับ Python ในขณะนั้นดังนั้นจะประเมินจำนวนเต็มที่ไม่เป็นศูนย์เป็น True และศูนย์เป็นเท็จ
คำสั่งแรกหลังจากในขณะที่เริ่มต้นด้วยตัวอักษรขึ้นบรรทัดใหม่ สิ่งนี้สอดคล้องกับฟังก์ชั่น "การพิมพ์และส่งคืนพร้อมกับการขึ้นบรรทัดใหม่" ของ Pyth ใช้เวลาหนึ่งอาร์กิวเมนต์ซึ่งจะถูกพิมพ์แล้วและส่งกลับยังไม่ได้แก้ไข สิ่งนี้ช่วยให้เราสามารถพิมพ์ขั้นตอนกลางในขณะที่ดำเนินการตามที่จำเป็น
ข้อโต้แย้งที่ส่งผ่านไปยังฟังก์ชั่นการพิมพ์นี้เริ่มต้นด้วย~
ซึ่งเป็นบิตพิเศษ หากตัวละครทันทีหลังจาก~
เป็นตัวแปรมันจะใช้เวลาสองข้อโต้แย้งมิฉะนั้นจะใช้เวลาหนึ่ง เนื่องจากO
ไม่ใช่ตัวแปร~
จะใช้เพียงอาร์กิวเมนต์เดียวเท่านั้น ~
ฟังก์ชั่นบิตเช่น+=
ไม่อยู่ในภาษาเดิมหลายแม้ว่าผู้ประกอบการที่อยู่ใกล้ที่สุดจะเป็นผู้ประกอบการโพสต์เพิ่มขึ้นจาก++
C
คุณอาจจะรู้ว่าx++
จะเป็นเช่นใช้x
เป็นค่าในปัจจุบัน แต่หลังจากนั้นจะเป็นx
เป็นความคิดที่เหมือนกัน แต่วางนัยกับสิ่งที่ผลลัพธ์ของการโต้แย้งครั้งแรกคือ วิธีเลือกตัวแปรที่จะกำหนดให้กับจะได้รับการแก้ไขในภายหลังx+1
~
อาร์กิวเมนต์ของ~
มีที่O
ซึ่งเป็นเรื่องง่ายมาก เมื่ออาร์กิวเมนต์หนึ่งเป็นจำนวนเต็มO
จะส่งกลับค่าจาก 0 ถึงหนึ่งน้อยกว่าจำนวนเต็มที่สุ่มกัน
ตอนนี้คุณอาจสังเกตเห็นว่าO
ไม่มีข้อโต้แย้ง นี่ Pyth Q
ล่ามเติมความกรุณาในการคาดเดาซึ่งที่นี่เป็นตัวแปร Q
มีความหมายพิเศษใน Pyth: เมื่อใดก็ตามที่มีอยู่ในโปรแกรมโปรแกรม Pyth เริ่มต้นด้วยการกำหนดQ
ให้กับอินพุตของโปรแกรม เนื่องจากนี่เป็นตัวแปรแรกที่เกิดขึ้นใน~
อาร์กิวเมนต์ของQ
ตอนนี้ก็เป็นตัวแปรที่~
จะกำหนดค่าให้
สรุปโปรแกรม "ที่อ่านได้" ของเราอาจมีลักษณะดังนี้:
while print_and_return( assign_variable( Q, unif(0, Q-1) ) ):
pass
และตัวอย่างหนึ่ง "การเรียกใช้ผ่าน" อาจมีลักษณะดังนี้:
- Q = 5
O
ผลตอบแทน 3, ~
ผลตอบแทน 5, \n
ผลตอบแทนและพิมพ์ 5 ซึ่งเป็นความจริง
- Q = 3
O
ผลตอบแทน 0, ~
ผลตอบแทน 3, \n
ผลตอบแทนและพิมพ์ 3 ซึ่งเป็นความจริง
- Q = 0
O
ส่งคืนสิ่งที่ไม่เกี่ยวข้อง~
ส่งคืน 0 \n
ส่งคืนและพิมพ์ 0 ซึ่งเป็นเท็จ
- Q = สิ่งที่ไม่เกี่ยวข้อง
- ยุติ