Module:Mediants: Difference between revisions
todo |
add sort function and convert-to-rational functions |
||
| Line 1: | Line 1: | ||
local rat = require("Module:Rational") | |||
local utils = require("Module:Utils") | local utils = require("Module:Utils") | ||
local p = {} | local p = {} | ||
-------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ||
| Line 22: | Line 19: | ||
end | end | ||
-- Given a ratio, return its simplified form | -- Given a ratio, return its simplified form. | ||
function p.simplify_ratio(ratio) | function p.simplify_ratio(ratio) | ||
local gcd = utils._gcd(ratio[1], ratio[2]) | local gcd = utils._gcd(ratio[1], ratio[2]) | ||
| Line 28: | Line 25: | ||
end | end | ||
-- Sort ratios in ascending order ( | -- Sort ratios in ascending order. Comparison function is built-in. | ||
function p.sort_ratios(ratios) | |||
table.sort(ratios, function(ratio_1, ratio_2) | |||
return ratio_1[1] / ratio_1[2] < ratio_2[1] / ratio_2[2] | |||
end | |||
) | |||
end | |||
-- | -- Given a single ratio, as a table of two numbers, convert to rational and | ||
-- return it. | |||
function p.to_rational(ratio) | |||
return rat.new(ratio[1], ratio[2]) | |||
end | |||
-- Given a table of ratios, each a table of two numbers, return an array of | |||
-- ratios in the form as defined by module:Rational. | |||
function p.to_rationals(ratios) | |||
local rats = {} | |||
for i = 1, #ratios do | |||
table.insert(rats, p.to_rational(ratios[i])) | |||
end | |||
return rats | |||
end | |||
-------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ||
| Line 196: | Line 213: | ||
function p.tester() | function p.tester() | ||
return p.find_only_mediants_by_int_limit() | --return p.find_only_mediants_by_int_limit() | ||
local ratios = {{4,3}, {5,1}, {3,2}} | |||
p.sort_ratios(ratios) | |||
return p.to_rationals(ratios) | |||
end | end | ||
return p | return p | ||