「モジュール:数学」の版間の差分
ナビゲーションに移動
検索に移動
細編集の要約なし |
編集の要約なし |
||
(同じ利用者による、間の7版が非表示) | |||
1行目: | 1行目: | ||
local p = {} | local p = {} | ||
function p.getLmc( | function p.getLmc(frame) --2数の最小公倍数を求める関数 | ||
local num1 = tonumber(frame.args[1]) | |||
local num2 = tonumber(frame.args[2]) | |||
if num1 and num2 then | |||
if num1 == 0 or num2 == 0 then | if num1 == 0 or num2 == 0 then | ||
return 0 | return 0 | ||
9行目: | 11行目: | ||
return num1 | return num1 | ||
end | end | ||
a | local a = 1 | ||
while num1 ~= num2 do | local b = 1 | ||
while a*num1 ~= b*num2 do | |||
if a*num1 > b*num2 then | if a*num1 > b*num2 then | ||
b = b + 1 | b = b + 1 | ||
17行目: | 20行目: | ||
end | end | ||
end | end | ||
return num1 | return a*num1 | ||
else | else | ||
return "'''関数 getLmc: 引数には数値のみを入力してください。'''" | return "'''関数 getLmc: 引数には数値のみを入力してください。'''" | ||
end | end | ||
end | |||
function p.listTurples(frame) -- 第2引数以降に入力された有限桁の整数または小数からなる三つ組のうち、その要素の総和が第1引数に入力された有限桁の整数または小数となるようなものを列挙する関数 | |||
local ans = assert(tonumber(frame.args[1]), "答えを半角数字で指定してください。") | |||
local arr = {} | |||
local t = 2 | |||
while frame.args[t] do | |||
arr[t-1] = tonumber(frame.args[t]) | |||
t = t + 1 | |||
end | |||
local output = "" | |||
for i = 1, #arr - 2 do | |||
for j = i + 1, #arr - 1 do | |||
if i ~= j then | |||
local rest = ans - i - j | |||
for k = j + 1, #arr do | |||
if arr[k] == rest then | |||
output = output.."("..arr[i]..","..arr[j]..","..rest..")" | |||
end | |||
end | |||
end | |||
end | |||
end | |||
if output == "" then return "指定された条件に適する組はありません。" end | |||
return output | |||
end | |||
function p.sigma(frame) -- the sum of ([1] * k^2) + ([2] * k^1) + ([3] * k^0) as k goes from [4] to [5] | |||
local k2, k1, k0 = tonumber(frame.args[1]), tonumber(frame.args[2]), tonumber(frame.args[3]) | |||
local firstk, lastk = tonumber(frame.args[4]), tonumber(frame.args[5]) | |||
output = 0 | |||
for i = firstk, lastk do | |||
output = output + k2*i*i + k1*i + k0 | |||
end | |||
return output | |||
end | |||
function p.captalPi(frame) -- the product of ([1] * k^2) + ([2] * k^1) + ([3] * k^0) as k goes from [4] to [5] | |||
local k2, k1, k0 = tonumber(frame.args[1]), tonumber(frame.args[2]), tonumber(frame.args[3]) | |||
local firstk, lastk = tonumber(frame.args[4]), tonumber(frame.args[5]) | |||
output = 1 | |||
for i = firstk, lastk do | |||
output = output * (k2*i*i + k1*i + k0) | |||
end | |||
return output | |||
end | end | ||
return p | return p |
2年12月17日 (ゐ) 21:16時点における最新版
このモジュールについての説明文ページを モジュール:数学/doc に作成できます
local p = {}
function p.getLmc(frame) --2数の最小公倍数を求める関数
local num1 = tonumber(frame.args[1])
local num2 = tonumber(frame.args[2])
if num1 and num2 then
if num1 == 0 or num2 == 0 then
return 0
end
if num1 == num2 then
return num1
end
local a = 1
local b = 1
while a*num1 ~= b*num2 do
if a*num1 > b*num2 then
b = b + 1
else
a = a + 1
end
end
return a*num1
else
return "'''関数 getLmc: 引数には数値のみを入力してください。'''"
end
end
function p.listTurples(frame) -- 第2引数以降に入力された有限桁の整数または小数からなる三つ組のうち、その要素の総和が第1引数に入力された有限桁の整数または小数となるようなものを列挙する関数
local ans = assert(tonumber(frame.args[1]), "答えを半角数字で指定してください。")
local arr = {}
local t = 2
while frame.args[t] do
arr[t-1] = tonumber(frame.args[t])
t = t + 1
end
local output = ""
for i = 1, #arr - 2 do
for j = i + 1, #arr - 1 do
if i ~= j then
local rest = ans - i - j
for k = j + 1, #arr do
if arr[k] == rest then
output = output.."("..arr[i]..","..arr[j]..","..rest..")"
end
end
end
end
end
if output == "" then return "指定された条件に適する組はありません。" end
return output
end
function p.sigma(frame) -- the sum of ([1] * k^2) + ([2] * k^1) + ([3] * k^0) as k goes from [4] to [5]
local k2, k1, k0 = tonumber(frame.args[1]), tonumber(frame.args[2]), tonumber(frame.args[3])
local firstk, lastk = tonumber(frame.args[4]), tonumber(frame.args[5])
output = 0
for i = firstk, lastk do
output = output + k2*i*i + k1*i + k0
end
return output
end
function p.captalPi(frame) -- the product of ([1] * k^2) + ([2] * k^1) + ([3] * k^0) as k goes from [4] to [5]
local k2, k1, k0 = tonumber(frame.args[1]), tonumber(frame.args[2]), tonumber(frame.args[3])
local firstk, lastk = tonumber(frame.args[4]), tonumber(frame.args[5])
output = 1
for i = firstk, lastk do
output = output * (k2*i*i + k1*i + k0)
end
return output
end
return p