前言:本吧太冷清了,我准备将的一些智力题用lua编程的方法进行解答,希望初学者能从中学会一些用程序解决实际问题的方法,以及lua的编程技巧。很多程序很简单,基本没多少技巧,关键还是建立数学模型的算法思想。
--[[
【题目】:有一根一米长可以无限均匀伸缩的橡皮筋,一只蜗牛从一端开始爬,每秒爬1厘米。橡皮筋每过1秒立即伸长10厘米。请问这只蜗牛能否爬到另一端?
注意理解:均匀伸缩的含义。
很多朋友一看这个题目,第一感觉是蜗牛永远都爬不到终点。
且慢,避免各种先入为主,让我们先编一个简单的程序算一算吧。为了避免无限循环(假如蜗牛永远爬不到终点),我们将时间上限设定为1个月左右吧,如果蜗牛一个月都爬不到,大概也累死了。一个月算30天,大概是2592000秒,我们就取2600000秒作为计算终点。
--]]
--设置绳长、距离的初始值(单位厘米)
local length,dist = 100,100
--设置蜗牛爬过距离以及消耗时间的初始值
local passed,seconds= 0,0
--开始计算
while seconds < 2600000 do
-- 时间+1秒
seconds = seconds + 1
-- 蜗牛爬行距离
passed = passed + 1
-- 距离终点的距离
dist = length - passed
-- 如果距离小于等于0,说明爬到了终点,跳出循环
if dist <= 0 then break end
-- 绳子均匀按比例伸长,已爬过的部分也会伸长
passed = (length + 10) / length * passed
length = length + 10
end
print ("时间="..seconds,"秒\n距离="..dist.."厘米")
-------------------------------------------------------------
结果:
时间=209339秒
距离=-0.63167011761107厘米
可见蜗牛是能爬到终点的,用的时间也就2天多时间就爬到了。
这个问题数学上可以用欧拉公式算出来,不过这里不是数学吧,相关的数学计算方法我就不贴了。回头来看程序,真的是非常简单,你感受到编程在解决实际问题中的强大威力了吗?
--[[
【题目】:有一根一米长可以无限均匀伸缩的橡皮筋,一只蜗牛从一端开始爬,每秒爬1厘米。橡皮筋每过1秒立即伸长10厘米。请问这只蜗牛能否爬到另一端?
注意理解:均匀伸缩的含义。
很多朋友一看这个题目,第一感觉是蜗牛永远都爬不到终点。
且慢,避免各种先入为主,让我们先编一个简单的程序算一算吧。为了避免无限循环(假如蜗牛永远爬不到终点),我们将时间上限设定为1个月左右吧,如果蜗牛一个月都爬不到,大概也累死了。一个月算30天,大概是2592000秒,我们就取2600000秒作为计算终点。
--]]
--设置绳长、距离的初始值(单位厘米)
local length,dist = 100,100
--设置蜗牛爬过距离以及消耗时间的初始值
local passed,seconds= 0,0
--开始计算
while seconds < 2600000 do
-- 时间+1秒
seconds = seconds + 1
-- 蜗牛爬行距离
passed = passed + 1
-- 距离终点的距离
dist = length - passed
-- 如果距离小于等于0,说明爬到了终点,跳出循环
if dist <= 0 then break end
-- 绳子均匀按比例伸长,已爬过的部分也会伸长
passed = (length + 10) / length * passed
length = length + 10
end
print ("时间="..seconds,"秒\n距离="..dist.."厘米")
-------------------------------------------------------------
结果:
时间=209339秒
距离=-0.63167011761107厘米
可见蜗牛是能爬到终点的,用的时间也就2天多时间就爬到了。
这个问题数学上可以用欧拉公式算出来,不过这里不是数学吧,相关的数学计算方法我就不贴了。回头来看程序,真的是非常简单,你感受到编程在解决实际问题中的强大威力了吗?