的組合我開始了一些很長的和惱人寫這樣數學:使用CheckboxBar生成一個字符串作爲短語
Manipulate[
thetext = Switch[Total[obj],
0, Text["", {0, 5}],
1, Text["How", {0, 5}],
2, Text["Does One", {0, 5}],
4, Text["Use CheckboxBar", {0, 5}],
8, Text["=A=", {0, 5}],
3, Text["How Does One", {0, 5}],
5, Text["How Use CheckboxBar", {0, 5}],
9, Text["How =A=", {0, 5}],
6, Text["Does One Use CheckboxBar", {0, 5}],
10, Text["Does One =A=", {0, 5}],
12, Text["Use CheckboxBar =A=", {0, 5}],
7, Text["How Does One Use CheckboxBar", {0, 5}],
11, Text["How Does One =A=", {0, 5}],
13, Text["How Use CheckboxBar =A=", {0, 5}],
14, Text["Does One Use CheckboxBar =A=", {0, 5}],
15, Text["How Does One Use CheckboxBar =A=", {0, 5}]];
Graphics[thetext],
{{obj, {1, 2, 4, 8}, "Text"}, {1 -> "How", 2 -> "Does One",
4 -> "Use CheckBoxBar", 8 -> "=A="}, CheckboxBar}]
但我很快意識到,我大概可以取代1,2,4 ,8有四個二進制數,即0000 = 0,1101 = 11等,所以我寫了這個功能:
g[{d_, f_, g_, h_}] :=
StringJoin[
If[d == 1, "d", ""], If[f == 1, "f", ""], If[g == 1, "g", ""], If[h == 1, "h", ""]];
工作正常。但是,CheckboxBar會生成一個只包含檢查條目的列表。除此之外,檢查條目的順序根據您首先檢查哪一個而更改。
問題:我應該如何製作比我現在擁有的功能更短/更簡潔的功能。最好用checkboxbar,因爲這是我的任務中的一項要求。沒有checkboxbar也沒關係,因爲我的任務並沒有分級,我的代碼很簡潔。我只是爲了改進而改進它。
thetext = Text [Switch [Total [obj],0,「」,1,「How」,2,「One One」, 4, 「Use CheckboxBar」,8,...],{0,5}]通過分解Text [,{0,5}]的許多副本來縮短和簡化。按照數字順序對開關選項進行排序,除非有一個重要的原因,否則可能會使某些錯誤更加突出。這可以讓你使用Text [{「」,「How」,「One One」,「How One One」,...} [[Total [obj]]],{0,5}]。對於你的函數g,你可以研究MapThread的文檔,看看你能否想象如何用它來分析你現在在g中的重複。 – Bill