Module: Measurable::Minkowski
- Included in:
- Measurable
- Defined in:
- lib/measurable/minkowski.rb
Class Method Summary collapse
-
.extended(base) ⇒ Object
:nodoc:.
-
.included(base) ⇒ Object
:nodoc:.
Instance Method Summary collapse
-
#minkowski(u, v) ⇒ Object
call-seq: minkowski(u, v) -> Numeric.
Class Method Details
.extended(base) ⇒ Object
:nodoc:
27 28 29 30 31 32 33 |
# File 'lib/measurable/minkowski.rb', line 27 def self.extended(base) # :nodoc: base.instance_eval do alias :cityblock :minkowski alias :manhattan :minkowski end super end |
.included(base) ⇒ Object
:nodoc:
35 36 37 38 39 40 41 |
# File 'lib/measurable/minkowski.rb', line 35 def self.included(base) # :nodoc: base.class_eval do alias :cityblock :minkowski alias :manhattan :minkowski end super end |
Instance Method Details
#minkowski(u, v) ⇒ Object
call-seq:
minkowski(u, v) -> Numeric
Calculate the sum of the absolute value of the differences between each coordinate of u
and v
.
-
Arguments :
-
u
-> An array of Numeric objects. -
v
-> An array of Numeric objects.
-
-
Returns :
-
The Minkowski (or L1) distance between
u
andv
.
-
-
Raises :
-
ArgumentError
-> The sizes ofu
andv
don’t match.
-
18 19 20 21 22 23 24 25 |
# File 'lib/measurable/minkowski.rb', line 18 def minkowski(u, v) # TODO: Change this to a more specific, custom-made exception. raise ArgumentError if u.size != v.size u.zip(v).reduce(0) do |acc, elem| acc += (elem[0] - elem[1]).abs end end |