公告:网站程序已升级到1.8.3,修复了提问时可能报错的问题,请清除浏览器缓存
2019-11-10

欢迎来到 Mathematica 问答社区

提问时请贴上文本代码

语法高亮:在编辑器中点击

被禁止的话题:广告破解

请阅读:《提问的智慧》

备用域名:mma.ooo

支持LaTex数学公式
行内公式标识符:\$ 或“$\backslash ($”+“$\backslash )$”,
行间公式标识符:\$\$ 或 “$\backslash [$”+“$\backslash ]$”

社区建议QQ群:365716997

分类

+1 投票
182 浏览

例如 3 层深度的

{{{Red, Green}, {Blue, Yellow}}, {{Magenta, Orange}, {Purple, Cyan}}}

想生成



{{{Red, None}, {None, None}}, {{None, None}, {None,None}}},
{{{None, Green}, {None, None}}, {{None, None}, {None,None}}}, 
{{{None, None}, {Blue, None}}, {{None, None}, {None,None}}}, 
{{{None, None}, {None, Yellow}}, {{None, None}, {None,None}}},
......


等等这些只有一个有颜色,另外全都是 None 的所有的这些列表。

因为 MeshShading 里面要求是这种格式。另外,如果有 2k 种颜色,如何生成  2 个这种列表?

用户: cvgmt (276 分)
修改于 用户:cvgmt
MeshShading 中貌似不支持 None 吧
另外,如果$2^k$种颜色,对应的列表每层是几维的呢(比如你给出的有3层,每层都有2个元素,也就是 2x2x2)。
n = 3;
colors = Table[RGBColor[RandomReal[], RandomReal[], RandomReal[]], 2^n]
list = Table[None, 2^n - 1];
Nest[Partition[#, 2] &, #, n - 1] &@Insert[list, colors[[#]], #] & /@
 Range[2^n]
None 表示不画,于是可以在图中产生挖洞的效果,是 MeshShading 支持的。

2 个回答

0 投票
此问题已解决,不再需要答案:https://www.zhihu.com/question/380800144
用户: osu700431 (61 分)
0 投票
colors = {{{Black, Green}, {Blue, Yellow}}, {{Magenta, 
    Orange}, {Purple, Gray}}}; n = ArrayDepth[colors]; 
ReplacePart[
   ConstantArray[None, ConstantArray[2, n]], # -> 
    Extract[colors, #]] & /@ Tuples[{1, 2}, n]
    

用户: cvgmt (276 分)
修改于 用户:cvgmt
...