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.callocif 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, kand initializes it to the lexicographically first combination.
Methods¶ ↑
-
GSL::Combination#init_first
This method initializes the combination
selfto the lexicographically first combination, i.e. (0,1,2,…,k-1).
-
GSL::Combination#init_last
This method initializes the combination
selfto 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
nparameter of the combinationself.
-
GSL::Combination#k
Returns the
kparameter of the combinationself.
-
GSL::Combination#data
Returns the vector of elements in the combination
self.
-
GSL::Combination#valid
This method checks that the combination
selfis valid. Thekelements 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
selfto the next combination in lexicographic order and returnsGSL::SUCCESS. If no further combinations are available it returnsGSL::FAILUREand leavesselfunmodified. 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
selfto the previous combination in lexicographic order, returningGSL::SUCCESS. If no previous combination is available it returnsGSL::FAILUREand leavesselfunmodified.
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