「モジュール:Math」の版間の差分
ナビゲーションに移動
検索に移動
保護ページ編集依頼 による: モジュール:Math/sandbox 2016年3月30日 (水) 12:11 (UTC) の版から複製
template>Rxy 細 (「モジュール:Math」を保護しました: 影響が特に大きいテンプレート: 現時点で 124149 ページからの読み込み ([編集=管理者のみに許可] (無期限) [移動=管理者のみに許可] (無期限))) |
preffff>Frozen-mikan (保護ページ編集依頼 による: モジュール:Math/sandbox 2016年3月30日 (水) 12:11 (UTC) の版から複製) |
||
49行目: | 49行目: | ||
end | end | ||
local function | local function fold(func, ...) | ||
-- Use a function on all supplied arguments, and return the result. The function must accept two numbers as parameters, | -- Use a function on all supplied arguments, and return the result. The function must accept two numbers as parameters, | ||
-- and must return a number as an output. This number is then supplied as input to the next function call. | -- and must return a number as an output. This number is then supplied as input to the next function call. | ||
63行目: | 63行目: | ||
end | end | ||
return ret, count | return ret, count | ||
end | |||
--[[ | |||
Fold arguments by selectively choosing values (func should return when to choose the current "dominant" value). | |||
]] | |||
local function binary_fold(func, ...) | |||
local value = fold((function(a, b) if func(a, b) then return a else return b end end), ...) | |||
return value | |||
end | end | ||
190行目: | 198行目: | ||
return result | return result | ||
end | end | ||
--[[ | --[[ | ||
207行目: | 216行目: | ||
function p._max(...) | function p._max(...) | ||
local function | local max_value = binary_fold((function(a, b) return a > b end), ...) | ||
if max_value then | if max_value then | ||
return max_value | return max_value | ||
239行目: | 241行目: | ||
function p._min(...) | function p._min(...) | ||
local function | local min_value = binary_fold((function(a, b) return a < b end), ...) | ||
if min_value then | if min_value then | ||
return min_value | return min_value | ||
270行目: | 265行目: | ||
function p._average(...) | function p._average(...) | ||
local function | local sum, count = fold((function(a, b) return a + b end), ...) | ||
if not sum then | if not sum then | ||
return 0 | return 0 | ||
362行目: | 354行目: | ||
return oldr | return oldr | ||
end | end | ||
local result, count = | local result, count = fold(findGcd, ...) | ||
return result | return result | ||
end | end |