นี่คือคำนิยามภาษาที่ง่ายมาก:
A Variable is any string that does not contain ^, <, >, !, or ?
The empty string is a valid variable identifier
The value of every variable starts at 0.
A Statement is one of (var is a Variable, P is a Program):
var^ -> changes var to be equal to 1 more than itself
var<P> -> while var > 0, changes var to be equal to 1 less than itself, then runs P
var! -> output value of var
var? -> ask for non-negative integer as input, increase var by that value
A Program is a concatenation of Statements, running a Program means running each Statement in order
ตัวอย่างโปรแกรม (โปรดทราบว่าสตริงว่างเปล่าเป็นตัวแปร แต่ฉันจะใช้เท่าที่จำเป็นเพื่อความชัดเจนและตัวแปรบางตัวจะถูกทำให้เป็นศูนย์ในโปรแกรมเมื่อโดยปกติแล้วจะเป็น 0 ตามค่าเริ่มต้น):
<>: sets the value of the empty string variable to 0
b<>b?b<a^>: asks for b, then adds the value stored in b to a, zeroing b in the process
b<>b?a<>b<a^>: asks for b, then sets a to the value of b, zeroing b in the process
a<>c<>b<a^c^>c<b^> : copies the value in b into a without zeroing it
b<>c<>a<c^c^c<b^>>b! : outputs a multiplied by 2
b^b<a<>a?a!b^> : outputs what you input, forever
เป้าหมายของคุณคือการเขียนล่ามที่เล็กที่สุดสำหรับภาษานี้
ค่าของตัวแปรสามารถมีขนาดใหญ่โดยพลการและควรถูก จำกัด ด้วยหน่วยความจำทั้งหมดที่ภาษาของคุณเข้าถึงได้ในทางทฤษฎี แต่คุณจำเป็นต้องจัดการค่าสูงสุด 2 ^ 256 เท่านั้น
โปรแกรมของคุณควรจะสามารถจัดการกับโปรแกรมที่มีความยาวได้ตามทฤษฎี แต่คุณจะต้องทำงานกับโปรแกรมที่มีความยาว 2 ^ 32 ตัวอักษรเท่านั้น คุณต้องจัดการลูปที่ซ้อนกันของความลึกสูงสุด 2 ^ 32 เช่นกัน
คุณสามารถสมมติได้ว่าโปรแกรมนั้นเป็นโปรแกรมที่ถูกต้องและคุณจะได้รับจำนวนเต็มไม่เป็นลบเมื่อคุณขออินพุต คุณสามารถสันนิษฐานได้ว่ามีเพียงอักขระที่พิมพ์ได้ ASCII เท่านั้นที่รวมอยู่ในสตริงอินพุต
ความเร็วของโปรแกรมที่คุณตีความไม่สำคัญมันจะช้าลงอย่างเจ็บปวดสำหรับสิ่งต่าง ๆ ที่เรียบง่ายเท่ากับการคูณ 5 หลักโดยไม่มีการเพิ่มประสิทธิภาพ
หากคุณต้องการใช้ภาษาที่ไม่สามารถรับอินพุตได้อย่างสมเหตุสมผลหรือสร้างผลลัพธ์ตามวิธีที่อธิบายโดยภาษาให้ใช้การตีความที่คุณต้องการทำให้เป็นไปได้ สิ่งนี้ใช้กับเหตุผลใด ๆ ที่ภาษาของคุณใช้ไม่ได้ ฉันต้องการให้ทุกภาษาสามารถแข่งขันได้
โปรแกรมที่สั้นที่สุดชนะ ช่องโหว่มาตรฐานใช้