[心得] 數方塊訓練

看板Mathematica作者 (Hysterisis)時間11年前 (2013/08/17 12:27), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
之前在日本誇張向競技節目「頭腦王」看過類似題目,就是3D磚塊計數 總覺得一眼看出60~70個磚塊的那傢伙,數量感真是好啊 凡人如我要相信數量感可以訓練,世界才會有光明與希望XD 所以就寫了這個 edit: 包成cdf了 https://dl.dropboxusercontent.com/u/19027436/cubeEnu.cdf 理論上只需要 http://www.wolfram.com/cdf-player/ 就能執行 增加了一些功能,代碼如下: - - - f[{x_, y_}] := Table[{Hue[.08, .8], Cuboid[{x, y, i}]}, {i, 1, array[[x, y]]}] DynamicModule[{cap = 1}, Manipulate[ (*切換按鈕自動刷新*) Refresh[doRand, TrackedSymbols -> {難度, 均高}]; (*產生新隨機方格的"副程式"*) doRand := (array = Transpose[ Sort /@ Transpose[Sort /@ RandomVariate[PoissonDistribution[均高 - 1], If[難度 == "High", RandomChoice[{{4,7},{5,6},{7,4},{6,6},{6,4},{4,6}, {6,5},{5,5}}], RandomChoice[{{4, 4}, {3, 5}, {5, 3}, {3, 4}, {4, 3}}]]] ]]); (*外觀格式部分*) Panel@Column[{Dynamic[Deploy@Graphics3D[ Flatten[f[#] & /@ Tuples[Range /@ Dimensions[array]], 1], Lighting -> {{"Ambient", White}}, Boxed -> False, ViewPoint -> {-RandomReal[{1.2, 1.8}], -RandomReal[{1.2, 1.8}], 1}, ImageSize -> Medium]], Dynamic[Row[{Button[Style[cap /. {1 -> "答案", -1 -> "刷新"}, {24}], If[cap == -1, doRand]; cap *= -1, FrameMargins -> Medium], Panel[If[cap == -1, Total[Flatten@array], "xxx"]]}, Spacer[6]]] }, Alignment -> Center], {均高, Range[2, 4]}, {難度, {"High", "Low"}}, SaveDefinitions -> True, Initialization -> doRand]] - - - 已知quirk是開啟第一次會自動運行一次Button內的代碼,cap變成-1。 不妨,只要再按一次好了。 從這個小project中學到了 Manipulate, Refresh, TrackedSymbols, SaveDefinitions, Initialization 的用法。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.213.88 ※ 編輯: jurian0101 來自: 140.112.213.88 (08/19 04:20)
文章代碼(AID): #1I3lknxk (Mathematica)
文章代碼(AID): #1I3lknxk (Mathematica)