我想知道我們如何才能在mathematica中設計一個rubics魔方。是否有可能以及如何配合。我們如何確定立方體6個面上的小立方體的不同分離。如何表示魔方
Q
如何表示魔方
4
A
回答
6
你在問如何定義一個數據結構。只要您定義的操作正常工作,您的選擇就是任意的。例如,你可以代表一個立方體狀:
newCube[] := {
{red, red, red, red, red, red, red, red, red},
{orange, orange, orange, orange, orange, orange, orange, orange, orange},
{yellow, yellow, yellow, yellow, yellow, yellow, yellow, yellow, yellow},
{green, green, green, green, green, green, green, green, green},
{indigo, indigo, indigo, indigo, indigo, indigo, indigo, indigo, indigo},
{purple, purple, purple, purple, purple, purple, purple, purple, purple}
}
然後就可以定義一個捻(和任選的防扭轉)的操作,一個用於每個移動(3軸,3層每軸扭曲,2個方向扭曲;或者6軸,每軸扭曲3層),或者兩個旋轉操作和一個扭曲,並且假設您可以將它們組合起來以生成如inverseRotate[simpleTwist[rotate[cube], ...], ...]
的效果。
要找出你需要的代碼,你必須有一個從你的表示到真實物體的地圖。也許這將是更好地展示了一枚硬幣,這是無論是正面還是反面的例子:
newCoin[] := {heads}
flipCoin[coin_] := {If[coin[[0]]==heads, tails, heads]}
這可能是更復雜的,如果它不容易與基本的數據結構來代表你的對象,如列表。
newCube[] := {
/red, red, red\ /orange, orange, orange\
|red, red, red| |orange, orange, orange|
\red, red, red/, \orange, orange, orange/, ...
}
但矩陣拼接在一起的方式不能輕易地表示:你甚至可以像矩陣代表你的立方體。所以他們在列表中的排序是任意的。
如果你還在困惑,你可以這樣做:
給你表示每個插槽的任意數(最壞情況下,你貼上標籤0到53,但你可以更優雅它)。然後用一個真正的魔方,在每張臉上寫下這些數字。然後當你做手術時,寫下他們的新職位。這被稱爲排列,該特定允許移動/扭曲誘導你的半羣數據結構。如前所述,這些(18)中有相當一部分(18),你必須全部寫下來。然後你就可以有這樣的:
newCube[] := {0,1,2, 3,4,5, 6,7,8, ...53}
permutations = {
{12,15,0, 3,4,5, 6,7,8, ...}, (*figure these out yourself*)
{. . . },
{. . . },
{. . . },
{. . . },
{. . . },
{. . . },
{. . . },
{. . . },
{. . . },
{. . . },
{. . . },
{. . . },
{. . . },
{. . . },
{. . . }
}
twistCube[cube_, moveNumber_] := Permute[
cube,
FindPermutation[permutations[[moveNumber]]]
]
您可以用計算機科學的技巧,比如而優化這個不是調用FindPermutation每一次,使permutations = FindPermutation /@ {...}
相關問題
- 1. PHPDoc的和PhpStorm:表示魔術方法
- 2. 如何找到魔方的方向?
- 3. 魔方旋轉
- 4. 「魔方」算法
- 5. 如何修復魔方中的旋轉?
- 6. 魔法方法如何覆蓋繼承
- 7. 我如何重寫魔術方法?
- 8. PHP魔術方法例如
- 9. 你會如何在代碼中代表魔方?
- 10. 魔方函數Matlab
- 11. 如何解決的魔方在一個有效的方式
- 12. 如何使用xaml魔術
- 13. JavaScript中的魔術方法
- 14. 魔方打亂算法
- 15. 魔方其他對角線
- 16. 魔術方法在Python
- 17. 3 X 3魔方遞歸
- 18. 魔方掃描算法
- 19. PHP魔術方法和空
- 20. 魔方不能隱藏
- 21. 魔方(旋轉和跟蹤)
- 22. DrawingPanel.py繪製一個魔方
- 23. php 5.1.6魔法__toString方法
- 24. 方向感知3D魔方動畫
- 25. 在魔術方法中鍵入「其他」的提示?
- 26. 蒙德里安虛擬魔方未顯示成員
- 27. 魔方組合 - jquery.cubeConfig.js顯示動態類別
- 28. 如何使可旋轉3D魔方與UIView的每一側
- 29. 如何爲IDE記錄魔術(_call和_callStatic)方法
- 30. Python如何接受多個參數添加魔術方法
http://demonstrations.wolfram.com/RubiksCube/ – 2012-03-19 03:07:14