Combinations¶ ↑
Contents:
Combination allocation¶ ↑
-
GSL::Combination.alloc(n, k)
These create a new combination with parameters
n, k
. The combination is not initialized and its elements are undefined. Use the methodGSL::Combination.calloc
if you want to create a combination which is initialized to the lexicographically first combination.
-
GSL::Combination.calloc(n, k)
This creates a new combination with parameters
n, k
and initializes it to the lexicographically first combination.
Methods¶ ↑
-
GSL::Combination#init_first
This method initializes the combination
self
to the lexicographically first combination, i.e. (0,1,2,…,k-1).
-
GSL::Combination#init_last
This method initializes the combination
self
to the lexicographically last combination, i.e. (n-k,n-k+1,…,n-1).
Accessing combination elements¶ ↑
-
GSL::Combination#get(i)
-
GSL::Combination#[i]
This returns the value of the
i
-th element of the combinationself
.
Combination properties¶ ↑
-
GSL::Combination#n
Returns the
n
parameter of the combinationself
.
-
GSL::Combination#k
Returns the
k
parameter of the combinationself
.
-
GSL::Combination#data
Returns the vector of elements in the combination
self
.
-
GSL::Combination#valid
This method checks that the combination
self
is valid. Thek
elements should contain numbers from range 0 .. n-1, each number at most once. The numbers have to be in increasing order.
-
GSL::Combination#valid?
Thie returns true if the combination is valid, and false otherwise.
Combination functions¶ ↑
-
GSL::Combination#next
This method advances the combination
self
to the next combination in lexicographic order and returnsGSL::SUCCESS
. If no further combinations are available it returnsGSL::FAILURE
and leavesself
unmodified. Starting with the first combination and repeatedly applying this function will iterate through all possible combinations of a given order.
-
GSL::Combination#prev
This method steps backwards from the combination
self
to the previous combination in lexicographic order, returningGSL::SUCCESS
. If no previous combination is available it returnsGSL::FAILURE
and leavesself
unmodified.
Reading and writing combinations¶ ↑
-
GSL::Combination#fwrite(filename)
-
GSL::Combination#fwrite(io)
-
GSL::Combination#fread(filename)
-
GSL::Combination#fread(io)
-
GSL::Combination#fprintf(filename, format = “%u”)
-
GSL::Combination#fprintf(io, format = “%u”)
-
GSL::Combination#fscanf(filename)
-
GSL::Combination#fscanf(io)
Example¶ ↑
#!/usr/bin/env ruby require("gsl") printf("All subsets of {0,1,2,3} by size:\n") ; for i in 0...4 do c = GSL::Combination.calloc(4, i); begin printf("{"); c.fprintf(STDOUT, " %u"); printf(" }\n"); end while c.next == GSL::SUCCESS end