How can I find all the permutations of {a, b, c}
where a + b + c = n
?
For instance: if n = 3
the permutations I seel are:
Permutations[{3, 0, 0}]
Permutations[{2, 1, 0}]
{1, 1, 1}
How can I find all the permutations of {a, b, c}
where a + b + c = n
?
For instance: if n = 3
the permutations I seel are:
Permutations[{3, 0, 0}]
Permutations[{2, 1, 0}]
{1, 1, 1}
f[sum_, quant_] :=
Flatten[Permutations /@ IntegerPartitions[sum, {quant}, Range[0, sum]], 1]
f[3, 3] // Column
(*
{3,0,0}
{0,3,0}
{0,0,3}
{2,1,0}
{2,0,1}
{1,2,0}
{1,0,2}
{0,2,1}
{0,1,2}
{1,1,1}
*)
f[4, 2] // Column
(*
{4,0}
{0,4}
{3,1}
{1,3}
{2,2}
*)
f[sum_, quant_] := FrobeniusSolve[Array[1 &, quant], sum]
f[3, 3]
(*
{{0, 0, 3}, {0, 1, 2}, {0, 2, 1}, {0, 3, 0}, {1, 0, 2}, {1, 1, 1},
{1, 2, 0}, {2, 0, 1}, {2, 1, 0}, {3, 0, 0}}
*)
f[4, 2]
(* {{0, 4}, {1, 3}, {2, 2}, {3, 1}, {4, 0}} *)
ConstantArray[1, quant]
instead of Array[1 &, quant]
?
$\endgroup$
Commented
Mar 11, 2013 at 8:49
(* a crude way: lets assume we wish to find all the permutations of a list of three integers that add up to 4 *)
Select[Permutations[Flatten@ConstantArray[Range[0, 4], 3], {3}],
Plus @@ # == 4 &]