Answers:
[sr[lr~rd0<x]dsxxk[39+]sa[58-]sb[d9<ad78<b48+anz0<p]dspxIP]sf
运行方式:
dc -e'[sr[lr~rd0<x]dsxxk[39+]sa[58-]sb[d9<ad78<b48+anz0<p]dspxIP]sf' -e'351837066319 31 lfx'
要么:
dc -f base.dc -e '351837066319 31 lfx'
说明:我们采用数字并基于堆栈。sr将基数保存在寄存器r中。递归函数[lr~rd0<x]dsxx将一个数字分解为TOSbase中的数字register r。第一个数字始终为0,通过k(设置精度,默认情况下也为0,因此等同于nop)从堆栈中删除。然后,递归函数[48+d57<ad122<banz0<p]dspx借助函数a([39+]sa)和b([58-]sb)输出ASCII中的每个数字。IP输出换行符。该函数存储在寄存器中f,并且可以由调用lfx。
如果愿意通过左下角路由程序的其他部分,则为53 + 46 = 99个字符。
11p01-\>:11g%\11g/:#v_$>:1+!#v_:45+`!#v_:75*`!#v_ v
^ < ^, $# +"0" < +"'" <-":"<
首先将要转换的数字放在堆栈上,然后是基数,然后从左上角向右输入此函数。将为您输出字符串(因为Befunge不支持字符串变量),并从底部$向下移动。需要(1,1)用于基数存储的单元格。
例如,将给定的示例放入351837066319输入并运行:
&56*1+ 11p01-\>:11g%\11g/:#v_$>:1+!#v_:45+`!#v_:75*`!#v_ v
^ < ^, $# +"0" < +"'" <-":"<
@
t =-> n,b {d = ?0 ..?9,?a ..?z,*?A ..?Z; s ='';(s = d [n%b] + s; n / = b)而n> 0; s}
空字符串为“ 0”,为95 89 82个字符:
t=->n,b,s=''{d=*?0..?9,*?a..?z,*?A..?Z;(s=d[n%b]+s;n/=b)while n>0;s.empty?? ?0: s}
Ruby 1.9-不幸的是,仅适用于基础36:
t=->n,b{n.to_s(b)}
]+[用的,。
f(){
dc<<<$2o$1p|perl -pe"y/A-Z/a-z/;s/ \d+/chr$&+($&<10?48:$&<36?87:29)/ge"
}
sysconf(_SC_BC_BASE_MAX)在我的系统上返回99,最低要求是16。
dc代替来节省一些基本转换费用bc。