Module: HungarianAlgorithmC
- Defined in:
- lib/hungarian_algorithm_c.rb,
lib/hungarian_algorithm_c/version.rb,
ext/hungarian_algorithm_c/hungarian_algorithm_c.c
Constant Summary collapse
- VERSION =
'0.0.5'
Class Method Summary collapse
- .find_pairings(matrix) ⇒ Object
- .pairs ⇒ Object
- .rectangular?(matrix) ⇒ Boolean
- .validate!(matrix) ⇒ Object
- .value_capped_flattened_array(matrix) ⇒ Object
Class Method Details
.find_pairings(matrix) ⇒ Object
12 13 14 15 16 |
# File 'lib/hungarian_algorithm_c.rb', line 12 def find_pairings(matrix) validate!(matrix) array = value_capped_flattened_array(matrix) pairs(array, matrix.size) end |
.pairs ⇒ Object
11 |
# File 'ext/hungarian_algorithm_c/hungarian_algorithm_c.c', line 11
VALUE pairs(VALUE self, VALUE flattened_array_ruby, VALUE row_size_val);
|
.rectangular?(matrix) ⇒ Boolean
41 42 43 44 |
# File 'lib/hungarian_algorithm_c.rb', line 41 def rectangular?(matrix) row_size = matrix.size matrix.all? { |column| row_size == column.size } end |
.validate!(matrix) ⇒ Object
36 37 38 39 |
# File 'lib/hungarian_algorithm_c.rb', line 36 def validate!(matrix) return if rectangular?(matrix) raise ArgumentError.new('matrix must be rectangular') end |
.value_capped_flattened_array(matrix) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/hungarian_algorithm_c.rb', line 18 def value_capped_flattened_array(matrix) [].tap do |array| matrix.each do |row| row.each do |element| array << begin if element > LIMITS[:positive] LIMITS[:positive] elsif element < LIMITS[:negative] LIMITS[:negative] else element end end end end end end |