不疑有他什么意思| 喉咙痰多是什么原因造成的| 什么是透析治疗| 什么是扁桃体| 鱼水之欢是什么意思| 猫牙米是什么米| 特效药是什么意思| 鸽子是什么意思| 自媒体是什么| 滢是什么意思| 宫外孕和宫内孕有什么区别| 扬是什么生肖| 一什么月牙| lop胎位是什么意思| 男生射精是什么感觉| 低压高吃什么食物好| 梅核气有什么症状| ecc是什么意思| 口腔溃疡是什么原因造成的| 山今读什么| 人死之前为什么会拉屎| 蜻蜓吃什么食物| 卯戌相合发生什么| 没有什么就没有发言权| 唇钉是干什么用的| 熟视无睹什么意思| 9月是什么星座的| 鸭子喜欢吃什么| 身上长癣是什么原因| 繁花似锦是什么意思| 吃什么对胰腺好| 一个马一个并念什么| 夺目的什么| 1952年属什么生肖| 中度肠化是什么意思| 干燥症是什么症状| 什么药补气血效果最好| 秋葵有什么营养价值| 河图洛书是什么意思| 流汗太多对身体有什么危害| 什么是结缔组织| 1997年出生的属什么| 婴儿便秘怎么办什么方法最有效| 葡萄籽有什么功效| dlco是医学上什么意思| 椰子和椰青有什么区别| 哺乳期能吃什么水果| 和风对什么| 猕猴桃对身体有什么好处| 肋骨骨折什么症状| sg是什么意思| 飞机为什么能飞上天| 喝什么茶养肝护肝最好| 腿经常抽筋是什么原因| 枸杞搭配什么喝最好| 氟哌噻吨美利曲辛片治什么病| 脾是干什么用的| 我行我素的人什么性格| 呼吸短促是什么原因| 老舍原名叫什么| 维生素d3和d2有什么区别| 做梦搬家是什么意思| 120是什么意思| 眩晕吃什么药好| 头皮发麻是什么原因| 秦皇岛是什么海| 合作医疗是什么| 空心菜什么人不能吃| 伤官格是什么意思| 1981年是什么年| 刻舟求剑的寓意是什么| 甲状腺激素是什么| hpv52阳性是什么意思| 正师级是什么军衔| 脚底起水泡是什么原因| 贫血吃什么维生素| 维生素e是什么| 第二天叫什么日| 拍大腿内侧有什么好处| 五月十四号是什么情人节| 花甲和什么不能一起吃| 苦瓜干泡水喝有什么功效| 小猫什么时候打疫苗| 拉红色的屎是什么原因| 啵啵是什么| k3是什么| 吃什么升血小板快| 为什么蚊子咬了会起包| 孕妇做唐筛是检查什么| 一声叹息是什么意思| 业力是什么意思| 粉尘螨是什么| 泡脚什么时候最佳时间| 梦见很多肉是什么意思| 什么药和酒一起吃必死| 苦口婆心是什么意思| 1994年五行属什么| 效果是什么意思| nac是什么| 什么样的大地| 静脉曲张有什么表现| 孩子出疹子应该注意什么| 7号来的月经什么时候是排卵期| 士加一笔是什么字| 腮腺炎不能吃什么| 笔触是什么意思| 胃有幽门螺旋杆菌是什么症状| 法国鳄鱼属于什么档次| 西酞普兰为什么早晨吃| 血红蛋白低吃什么可以补起来| 冰希黎香水什么档次| 舌头发黄是什么原因| 怀孕初期能吃什么不能吃什么| 直肠癌是什么原因引起的| 22点是什么时辰| 意欲何为是什么意思| 九宫是什么意思| 出汗有异味是什么原因| 一库是什么意思| 女性尿臭味重是什么病| 女性黄体期是什么意思| 过期药品是什么垃圾| 肺活量不足是什么症状| 辐射对人体有什么伤害| 下放是什么意思| 丝瓜和什么相克| 梦见别人受伤流血是什么预兆| 米酒和黄酒有什么区别| 尿渗透压低是什么原因| 尿黄是什么病| 查血压高挂什么科室| 护士学什么专业| 肠息肉是什么| 气血虚吃什么好| 弓加耳念什么| 胃打嗝是什么原因| 离婚都需要什么| 吃什么英语怎么说| 梦见媳妇出轨什么预兆| 常吃南瓜子有什么好处和坏处| 对联又称什么| 玄五行属什么| 什么金属最硬| 胸口疼是什么病的前兆| 黄姜长什么样图片| 转呼啦圈有什么好处| 故事情节是什么意思| 芦荟有什么好处| 梦到考试是什么意思| 大材小用是什么生肖| 梦见吃樱桃是什么意思| 蛇靠什么爬行| 理性是什么意思| 梦见钓了好多鱼是什么意思| 妇科臭氧治疗的作用是什么| 唇干是什么原因引起的| 线上考试是什么意思| 权衡利弊是什么意思| 目赤是什么意思| 得了性疾病有什么症状| 三个句号代表什么意思| 肺部积液吃什么药| 画蛇添足告诉我们什么道理| 张国立老婆叫什么名字| hdv是什么病毒| 深圳市长什么级别| 鱼的五行属什么| 正山小种是什么茶| 口干口苦是什么病| 左顾右盼的顾是什么意思| 吃猪肝补什么| 护士学什么专业| 甲钴胺不能和什么药一起服用| 协调什么意思| 扁桃体结石挂什么科| 吃山药有什么好处和坏处| 手上有湿疹是什么原因引起的| 7月20号什么星座| 真正的朋友是什么| pv是什么| 疣挂什么科| 什么是姑息治疗| 什么是幽门螺杆菌感染| 荔枝什么时候成熟| 经常手麻是什么原因引起的| 男生射精是什么感觉| 木耳菜是什么菜| 草莓的花是什么颜色| 再生障碍性贫血是什么病| 心阴虚吃什么中成药| 什么叫基因突变| 什么人不能吃鸡蛋| 猪肉炖什么好吃| 易孕体质是什么意思| 红色加绿色是什么颜色| 健康证什么时候可以办| 夜莺是什么鸟| 口契是什么字| 双鱼座的上升星座是什么| yair是什么牌子的空调| 梦见和妈妈吵架是什么意思| 右下腹疼痛挂什么科| 绿茶不能和什么一起吃| 手指甲紫色是什么原因| 艾草长什么样子图片| 粑粑是什么意思| 腰酸胀是什么原因男性| 脸油油的是什么原因| 杨梅用什么酒泡最好| mds是什么病| 吃什么升血小板快| 喆是什么意思| 小孩放臭屁是什么原因| bb粥指的是什么意思| 高血压和高血脂有什么区别| 产妇吃什么好| 5月8号是什么星座| 为什么会长丝状疣| 黑色素是什么| 生产周期是什么意思| hpv58阳性是什么意思| 桥本氏甲状腺炎吃什么药| 胃烧灼吃什么立马缓解| 张钧甯为什么读mi| 颈椎病有些什么症状| 药流后吃什么消炎药比较好| 清风明月是什么意思| 梦见打老婆是什么预兆| 金光是什么生肖| 吃什么能补血| 小孩摇头是什么原因| dic是什么病的简称| 紫癜是什么原因引起的| 七里香是什么| 尿气味重是什么原因| 低钾有什么症状和危害| 梦见走错路是什么意思| 梦见自己掉牙齿是什么征兆| 蛋黄吃多了有什么坏处| 摇花手是什么意思| 支气管炎吃什么药最好| 什么是猎奇| 针眼是什么原因引起的| 医学是什么| 情种是什么意思| 在家无聊可以干什么| 头痛到医院挂什么科| 稻谷什么时候成熟| 桃子有什么好处| 肌酐高是什么原因引起的| 脑梗什么原因导致的| 狗狗打喷嚏流鼻涕怎么办吃什么药| 福利院是干什么的| 慕名而来是什么意思| 脚抽筋是什么原因引起的| 梦见翻车是什么预兆| 皂基是什么| 五月初五是什么星座| 一直嗝气是什么原因| 蒲公英吃了有什么好处| 清关是什么意思| 一什么瓜地| 什么是盐| 老鹰代表什么生肖| 百度Jump to content

