4

如何用brainfuck计算2位数的平均值?

我的意思是我有两位数,例如 2 3 ,它的平均值是2.5

因为 2 8 我们有 5.0

如何才能做到这一点?

4

2 回答 2

2

类似于以下内容:

++>++++++++< this is input data
[<+>-] this adds the numbers
<[[->+<][->>+<<]] this does the calculation

方法是平均分配两个数字的总和。通过均匀分布,我的意思是值之间的差异最多为 1(因为没有浮点数,您必须以某种方式表示例如 2.5)。一旦你有两个包含这些值的相邻单元格,你可以随意对它们做任何你想做的事情(你可以输出它,然后减少每个单元格的数字,如果你剩下 1,那么输出“.5”给它)。

当然,上面的代码可能有指针错误,但应该足够启动和调试了。此外,我真的很高兴看到一个好的、有效的解决方案。

于 2011-06-01T15:56:28.040 回答
1

更好的解决方案:

,>,                               //input 1 and 2
>++++++[-<--------<-------->>]<<  //decrement both by 48
[->+<]>>++<                       //add them and then put 2 in the third cell(devisor)
[                                 // ... 
>[->+>+<<]
>[-<<-
[>]>>>[<[>>>-<<<[-]]>>]<<]        //integer division (4/2 = 2, 3/2 = 1...)
>>>+ 
<<[-<<+>>] 
<<<]
>[-]>>>>[-<<<<<+>>>>>]            //...
<<<<++++++[-<++++++++>]<.         //increment 28 and print result
于 2012-08-13T15:47:45.403 回答