RProgN , 142 ไบต์, ไม่ใช่การแข่งขัน
function tostack 'b' asoc stack 'a' asoc 0 'v' asoc b pop byte 'o' asoc b len while [ v o b pop byte ] 'o' asoc - + 'v' asoc b len end [ v end
ไม่ใช่การแข่งขันเนื่องจากคำสั่ง 'tostack' ถูกเพิ่มเข้ามาหลังจากการค้นพบความท้าทายนี้ (แม้ว่าจะมีจำนวนไบต์ที่แย่มาก)
กรณีทดสอบ
Hello, World!
-39
Cool, huh?
-4
คำอธิบาย
function # Push the function between this and end to the stack
tostack 'b' asoc # Convert the implicit input to a stack, associate it with 'b'
0 'v' asoc # Push 0 to the stack, associate it with 'v'
b pop byte 'o' asoc # Pop the top value of b (The end of the input), get the byte value, associate it with 'o'.
b len # Push the size of b to the stack
while [ # While the top of the stack is truthy, pop the top of the stack
v # Push v to the stack
o # Push o to the stack
b pop byte # Pop the top value of b, push the byte value of that to the stack
] 'o' asoc # Push a copy of the top of the stack, associate it with 'o'
- # Subtract the top of the stack from one underneith that, In this case, the old value of o and the byte.
+ # Sum the top of the stack and underneith that, that is, the difference of the old value and new, and the total value
'v' asoc # Associate it with 'v'
b len # Push the size of b to the stack (which acts as the conditional for the next itteration)
end [ # Pop the top of the stack, which will likely be the left over size of b
v # Push the value of v to the top of the stack
end # Implicitely returned / printed
RProgN เป็นภาษาที่ลึกลับที่ฉันเคยทำเกี่ยวกับ Reverse Polish Notation ตอนนี้มันค่อนข้างละเอียดด้วยการกำหนดตัวแปรเป็น 4 ตัวอักษรและอย่างไรก็ตามฉันวางแผนที่จะเพิ่มน้ำตาล syntatic ในอนาคต
นอกจากนี้ RProgN เข้าถึงอาร์กิวเมนต์จากสแต็กโดยปริยายและส่งคืนในลักษณะเดียวกัน ข้อมูลสตริงใด ๆ ที่เหลืออยู่ในสแต็กหลังจากโปรแกรมเสร็จสิ้นจะถูกพิมพ์โดยปริยาย