Brainfuck で 2 桁の平均を計算する方法は?
たとえば、2桁の数字が
2 3
あり、その平均は2.5
2 8
私たちが持っている
ので
5.0
これはどのように行うことができますか?
Brainfuck で 2 桁の平均を計算する方法は?
たとえば、2桁の数字が
2 3
あり、その平均は2.5
2 8
私たちが持っている
ので
5.0
これはどのように行うことができますか?
次のようなもの:
++>++++++++< this is input data
[<+>-] this adds the numbers
<[[->+<][->>+<<]] this does the calculation
アプローチは、2 つの数値の合計を均等に分配することです。均等に分散するとは、値の差が最大で 1 であることを意味します (浮動小数点数がないため、2.5 などを何らかの形で表す必要があります) 。これらの値を含む 2 つの隣接するセルができたら、それらを自由に使用してください (出力してから、各セルの数値を減らし、1 が残っている場合は ".5" を出力します)。
もちろん、上記のコードにはポインター エラーが含まれている可能性がありますが、開始とデバッグには十分なはずです。さらに、優れた効率的なソリューションが見られることを本当にうれしく思います。
より良い解決策:
,>, //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