I need to create a combination of sum of values closest to the target value. The combination needs to be of x numbers, where x is defined by the user. The algorithm will output the combination closest to a target value entered by the user. I also need to display the keys (values) that the algorithm returns.
Here is how I think the algorithm will work:
Target: 575
Values with corresponding keys:
150 [0] | 75 [1] | 123 [2] | 212 [3] | 23 [4] | 89 [5] | 20 [6]
77 [7] | 39 [8] | 16 [9] | 347 [10] | 512 [11] | 175 [12]
User wants Groups of: 5 values
The algorithm now runs combinations of sum of 5 values on the whole set and returns a sum of the values closest to the target value of 575
.
Result
150 [0] + 212 [3] + 23 [4] + 77 [7] + 89 [5] = 551
Keys used were 0, 3, 4, 7, and 5.
を使用できますArrays#combination(n)
が、キーを追跡することはできません。「キー」=>「int値」を格納するハッシュを思いつくことができましたが、ハッシュに格納された値を組み合わせる最適化されたアルゴリズムを思いつく方法がわかりません。
{0=>"150"}
{1=>"212"}
{2=>"23"}
{3=>"77"}
{4=>"89"}
PS これは宿題ではありません。これは、履歴書に記載し、面接で話し、自分のアイデアをコードに変換する方法を学ぶための個人的なプロジェクトです。