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