| |
---|---|
(点击题目可以在互联网中搜索该题目的相关内容) 日期:2006-5-20 0:09:58 来源: 作者: 点击: | |
简单的编程,谁能试试? 河内塔游戏的编程算法, 手机上的河内塔游戏,一般人都很熟悉,现在把它用PLC语言,实现出来,不知有人会否, 就是,假设有N个圆片在A柱上,从小到大,分别为,1,2,。。。N,三个塔柱分别为A,B ,C,现要从A移动到C,以为B过度,也是从小到大排列,移动的过程,只能小圆片放在大圆片上,不能反。计算结果放在连续地址列,指针数就是移动的次数,三个塔之间的移动的方式一共六种,A—B,A—C,B—C,B—A,C—A,C—B,在地址中只要以代码的形式例如 1,2,3,4,5,6,就行, 计算的结果在连续地址中,地址存的六种移动方式的次序,最终能完全实现由A到B的移动。 地址的长度为:2的N次方-1,也就是需要移动的次数, 哪位高人能试试,不一定要用代码,把算法详细讲解也可以。 ......... 以下是对《简单的编程,谁能试试?》的回复: 匿名回复: 难道真的工控网上没有高手了么 真的没有人会么? 还是高手在默默的等待啊, 匿名回复: 如果真的没有人会, 那我真的是很遗憾了, 匿名回复: 我菜故我不能 匿名回复: 出自http://www.zjedu.org/xdjyjs/90/346.htm 例2 河内塔问题。 这是一个古老传说中的问题:有3个高塔与64个直径互不相同的环,开始时这些环按尺寸大小依次堆在一个塔上,最大的在最下面。由一些僧侣把初始塔上的环移到另外一个塔上,每天只能移动一个,且移好后必须仍旧使大的在下面,按序堆放,其间可利用第三个塔暂时存放环。传说预言僧侣们完成任务之时,就是世界的末日。我们不知道僧侣们何时开始他们的工作,但可以考虑建立数学模型,借用计算机算出所要用的时间。算法思想是:若僧侣们能把上面的63个环从初始塔依次移到临时塔上,则就可将最大的环移到结束塔上,并依次把其它63个环从临时塔移到结束塔。 采用Pascal语言编程简略如下: Procedure Tower(n: nonneight; start, finish, other: towernames); IF n>0 then begin Tower (n-1, start, other, finish); Writeln (“ move top ring from”, start, “to”, finish); Tower (n-1, other, finish, start) end; 上述程序中writeln是一个差分方程,其中W(o)=0是初始条件,W(n)=2n-1是这个差分方程的解。可得河内塔问题的解是W(64)=264-1,大约是1.84×1019天,即约5.05×1014世纪。真是太长的时间了,难怪有“世界末日”的预言。 匿名回复: 不是不会,只是你要告诉我们用什么机械工具,用手还需要PLC干嘛? 匿名回复: 真考脑子.好在有GOOGLE. 匿名回复: to rickyxu: 呵呵,你的算法是对的, 但是,你用的Pascal编的话,但对于软件而言象VB,VC,都是最简单不过的递归算法,应该都会,但是我需要的是形象的PLC语言,它是两种概念,甚至再形象的来讲就是能用PLC把它的实际移动能给控制起来,假设有六个机械手在搬,分别负责6种移动次序,也就是你控制六个DO点的顺序, 呵呵,谁再想想,试试? 。。。。。。。。 匿名回复: 机械手的原理请告诉我,我没见过,或许我能试 试 匿名回复: 六个机械手, 六个DO驱动, 分别代表六种移动方式: 1、A-B 2、A-C 3、B-C 4、B-A 5、C-A 6、C-B 每次只移动一个,试试看? 匿名回复: 有意思。不知道有没时间限制。 我刚学plc基本编程,很想试试。 明天我还来看看。 如果不急,我的mail:yxw139@sohu.com 争取考试前交卷行不行? 匿名回复: |
|
上一篇: 做工控有钱途吗?面临择业的迷惘 下一篇: ESD系统的深探 |