8124万元之后 临宇山人式的宋瓷审美转向我们?宋瓷

?????????? ??????
百度   针对“北京8分钟”参演要素多、创意过程复杂、排练关联度高的特点,北理工虚拟视觉团队利用影视虚拟制作技术和数字表演与仿真技术,专门创新研发了文艺表演预演系统和训练彩排与数字验证系统。
--[[

This module provides a number of basic mathematical operations.

]]

local yesno, getArgs -- lazily initialized

local p = {} -- Holds functions to be returned from #invoke, and functions to make available to other Lua modules.
local wrap = {} -- Holds wrapper functions that process arguments from #invoke. These act as intemediary between functions meant for #invoke and functions meant for Lua.

--[[
Helper functions used to avoid redundant code.
]]

local function err(msg)
	-- Generates wikitext error messages.
	return mw.ustring.format('<strong class="error">Formatting error: %s</strong>', msg)
end

local function unpackNumberArgs(args)
	-- Returns an unpacked list of arguments specified with numerical keys.
	local ret = {}
	for k, v in pairs(args) do
		if type(k) == 'number' then
			table.insert(ret, v)
		end
	end
	return unpack(ret)
end

local function makeArgArray(...)
	-- Makes an array of arguments from a list of arguments that might include nils.
	local args = {...} -- Table of arguments. It might contain nils or non-number values, so we can't use ipairs.
	local nums = {} -- Stores the numbers of valid numerical arguments.
	local ret = {}
	for k, v in pairs(args) do
		v = p._cleanNumber(v)
		if v then
			nums[#nums + 1] = k
			args[k] = v
		end
	end
	table.sort(nums)
	for i, num in ipairs(nums) do
		ret[#ret + 1] = args[num]
	end
	return ret
end

local function fold(func, ...)
	-- 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.
	local vals = makeArgArray(...)
	local count = #vals -- The number of valid arguments
	if count == 0 then return
		-- Exit if we have no valid args, otherwise removing the first arg would cause an error.
		nil, 0
	end
	local ret = table.remove(vals, 1)
	for _, val in ipairs(vals) do
		ret = func(ret, val)
	end
	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

--[[
random

Generate a random number

Usage:
{{#invoke: Math | random }}
{{#invoke: Math | random | maximum value }}
{{#invoke: Math | random | minimum value | maximum value }}
]]

function wrap.random(args)
	local first = p._cleanNumber(args[1])
	local second = p._cleanNumber(args[2])
	return p._random(first, second)
end

function p._random(first, second)
	math.randomseed(mw.site.stats.edits + mw.site.stats.pages + os.time() + math.floor(os.clock() * 1000000000))
	-- math.random will throw an error if given an explicit nil parameter, so we need to use if statements to check the params.
	if first and second then
		if first <= second then -- math.random doesn't allow the first number to be greater than the second.
			return math.random(first, second)
		end
	elseif first then
		return math.random(first)
	else
		return math.random()
	end
end

--[[
order

Determine order of magnitude of a number

Usage:
{{#invoke: Math | order | value }}
]]

function wrap.order(args)
	local input_string = (args[1] or args.x or '0');
	local input_number = p._cleanNumber(input_string);
	if input_number == nil then
		return err('order of magnitude input appears non-numeric')
	else
		return p._order(input_number)
	end
end

function p._order(x)
	if x == 0 then return 0 end
	return math.floor(math.log10(math.abs(x)))
end

--[[
precision

Detemines the precision of a number using the string representation

Usage:
{{ #invoke: Math | precision | value }}
]]

function wrap.precision(args)
	local input_string = (args[1] or args.x or '0');
	local trap_fraction = args.check_fraction;
	local input_number;

	if not yesno then
		yesno = require('Module:Yesno')
	end
	if yesno(trap_fraction, true) then -- Returns true for all input except nil, false, "no", "n", "0" and a few others. See [[Module:Yesno]].
		local pos = string.find(input_string, '/', 1, true);
		if pos ~= nil then
			if string.find(input_string, '/', pos + 1, true) == nil then
				local denominator = string.sub(input_string, pos+1, -1);
				local denom_value = tonumber(denominator);
				if denom_value ~= nil then
					return math.log10(denom_value);
				end
			end
		end
	end

	input_number, input_string = p._cleanNumber(input_string);
	if input_string == nil then
		return err('precision input appears non-numeric')
	else
		return p._precision(input_string)
	end
end

function p._precision(x)
	if type(x) == 'number' then
		x = tostring(x)
	end
	x = string.upper(x)

	local decimal = x:find('%.')
	local exponent_pos = x:find('E')
	local result = 0;

	if exponent_pos ~= nil then
		local exponent = string.sub(x, exponent_pos + 1)
		x = string.sub(x, 1, exponent_pos - 1)
		result = result - tonumber(exponent)
	end

	if decimal ~= nil then
		result = result + string.len(x) - decimal
		return result
	end

	local pos = string.len(x);
	while x:byte(pos) == string.byte('0') do
		pos = pos - 1
		result = result - 1
		if pos <= 0 then
			return 0
		end
	end

	return result
end


--[[
max

Finds the maximum argument

Usage:
{{#invoke:Math| max | value1 | value2 | ... }}

Note, any values that do not evaluate to numbers are ignored.
]]

function wrap.max(args)
	return p._max(unpackNumberArgs(args))
end

function p._max(...)
	local max_value = binary_fold((function(a, b) return a > b end), ...)
	if max_value then
		return max_value
	end
end

--[[
median

Find the median of set of numbers

Usage:
{{#invoke:Math | median | number1 | number2 | ...}}
OR
{{#invoke:Math | median }}
]]

function wrap.median(args)
	return p._median(unpackNumberArgs(args))
end

function p._median(...)
	local vals = makeArgArray(...)
	local count = #vals
	table.sort(vals)

	if count == 0 then
		return 0
	end

	if p._mod(count, 2) == 0 then
		return (vals[count/2] + vals[count/2+1])/2
	else
		return vals[math.ceil(count/2)]
	end
end

--[[
min

Finds the minimum argument

Usage:
{{#invoke:Math| min | value1 | value2 | ... }}
OR
{{#invoke:Math| min }}

When used with no arguments, it takes its input from the parent
frame.  Note, any values that do not evaluate to numbers are ignored.
]]

function wrap.min(args)
	return p._min(unpackNumberArgs(args))
end

function p._min(...)
	local min_value = binary_fold((function(a, b) return a < b end), ...)
	if min_value then
		return min_value
	end
end

--[[
sum

Finds the sum

Usage:
{{#invoke:Math| sum | value1 | value2 | ... }}
OR
{{#invoke:Math| sum }}

Note, any values that do not evaluate to numbers are ignored.
]]

function wrap.sum(args)
	return p._sum(unpackNumberArgs(args))
end

function p._sum(...)
	local sums, count = fold((function(a, b) return a + b end), ...)
	if not sums then
		return 0
	else
		return sums
	end
end

--[[
average

Finds the average

Usage:
{{#invoke:Math| average | value1 | value2 | ... }}
OR
{{#invoke:Math| average }}

Note, any values that do not evaluate to numbers are ignored.
]]

function wrap.average(args)
	return p._average(unpackNumberArgs(args))
end

function p._average(...)
	local sum, count = fold((function(a, b) return a + b end), ...)
	if not sum then
		return 0
	else
		return sum / count
	end
end

--[[
round

Rounds a number to specified precision

Usage:
{{#invoke:Math | round | value | precision }}

--]]

function wrap.round(args)
	local value = p._cleanNumber(args[1] or args.value or 0)
	local precision = p._cleanNumber(args[2] or args.precision or 0)
	if value == nil or precision == nil then
		return err('round input appears non-numeric')
	else
		return p._round(value, precision)
	end
end

function p._round(value, precision)
	local rescale = math.pow(10, precision or 0);
	return math.floor(value * rescale + 0.5) / rescale;
end

--[[
log10

returns the log (base 10) of a number

Usage:
{{#invoke:Math | log10 | x }}
]]

function wrap.log10(args)
	return math.log10(args[1])
end

--[[
mod

Implements the modulo operator

Usage:
{{#invoke:Math | mod | x | y }}

--]]

function wrap.mod(args)
	local x = p._cleanNumber(args[1])
	local y = p._cleanNumber(args[2])
	if not x then
		return err('first argument to mod appears non-numeric')
	elseif not y then
		return err('second argument to mod appears non-numeric')
	else
		return p._mod(x, y)
	end
end

function p._mod(x, y)
	local ret = x % y
	if not (0 <= ret and ret < y) then
		ret = 0
	end
	return ret
end

--[[
gcd

Calculates the greatest common divisor of multiple numbers

Usage:
{{#invoke:Math | gcd | value 1 | value 2 | value 3 | ... }}
--]]

function wrap.gcd(args)
	return p._gcd(unpackNumberArgs(args))
end

function p._gcd(...)
	local function findGcd(a, b)
		local r = b
		local oldr = a
		while r ~= 0 do
			local quotient = math.floor(oldr / r)
			oldr, r = r, oldr - quotient * r
		end
		if oldr < 0 then
			oldr = oldr * -1
		end
		return oldr
	end
	local result, count = fold(findGcd, ...)
	return result
end

--[[
precision_format

Rounds a number to the specified precision and formats according to rules
originally used for {{template:Rnd}}.  Output is a string.

Usage:
{{#invoke: Math | precision_format | number | precision }}
]]

function wrap.precision_format(args)
	local value_string = args[1] or 0
	local precision = args[2] or 0
	return p._precision_format(value_string, precision)
end

function p._precision_format(value_string, precision)
	-- For access to Mediawiki built-in formatter.
	local lang = mw.getContentLanguage();

	local value
	value, value_string = p._cleanNumber(value_string)
	precision = p._cleanNumber(precision)

	-- Check for non-numeric input
	if value == nil or precision == nil then
		return err('invalid input when rounding')
	end

	local current_precision = p._precision(value)
	local order = p._order(value)

	-- Due to round-off effects it is neccesary to limit the returned precision under
	-- some circumstances because the terminal digits will be inaccurately reported.
	if order + precision >= 14 then
		if order + p._precision(value_string) >= 14 then
			precision = 13 - order;
		end
	end

	-- If rounding off, truncate extra digits
	if precision < current_precision then
		value = p._round(value, precision)
		current_precision = p._precision(value)
	end

	local formatted_num = lang:formatNum(math.abs(value))
	local sign

	-- Use proper unary minus sign rather than ASCII default
	if value < 0 then
		sign = '?'
	else
		sign = ''
	end

	-- Handle cases requiring scientific notation
	if string.find(formatted_num, 'E', 1, true) ~= nil or math.abs(order) >= 9 then
		value = value * math.pow(10, -order)
		current_precision = current_precision + order
		precision = precision + order
		formatted_num = lang:formatNum(math.abs(value))
	else
		order = 0;
	end
	formatted_num = sign .. formatted_num

	-- Pad with zeros, if needed
	if current_precision < precision then
		local padding
		if current_precision <= 0 then
			if precision > 0 then
				local zero_sep = lang:formatNum(1.1)
				formatted_num = formatted_num .. zero_sep:sub(2,2)

				padding = precision
				if padding > 20 then
					padding = 20
				end

				formatted_num = formatted_num .. string.rep('0', padding)
			end
		else
			padding = precision - current_precision
			if padding > 20 then
				padding = 20
			end
			formatted_num = formatted_num .. string.rep('0', padding)
		end
	end

	-- Add exponential notation, if necessary.
	if order ~= 0 then
		-- Use proper unary minus sign rather than ASCII default
		if order < 0 then
			order = '?' .. lang:formatNum(math.abs(order))
		else
			order = lang:formatNum(order)
		end

		formatted_num = formatted_num .. '<span style="margin:0 .15em 0 .25em">×</span>10<sup>' .. order .. '</sup>'
	end

	return formatted_num
end

--[[
divide

Implements the division operator

Usage:
{{#invoke:Math | divide | x | y | round= | precision= }}

--]]
function wrap.divide(args)
	local x = args[1]
	local y = args[2]
	local round = args.round
	local precision =  args.precision
	if not yesno then
		yesno = require('Module:Yesno')
	end
	return p._divide(x, y, yesno(round), precision)
end

function p._divide(x, y, round, precision)
	if y == nil or y == "" then
		return err("Empty divisor")
	elseif not tonumber(y) then
		if type(y) == 'string' and string.sub(y, 1, 1) == '<' then
			return y
		else
			return err("Not a number: " .. y)
		end
	elseif x == nil or x == "" then
		return err("Empty dividend")
	elseif not tonumber(x) then
		if type(x) == 'string' and string.sub(x, 1, 1) == '<' then
			return x
		else
			return err("Not a number: " .. x)
		end
	else
		local z = x / y
		if round then
			return p._round(z, 0)
		elseif precision then
			return p._round(z, precision)
		else
			return z	
		end
	end
end

--[[
Helper function that interprets the input numerically.  If the
input does not appear to be a number, attempts evaluating it as
a parser functions expression.
]]

function p._cleanNumber(number_string)
	if type(number_string) == 'number' then
		-- We were passed a number, so we don't need to do any processing.
		return number_string, tostring(number_string)
	elseif type(number_string) ~= 'string' or not number_string:find('%S') then
		-- We were passed a non-string or a blank string, so exit.
		return nil, nil;
	end

	-- Attempt basic conversion
	local number = tonumber(number_string)

	-- If failed, attempt to evaluate input as an expression
	if number == nil then
		local success, result = pcall(mw.ext.ParserFunctions.expr, number_string)
		if success then
			number = tonumber(result)
			number_string = tostring(number)
		else
			number = nil
			number_string = nil
		end
	else
		number_string = number_string:match("^%s*(.-)%s*$") -- String is valid but may contain padding, clean it.
		number_string = number_string:match("^%+(.*)$") or number_string -- Trim any leading + signs.
		if number_string:find('^%-?0[xX]') then
			-- Number is using 0xnnn notation to indicate base 16; use the number that Lua detected instead.
			number_string = tostring(number)
		end
	end

	return number, number_string
end

--[[
Wrapper function that does basic argument processing. This ensures that all functions from #invoke can use either the current
frame or the parent frame, and it also trims whitespace for all arguments and removes blank arguments.
]]

local mt = { __index = function(t, k)
	return function(frame)
		if not getArgs then
			getArgs = require('Module:Arguments').getArgs
		end
		return wrap[k](getArgs(frame))  -- Argument processing is left to Module:Arguments. Whitespace is trimmed and blank arguments are removed.
	end
end }

return setmetatable(p, mt)
x光是检查什么的 尿酸高是什么造成的 为什么叫五七干校 白眼狼什么意思 尿酸高会引起什么疾病
双插头是什么意思 晚上吃什么不发胖 梨的功效与作用是什么 pde是什么意思 白猫来家里有什么预兆
农历七月二十什么日子 棕色用什么颜色调出来 什么是熊猫血 防是什么生肖 脚麻木吃什么药
血糖高能吃什么主食 孕期小腿抽筋什么原因 果酸是什么 不可什么什么 喉咙老是有白痰是什么原因
肺大泡是什么原因造成的hcv8jop0ns2r.cn 什么是华盖hcv7jop6ns1r.cn 什么月hcv9jop0ns6r.cn 小学什么时候报名hcv8jop7ns1r.cn 户别是什么hcv9jop2ns4r.cn
肾痛吃什么药96micro.com 吊销是什么意思hcv8jop3ns2r.cn 为什么晚上睡觉会磨牙hcv8jop5ns3r.cn 荔枝代表什么寓意hcv9jop2ns2r.cn 辣椒什么时候传入中国hcv8jop7ns0r.cn
齁不住是什么意思hcv8jop0ns8r.cn 感冒有什么症状hcv8jop6ns3r.cn 率真是什么意思hcv9jop5ns6r.cn 每天头疼是什么原因引起的hcv7jop7ns2r.cn 耳鸣用什么滴耳液hcv7jop5ns6r.cn
二十二岁属什么hcv9jop2ns7r.cn 消瘦挂什么科xinjiangjialails.com 重庆为什么叫重庆hcv9jop6ns0r.cn 前戏是什么hcv9jop6ns6r.cn 鸡蛋壳薄是什么原因hcv9jop2ns9r.cn
百度