Sha256: 33cc7f82916e8efd2b000a1740667446df12e01e22aa57917294e69a93223541

Contents?: true

Size: 774 Bytes

Versions: 4

Compression:

Stored size: 774 Bytes

Contents

require 'forwardable'

require 'cf_sim/control_field'
require 'cf_sim/control_field_set'

class CfSim::PointList
  extend Forwardable
  include Enumerable

  attr_reader :points
  def_delegators :@points, :clear, :each, :empty?, :hash, :size

  def initialize(*points)
    @points = points.flatten.freeze
  end

  def max_field_count
    @max_field_count ||= 3 * (points.length - 3) + 1
  end

  def creatable_field_count
    @creatable_field_count ||= points.combination(3).size
  end

  def creatable_fields
    @creatable_fields ||= CfSim::ControlFieldSet.new(points.combination(3).map { |a, b, c| CfSim::ControlField.new(a, b, c) })
  end

  def eql?(other)
    other.class == CfSim::PointList && @points == other.points
  end

  def ==(other)
    eql?(other)
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
cf_sim-1.1.2 lib/cf_sim/point_list.rb
cf_sim-1.1.1 lib/cf_sim/point_list.rb
cf_sim-1.1.0 lib/cf_sim/point_list.rb
cf_sim-1.0.0 lib/cf_sim/point_list.rb