魯班演算法
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)魯班演算法擴展閱讀
魯班的發明創造很多。不少古籍記載,木工使用很多的木工器械都是他發明的。像木工使用的曲尺,叫魯班尺。又如墨斗、傘、鋸子、刨子、鑽子等,傳說均是魯班發明的。
這些木工工具的發明,使當時工匠們從原始、繁重的勞動中解放出來,勞動效率成倍提高,土木工藝出現了嶄新的面貌。這裡面都包含著原始的物理科學知識。
魯班還是一個很高明的機械發明家。他製造的鎖,機關設在裡面,外面不露痕跡,必須藉助配合好的鑰匙才能打開。
《墨子》一書中有這樣的記載:「公輸子削竹木以為鵲,成而飛之,三日不下。」就是說魯班製作的木鳥,能乘風力飛上高空,三天不降落。這不可不認為,魯班是原始航空科學的先頭兵。
魯班還改進過車輛的構造,製成了機動的木車馬。這種木車馬由木人駕御,裝有機關,能夠自動行走。
後世不少科技發明家,如三國時期的馬鈞、晉朝的區純、北齊的靈昭、唐朝的馬待封等,都受這個傳說的影響,相繼朝這個方向發展過。
在兵器製造方面,魯班曾為楚國製造攻城用的器械,在戰爭發揮過巨大作用。後來在墨子的影響下,不再製作這類戰爭工具,專門從事生產和生活上的創造發明,以造福於勞動人民。