Staq,72个字符
't't't't{aii*XX}$&iia$&ia$&a+XX+XX+|{mxx}{lxX}{k>?m!l}kkk&iiqi&ii*s*t|+:
示例运行:
Executing D:\codegolf\Staq\sjoelen codegolf.txt
3
5
4
3
70
Execution complete.
>
Staq有两个堆栈,一个为主动,一个为被动。该|
命令将主动堆栈切换为被动堆栈,反之亦然。
花括号之间的所有内容都定义了一个函数,左括号之后的第一个字母是函数名称,直到右括号之前的其余字母都是函数本身。可以覆盖函数,递归和嵌套函数。{aii}
将定义一个函数a,该函数将增加堆栈顶部两次。a
代码中的以下所有实例都将替换为ii
。
Staq prorams 内部的注释:
&
在堆栈顶部添加零,如果堆栈顶部为零,则[
指示指针跳转到相应的指针]
,x
删除堆栈上的最高值。因此,注释可以以以下形式写入代码&[here is a comment]x
说明(也是可执行的):
' &[input number]x
t &[copy top of active stack to passive stack]x
t't't &[input next three numbers and copy them to the passive stack]x
{aii*XX} &[define function a (increment twice, multiply the two topmost values, then delete the second value on the stack twice)]x
$ &[move top value to the bottom of the stack]x
&ii &[put zero on top of the stack, incremment twice]x
a &[function a]x
$&ia$&a
+ &[put sum of the two topmost values on top of the stack]x
XX &[delete second stack value, twice]x
+XX+
| &[switch active/passive stack]x
{mxx} &[define function m: delete two topmost stack values]x
{lxX} &[define function l: delete topmost stack value, then delete second value of remaining stack]x
{k>?m!l} &[define function k: boolean top > second value? put result on top of the stack, if top>0 then execute m, if top = 0 then execute l]x
kkk&ii
q &[put square of top value on top of the stack]x
i&ii
* &[multiply two topmost values and put result on top of the stack]x
s &[move bottom stack value to the top]x
*t|+
: &[output result]x
https://esolangs.org/wiki/Staq
该程序使用一个堆栈(最初是主动的)来计算2a + 3b + 4c + d,使用第二个堆栈(最初是被动的)来计算最小输入值的10倍。然后将两个结果汇总并显示。