brainfuck 中数字的绝对值
Absolute of number in brainfuck
你会如何在 brainfuck 中得到一个数字的绝对值?
我原本以为对数字 ([->+>+<<]>>[-<<+>>]<<[>[->+>+<<]>>[-<<+>>]<<<-]
) 求平方并求平方根会起作用,但我想不出求平方根的方法。
计算一个数的绝对值的一种方法是识别它的符号。如果您知道您的程序如何表示负数,reddit answer by /u/danielcristofani 解释说,为了检查数字的符号,您可以
double the number and see if it becomes zero in the process, e.g. with memory layout 0 0 x 0
, this should work, producing 0 f 0 0
where f
is the sign flag [>++[<]<[[-]+<+<]>>-]>[-]<
如有必要,您应该应用 x = -x
算法,例如 its wrapping version:
temp0[-]
x[temp0-x-]
temp0[x-temp0+]
你会如何在 brainfuck 中得到一个数字的绝对值?
我原本以为对数字 ([->+>+<<]>>[-<<+>>]<<[>[->+>+<<]>>[-<<+>>]<<<-]
) 求平方并求平方根会起作用,但我想不出求平方根的方法。
计算一个数的绝对值的一种方法是识别它的符号。如果您知道您的程序如何表示负数,reddit answer by /u/danielcristofani 解释说,为了检查数字的符号,您可以
double the number and see if it becomes zero in the process, e.g. with memory layout
0 0 x 0
, this should work, producing0 f 0 0
wheref
is the sign flag[>++[<]<[[-]+<+<]>>-]>[-]<
如有必要,您应该应用 x = -x
算法,例如 its wrapping version:
temp0[-] x[temp0-x-] temp0[x-temp0+]