→ jurian0101:oops,初始條件誤植為前後,不過似乎右轉90度是一樣的 07/17 07:58
推 EIORU:autocad: 複製 貼上 了N遍 才到第6,7天 最後用excel了 XD 07/17 12:07
→ jurian0101:mathematica磨蹭+湊函數中 07/17 16:45
好,第十天是38根樹枝。到第14天晚上總共長了100顆果實。
先形容一下畫出來這顆神奇的樹,
"分層畫"的輸出可以看到,每層中同一側形成無間隙的枝幹網格。果子也是交替排列。
這個構造姑且叫做基底膜好了@@
相對方向形成兩種排列形式 1.cluster: 形狀不一的離散團塊,似乎彼此長像是一樣的
或 2. escalator,連回基底膜的長短不一的纖維狀構造
然後就是整體了,窩的天啊它長的超像 Sierpinski triangle (轉到側面) 相異點是
這個 EIORU XD triangle 是由多於而非原本1:2的挖空比例構成的
/\
/__\ <-- 很差的示意圖
/\/\/\
以下一樣是傷眼Mathematica函數,速度效率很差,但計較這點可能要重寫過就...算了
Clear[枝幹];枝幹[直][0]={{0,0}->"W"};
枝幹[直][n_]/;n>0:=
枝幹[直][n]=
(枝幹[斜][n]=Sort[枝幹[直][n-1]/.rule1])//.
{p___,q_Rule,r___,s_Rule,t___}/;q[[1]]==s[[1]]:>{p,q[[1]]->"Q",t}
(*迭代規則。到下一層Q=果子須移除,是故有Q一行*)
rule1={
(*W*)({x_,y_}->"W"):>Sequence[{x,y+1}->"W",{x,y-1}->"S"],
(*A*)({x_,y_}->"A"):>Sequence[{x,y+1}->"W",{x,y-1}->"S"],
(*S*)({x_,y_}->"S"):>Sequence[{x-1,y}->"A",{x+1,y}->"D"],
(*D*)({x_,y_}->"D"):>Sequence[{x-1,y}->"A",{x+1,y}->"D"],
(*Q*)({_,_}->"Q")->Sequence[]
};
(*把第i層枝幹data轉換成繪圖物件。枝幹[直][i]裡包含Q=果子,是往上畫。枝幹[斜
][i]不包含Q,是往下畫*)
Clear[轉換];
轉換[i_]:=Join[{Hue[Mod[i,10]/10]},
枝幹[斜][i]/.x:{_Integer,_}:>Append[x,2i-1]/.rule2,
枝幹[直][i]/.x:{_Integer,_}:>Append[x,2i-1]/.rule3
]
(*斜枝幹變斜線*)
rule2={
(*W*)({x_,y_,z_}->"W"):>Line[{{x,y,z},{x,y-1,z-1}}],
(*A*)({x_,y_,z_}->"A"):>Line[{{x,y,z},{x+1,y,z-1}}],
(*S*)({x_,y_,z_}->"S"):>Line[{{x,y,z},{x,y+1,z-1}}],
(*D*)({x_,y_,z_}->"D"):>Line[{{x,y,z},{x-1,y,z-1}}]
};
(*直枝幹或果子*)
rule3={
(*Q*)({x_,y_,z_}->"Q"):>{color=Black,PointSize[0.03],Point[{x,y,z}]},
(*else*) ({x_,y_,z_}->Except["Q"]):>Line[{{x,y,z},{x,y,z+1}}]
};
= = = = = = =
(*起始!,50層在我電腦跑很慢,約5分鐘*)(*不知道這麼慢的原因是...*)
枝幹[直][50];
= = = = = = =
(*輸出測試*)
枝幹[斜][5]
枝幹[直][10]
= = = = = = =
(*單層graphics測試*)
Graphics3D[轉換[10]]
= = = = = = =
(*多層graphics,視角是正上方,以看清分布*)
Table[Graphics3D[轉換[i], ViewPoint -> Top, BoxStyle -> Dashed], {i, 1,
50(*層數*)}]
= = = = = = =
(*重頭戲!! 大融合繪圖。果子大小為手動調整,0是看不見*)
Graphics3D[
Flatten@Table[轉換[i], {i, 1, 50(*層數*)}] /.
PointSize[_] -> PointSize[0(*大小*)], ViewPoint -> Top,
BoxStyle -> Dashed]
= = = = = = = = =
(*第i層的果實計數*)
c=Table[Count[枝幹[直][i],"Q",Infinity],{i,1,50}]
(*到第n天總共果實計數*)
Accumulate[c]
(*斜枝幹計數*)
Table[Length@枝幹[斜][i],{i,1,50}]
(*直枝幹計數,含果子,自行扣除*)
Table[Length@枝幹[直][i],{i,1,50}]
※ 編輯: jurian0101 來自: 140.112.213.88 (07/18 18:31)
→ jurian0101:本文修改後轉Mathematica板@@ 07/18 18:41