/o
\i@/w].D:.t$Kq
ลองออนไลน์!
คำอธิบาย
/o
\i@/...
นี่เป็นเพียงกรอบสำหรับโปรแกรมทางคณิตศาสตร์อย่างง่ายที่มีทศนิยม I / O ...
เป็นโปรแกรมที่เกิดขึ้นจริงที่แล้วมีการป้อนข้อมูลในกองใบไม้และการส่งออกที่ด้านบนของสแต็ค
จริงๆแล้วอลิซมีโครงสร้างภายในเพื่อให้ได้ตัวประกอบจำนวนเต็ม (แม้จะมีคู่ไพร์ม - เอกซ์โพเนนต์) แต่ที่สั้นที่สุดที่ฉันใช้กับมันคือ 10 ไบต์ที่ยาวกว่านี้
แต่ความคิดที่ว่าเราซ้ำ ๆ แบ่งหนึ่งสำเนาของแต่ละปัจจัยสำคัญที่แตกต่างจากการป้อนข้อมูลจนกว่าจะถึง1 จำนวนขั้นตอนนี้ใช้เท่ากับเลขชี้กำลังที่ใหญ่ที่สุด เราจะใช้หัวเทปในฐานะตัวแปรตัวนับ
w Remember the current IP position. Effectively starts a loop.
] Move the tape head to the right, which increments our counter.
.D Duplicate the current value, and deduplicate its prime factors.
That means, we'll get a number which is the product of the value's
unique prime factors. For example 144 = 2^4 * 3^2 would become
6 = 2 * 3.
: Divide the value by its deduplicated version, which decrements the
exponents of its prime factors.
.t Duplicate the result and decrement it. This value becomes 0 once we
reach a result of 1, which is when we want to terminate the loop.
$K Jump back to the beginning of the loop if the previous value wasn't 0.
q Retrieve the tape head's position, i.e. the number of steps we've taken
through the above loop.