質問: Pythonを使用して以下のようなアルゴリズムを実装したいです。 1. 5つの数字と+と-のみを用いて0に一番近い数字を返す関数 2. 8つの数字と+と-のみを用いて0に一番近い数字を作成したときの後方の4つの引数の絶対値 この遊びの基礎は、 5つの値もしくは8つの値で足し算と引き算を用いて0にすることです。 0に出来ない場合は、それに近い値を導出して欲しいです。 よく昔にやった、切符の4つの数字やナンバープレートでやった遊びの掛け算と割り算を禁止した遊びに似ていると思ってください。 例) 1. function(1, 2, 3, 4, 5) 1, 2, 3, 4, 5 が与えられているとき、 1-2+3+4-5 のときに+1で0に一番近い値を取ります。(もちろん、他の選択肢も存在する) 1. function(1, 2, 3, 4, 5, 6, 7, 8) 1, 2, 3, 4, 5, 6, 7, 8 が与えられているとき、 -1+2+3-4-5+6+7-8 のときは0である。 このとき、-5, +6, +7, -8 の絶対値は0であるのでこの結果を返す関数を作成。
回答: 「ぼくがかんがえたさいきょうのあるごりずむ」的には以下が実装されると良いと思います。 ・要するに +- の合計が同じであれば最小になるので、全体の合計の 1/2 に最も近くなる組み合わせを考えると良い ~~・半分の値からの取りうる範囲は、提示されている数字の最小値~~ ~~・解となる時の +- の差分のとり得る最大値は、与えられた数字の最小値~~ ・なんとなく、最大値を含んだ方の組み合わせをたぐるほうが、計算量が少なくて良さそう **追記** > > ・解となる時の +- の差分のとり得る最大値は、与えられた数字の最小値 > > > この条件は間違いですね^^;失礼。