Wolfram: List. Combinatorics

By Xah Lee. Date: . Last updated: .

Permutations

Permutations
  • Permutations[list] → all possible permutations
  • Permutations[list,n] → up to n elements
  • Permutations[list,{n}] → exactly n elements
Permutations[{a,b,c}]
(* {{a, b, c}, {a, c, b}, {b, a, c}, {b, c, a}, {c, a, b}, {c, b, a}} *)

(* HHHH------------------------------ *)

(* up to n elements *)
Permutations[{a,b,c},2]
(* {{}, {a}, {b}, {c}, {a, b}, {a, c}, {b, a}, {b, c}, {c, a}, {c, b}} *)

(* HHHH------------------------------ *)

(* exactly n elements *)
Permutations[{a,b,c},{2}]
(* {{a, b}, {a, c}, {b, a}, {b, c}, {c, a}, {c, b}} *)

Tuples

Tuples[ list, n]

return all possible n-tuples.

Tuples[ {1,2,3}, 2]
(* {{1, 1}, {1, 2}, {1, 3}, {2, 1}, {2, 2}, {2, 3}, {3, 1}, {3, 2}, {3, 3}} *)

Tuples[ {a,b}, 3]
(* {{a, a, a}, {a, a, b}, {a, b, a}, {a, b, b}, {b, a, a}, {b, a, b}, {b, b, a}, {b, b, b}} *)
Tuples[ {list1, list2, etc}]

Return all possible n-tuples. First element from list1, second element from list2, etc. aka Cartesian Product.

Tuples[{{1,2,3}, {a,b}}]
(* {{1, a}, {1, b}, {2, a}, {2, b}, {3, a}, {3, b}} *)
Tuples[ list, {n1,n2,etc}]

Return all possible array with dimension {n1,n2,etc} using elements in list1.

Tuples[{a,b}, {2,2}]
(* 
{
{{a, a}, {a, a}},
{{a, a}, {a, b}},
{{a, a}, {b, a}},
{{a, a}, {b, b}},
{{a, b}, {a, a}},
{{a, b}, {a, b}},
{{a, b}, {b, a}},
{{a, b}, {b, b}},
{{b, a}, {a, a}},
{{b, a}, {a, b}},
{{b, a}, {b, a}},
{{b, a}, {b, b}},
{{b, b}, {a, a}},
{{b, b}, {a, b}},
{{b, b}, {b, a}},
{{b, b}, {b, b}}
}
*)

Subsets

Subsets
  • Subsets[list] → all subsets.
  • Subsets[list, n] → max subset length n.
  • Subsets[list, {n}] → subset length exactly n.
  • Subsets[list, {n, m}] → subset length n to m.
  • Subsets[list, spec, s] → first s subsets.

list elements are treated as distinct

Subsets[{1,2,3}]
(* {{}, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}} *)

(* list elements are treated as distinct *)
Subsets[{2,2,2}]
(* {{}, {2}, {2}, {2}, {2, 2}, {2, 2}, {2, 2}, {2, 2, 2}} *)

(* HHHH------------------------------ *)
(* max length n in each subset. *)
Subsets[{1,2,3}, 2]
(* {{}, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}} *)

(* HHHH------------------------------ *)
(* exact length n in each subset. *)
Subsets[{1,2,3}, {2}]
(* {{1, 2}, {1, 3}, {2, 3}} *)

(* HHHH------------------------------ *)
(* length n to m in each subset. *)
Subsets[{1,2,3}, {2,3}]
(* {{1, 2}, {1, 3}, {2, 3}, {1, 2, 3}} *)

(* HHHH------------------------------ *)
(* just first 4 subsets. *)
Subsets[{1,2,3}, 2, 5]
(* {{}, {1}, {2}, {3}, {1, 2}} *)

Subsequences

Subsequences
  • Subsequences[list] → all subsequences
  • Subsequences[list,n] → subsequences containing at most n elements.
  • Subsequences[list,{n}] → subsequences of exactly n elements.
  • Subsequences[list,{nmin,nmax}] → subsequences between nmin and nmax elements.
  • Subsequences[list,nspec,s] → first s result.
  • Subsequences[list,nspec,{s}] → gives if possible the s ^(th) subsequence.
Subsequences[{1,2,3}]
(* {{}, {1}, {2}, {3}, {1, 2}, {2, 3}, {1, 2, 3}} *)

(* limit to max of length 2 ones *)
Subsequences[{1,2,3},2]
(* {{}, {1}, {2}, {3}, {1, 2}, {2, 3}} *)

(* exactly length 2 ones *)
Subsequences[{1,2,3}, {2}]
(* {{1, 2}, {2, 3}} *)

(* length 1 to 2 *)
Subsequences[{1,2,3}, {1,2}]
(* {{1}, {2}, {3}, {1, 2}, {2, 3}} *)

(* just first 4 items *)
Subsequences[{1,2,3}, {1,2}, 4]
(* {{1}, {2}, {3}, {1, 2}} *)

Groupings

Groupings
xtodo
Groupings[3, 2]
(* {{{1, 2}, 3}, {1, {2, 3}}} *)

Groupings[{1,2,3},2]
(* {{{1, 2}, 3}, {1, {2, 3}}} *)

Groupings[{{1,2,3}, {a,b,c}}, 2]
(* {{{1, 2}, 3}, {{a, b}, c}, {1, {2, 3}}, {a, {b, c}}} *)

Groupings[{1,2,3}, 2]
(* {{{1, 2}, 3}, {1, {2, 3}}} *)

Groupings[{a,b,c}, 2]
(* {{{a, b}, c}, {a, {b, c}}} *)

Wolfram. List Operations