鲁班算法
A. 孔明锁解法大全
孔明锁6根解法,我想要详细的说明,是6根孔明锁。 孔明锁内部的凹凸部分啮合,十分巧妙,形状和内部的构造各不相同,下面就是孔明锁6根解法: 孔明锁,号称木制玩具中最难者(商贩语)。10年前某一高智商师兄曾于小摊上购得6根小木棍,说可以组成十字架云云。于尝试半小时之久未得要领,颇伤自尊。教研室中颇具人才,一机械专业老师拿去赏玩,两日得解。知,此劳什子非想象之劳什子也。因假好学,在校时并未再尝试之。后成家,携妻逛阜成门之万通,又见此物,因其价廉,购之。回家饭毕,卧床上试解之。因有前车之鉴,仿庖丁解牛状,未曾轻易动作。于观察良久,发现其机巧处,终得解。看表,3小时已过。一晃数年已过,前几日复又赏玩,半小时毕。看来,记忆推理之功能尚在。因解法颇有些繁琐,故DC解法,以备忘。 现在市面上有一种另外的简版孔明锁,其中一个部件是纯正的长方体,由于这个解法相对简单,不在此列。该解法关键点,是如何组成一个方的空洞,让这个长方体可以插进去。仔细观察,即可得解。 孔明锁,相传是三国时期诸葛孔明根据鲁班的发明,结合八卦玄学的原理发明的一种玩具,曾广泛流传于民间。是中国古代传统的土木建筑固定结合器,民间还有“别闷棍”“六子联方”“莫奈何”“难人木”等叫法。不用钉子和绳子,完全靠自身结构的连接支撑,就像一张纸对折一下就能够立得起来,展现了一种看似简单,却凝结着不平凡的智慧。 孔明锁,也叫八卦锁、鲁班锁。是因为还有一种说法是该工具是古代木匠鲁班发明,所以有鲁班锁一称。 按照编号放好孔明锁的六个小块,黑色部分,表示凹下。这种状态朝上的面,就是拼好后与其它小块合在一起的面。为了便于表达,把它记作星面,标有星的一端,记作星端。按照表格的顺序,将小块逐个搭起即可。在所示拼装过程中,孔明锁位置方向不变。星面朝向某方向,这个小块位置就在中心偏向反方向。这有两种拼装方法,注意编号顺序。 安装过程说明: 第1根与第2根的安装如下图二所示,注意“1”中间凸出来的部分放置在右边,将“2”锯割得少一些(也即完整部分长一些)的一头放左边。 第3根的安装的方向很重要,要将锯割得多一些(也即完整部分短一些)的一头放上边,如图三所示,如若将锯割得少一些(也即完整部分长一些)的一头放如图所示的上(左)边,则安装出来的成品中“3”柱与“4”柱的上、下长度不相等。如图四所示。 只要前面三根安装正确,第4根安装很简单,因为它的结构是对称的,只要按如图五所示安装,就可以了。 第5根安装要注意,所示,将第5根木方的“缺口”朝上,安装就正确。如果是将木方的“缺口”朝下,则安装出来的成品就会使“2”和“5”方对不齐,所示。 只要多安装几次,一般会在20秒钟左右就可以安装成功。 鲁班锁(孔明锁)的计算机分析介绍 锁的拆解 一、拆解动作限定: 一般地,鲁班锁通过手工的“装配”难于“拆解”,相反,在计算机分析中,则“拆解”比“装配”更复杂些。这是因为在计算机程序中,“装配”是逻辑的,但“拆解”的逻辑过程却最终需要落实物理实现。 对一个“逻辑装配”而成的锁,须由计算机程序对其尝试拆解,如果能够成功找到一个完全拆解方案,则该方案就是一个“解”,如果仅能完成部分拆解,也就是剩下的“块组”无法再继续拆解,那就称这个拆解方案为“部分解”。并非所有能“逻辑装配”的锁都能顺利拆解。 计算机程序对拆解动作有一定限制:拆解一个块时,块只允许沿三个互相垂直的方向之一移动,每次移动的距离必须是小立方边长的整数倍。也就是说,不允许朝任意方向移动块,也不允许移动任意距离。但是,移动时,可以是一块移动,也可以几个块组成一个整体移动。 二、拆解程序的总体思路: 程序对锁的拆解过程,就是不断地对块沿各个方向尝试移动的过程,对每一步移动,程序需判断:能否移动?移动几格?是否有块或块组分离?是否形成部分解?程序还得记录跟踪每一步操作后锁的状态,并需穷举全部拆解步骤,才能获取该装配的解的全部情况。 为了使程序能够进行相关操作,需把一个装配锁置于一个三维空间中,并对空间中的块进行定位。但这样做并不够,因为块的形状千变万化,跟踪一整个块还无法判断块之间在移动时的交互情况,因而需对块进行逻辑分解。一个长度为6单元的块,按“小立方”为单位,分解成24个区域,包括可切割加工的12个区域和二端固定的12个区域。程序需追踪这24个立方区域中全体物理存在的“小立方块”,当然“空立方”区域就不必计算了,全体物理小立方块在某个方向上可以移动的值的最小值,就是块在此方向上的可移动距离。下图画出一个块在三维空间中的情形: 三维空间中一个块的示意图 上图绘制了一个以20单位边长的立方空间,以图中块的左下角处的“小立方”为例,其空间坐标为(X,Y,Z)=(6,6,10)。 当一个装配锁定位到该栅格空间中后,所有小立方将被一一定位,获得唯一的空间坐标。对应于计算机程序,则设计一个三维数组GRID(x,y,z),数组元素的值表示该栅格由哪个块占据,显见,其取值范围为1-6;对于纯空间(包括整个锁未占据的空间和“有孔锁”内部的孔洞),其数组元素的值为0。 按上述栅格空间的构造,一个块如果在栅格中移动,就相当于数组中对应元素值的改变。比如1#块的某个“小立方”GRID(5,6,4)=1,即X方向上的第5个栅格、Y方向上的第6栅格、Z方向上的第4栅格,如果此块向X正方向移动一单元,那么就有GRID(6,6,4)=1; 拆解锁时,每移动一步,锁上各块的相互位置就发生变化。需用一个“状态”来表述这种不同的布局。在计算机程序里,状态用每个块在每个方向上跟起始状态对比已经移动的数量来表示。如果把1#块确定为固定位置,那么每个状态就是通过另外剩下的5个块相对于1#块的偏移量来描述,通常就是15个整数。程序需维持一个“状态”列表,以追踪运行情况。 建立了以上相关数据结构后,整个拆解程序就可以化简为:分析在单个方向上的移动,以及判断这个移动是否使锁从一个状态到达另一个状态。程序还得区分一个或多个块通过某个移动后从一个“静止块组”中被分离出来,这种分离定义为“部分解”。关于“分析在单个方向上的移动”,稍后将列出其基本算法。 综合起来说,程序完全地拆解整个锁的过程,就是在不同的方向上、在新的状态下重复执行拆解逻辑的过程;每次一块“块组”被成功拆解,就记录其为一个“子装配”,用于后续分析。
B. 符合鲁班尺的大门尺寸是多少
鲁班尺上的门洞吉数:
若换算为公制尺寸,通常吉数尺度有21-23cm、40-42cm、60-62cm、81cm、88cm、89cm、106-108cm、126-128cm、133cm、146cm、155cm、171-176cm、191-198cm、211--216cm、231-236cm、241cm、253-256cm、261-263cm、275cm、281-283cm。
一般而言,现代门的高度都不超过283cm,对于普遍的住宅,大门宽度(即见光度,是门框内壁的水平距离,不包括门框的厚度)多为108cm,高度多为212cm左右,而房门的宽度多为81cm,高度多为198cm,这样的尺度是大众皆宜的。
(2)鲁班算法扩展阅读
鲁班的发明创造很多。不少古籍记载,木工使用很多的木工器械都是他发明的。像木工使用的曲尺,叫鲁班尺。又如墨斗、伞、锯子、刨子、钻子等,传说均是鲁班发明的。
这些木工工具的发明,使当时工匠们从原始、繁重的劳动中解放出来,劳动效率成倍提高,土木工艺出现了崭新的面貌。这里面都包含着原始的物理科学知识。
鲁班还是一个很高明的机械发明家。他制造的锁,机关设在里面,外面不露痕迹,必须借助配合好的钥匙才能打开。
《墨子》一书中有这样的记载:“公输子削竹木以为鹊,成而飞之,三日不下。”就是说鲁班制作的木鸟,能乘风力飞上高空,三天不降落。这不可不认为,鲁班是原始航空科学的先头兵。
鲁班还改进过车辆的构造,制成了机动的木车马。这种木车马由木人驾御,装有机关,能够自动行走。
后世不少科技发明家,如三国时期的马钧、晋朝的区纯、北齐的灵昭、唐朝的马待封等,都受这个传说的影响,相继朝这个方向发展过。
在兵器制造方面,鲁班曾为楚国制造攻城用的器械,在战争发挥过巨大作用。后来在墨子的影响下,不再制作这类战争工具,专门从事生产和生活上的创造发明,以造福于劳动人民。