combination ( m seq k -- seq' ) (original) (raw)

Vocabulary
math.combinatorics

Inputs

m a non-negative integer
seq a sequence
k a non-negative integer

Outputs

seq' a sequence

Word description
Outputs the mth lexicographical combination of seq choosing k elements.

Notes
Combinations are 0-based and a bounds error will be thrown if m is larger than seq length k nCk.

Examples

USING: math.combinatorics sequences prettyprint ; 6 7 4 combination .
{ 0 1 3 6 }

USING: math.combinatorics prettyprint ; 0 { "a" "b" "c" "d" } 2 combination .
{ "a" "b" }

Definition

USING: kernel math.combinatorics.private sequences ;

IN: math.combinatorics

: combination ( m seq k -- seq' )
swap [ length combination-indices ] [ nths-unsafe ] bi ;