因此,我對Mathematica非常陌生,並且正在努力學習以功能性方式解決問題。我正在解決的問題是列出我可以從列表中總結元素的方式(帶有重複),因此總和等於某個值。下面的代碼解決了這個問題。Mathematica中的切削工具的變體
i = {7.25, 7.75, 15, 19, 22};
m = 22;
getSum[l_List, n_List] := Total[Thread[{l, n}] /. {x_, y_} -> x y];
t = Prepend[Map[Range[0, Floor[m/#]] &, i], List];
Outer @@ %;
Flatten[%, ArrayDepth[%] - 2];
Map[{#, getSum[i, #]} &, %];
DeleteCases[%, {_, x_} /; x > m || x == 0];
TableForm[Flatten /@ SortBy[%, Last], 0,
TableHeadings -> {None, Append[i, "Total"]}]
但是,代碼檢查了很多不必要的情況,如果m高於列表的較長時間,這可能是一個問題。我的問題僅僅是解決這個問題的最具Mathematica式的方式,涉及效率和代碼優化。
在這裏和Mathematica.StackExchange上交叉發佈沒有多大意義 - 兩個地方大多數人是同一個人,只有大部分人轉向那個人。 – 2013-03-06 12:08:35