Итак, я довольно новичок в Mathematica, и я стараюсь научиться решать проблемы функциональным способом. Проблема, которую я решала, заключалась в том, чтобы указать, как я мог бы суммировать элементы из списка (с повторениями), поэтому сумма равна leq до некоторого значения. Код ниже решает это просто отлично.Вариант резки в 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"]}]
Однако код проверка много случаев, ненужных, которые могли бы быть проблемой, если т выше список больше. Мой вопрос - это просто то, что было бы самым математическим способом решения этой проблемы, как эффективности, так и элегантности кода.
Не имеет смысла перекрестные ссылки здесь и на Mathematica.StackExchange - в основном те же люди в обоих местах, только большинство из нас переключилось на этот. –