class Sperm::Groups::GroupsCollection
Represents collection of known cyclic groups that can be used for generating random permutations.
Constants
- DEFAULT
- DEFAULT_FILE
Public Class Methods
load_file(path)
click to toggle source
# File lib/sperm/groups/collection.rb, line 21 def self.load_file(path) array = YAML.load_file(path) isomorphisms = array.map { |hash| OpenStruct.new(hash) }.map do |group| add_group = ZnAdd.new(group.order_factors) mul_group = ZpMul.new(group.prime, group.generator) Isomorphism.new(add_group, mul_group) end new(isomorphisms) end
new(isomorphisms)
click to toggle source
# File lib/sperm/groups/collection.rb, line 13 def initialize(isomorphisms) @isomorphisms = isomorphisms.sort_by { |isomorphism| isomorphism.order } end
Public Instance Methods
find_suitable_isomorphism(order)
click to toggle source
# File lib/sperm/groups/collection.rb, line 17 def find_suitable_isomorphism(order) @isomorphisms.bsearch { |isomorphism| isomorphism.order >= order } end