combination ( m seq k -- seq' )


Vocabulary
math.combinatorics

Inputs and outputs
ma non-negative integer
seqa sequence
ka non-negative integer
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 iota 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
sequences.private ;

IN: math.combinatorics

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