Class: KnapsackSolver::Dataset
- Inherits:
-
Object
- Object
- KnapsackSolver::Dataset
- Defined in:
- lib/knapsack_solver/dataset.rb
Overview
This class represents a set of 0/1 knapsack problem instances.
Instance Attribute Summary collapse
-
#id ⇒ Object
readonly
Returns the value of attribute id.
-
#instances ⇒ Object
readonly
Returns the value of attribute instances.
Class Method Summary collapse
-
.parse(stream) ⇒ Dataset
Parses set of a 0/1 knapsack problem instances from a character stream.
-
.parse_id(stream) ⇒ Integer
Parses ID of a 0/1 knapsack problem dataset from a character stream.
Instance Method Summary collapse
-
#initialize(id, instances) ⇒ Dataset
constructor
Initializes set of 0/1 knapsack problem instances.
Constructor Details
#initialize(id, instances) ⇒ Dataset
Initializes set of 0/1 knapsack problem instances.
10 11 12 13 |
# File 'lib/knapsack_solver/dataset.rb', line 10 def initialize(id, instances) @id = id @instances = instances end |
Instance Attribute Details
#id ⇒ Object (readonly)
Returns the value of attribute id.
42 43 44 |
# File 'lib/knapsack_solver/dataset.rb', line 42 def id @id end |
#instances ⇒ Object (readonly)
Returns the value of attribute instances.
42 43 44 |
# File 'lib/knapsack_solver/dataset.rb', line 42 def instances @instances end |
Class Method Details
.parse(stream) ⇒ Dataset
Parses set of a 0/1 knapsack problem instances from a character stream.
19 20 21 22 23 24 |
# File 'lib/knapsack_solver/dataset.rb', line 19 def self.parse(stream) id = parse_id(stream) instances = stream.each_line.with_object([]) { |l, o| o << Instance.parse(l) } raise StandardError, 'dataset: missing instances' if instances.empty? Dataset.new(id, instances) end |
.parse_id(stream) ⇒ Integer
Parses ID of a 0/1 knapsack problem dataset from a character stream.
30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/knapsack_solver/dataset.rb', line 30 def self.parse_id(stream) raise StandardError, 'dataset: missing ID' if stream.eof? s = stream.readline.split raise StandardError, 'dataset: first line does not contain ID' if s.size != 1 begin raise StandardError, 'dataset: ID is negative' if Integer(s.first) < 0 rescue ArgumentError raise StandardError, 'dataset: ID is not an integer' end Integer(s.first) end |