我有一个非常具体的Mathematica问题。我试图生成所有在某些“锁定”位周围的二进制数。我使用一组字符串值来表示哪些位是锁定的,例如{"U","U,"L","U"},其中U是“未锁定”的可变位,L是“锁定”的不可变位。我从一个临时列表开始,其中包含已经格式化为上述列表的随机二进制数,例如{0, 1, 1, 0},其中1是锁定位。我需要找到所有其余的二进制数,其中1位是常数。我已经尝试了递归、迭代和两者的组合来解决这个问题,但都没有结果。这是我在大学研究的一部分。
我正在构建二进制数的十进制形式列表。我意识到这段代码完全错误。这只是一次尝试。
我正在构建二进制数的十进制形式列表。我意识到这段代码完全错误。这只是一次尝试。
Do[
If[bits[[pos]] == "U",
AppendTo[returnList, myFunction[bits, temp, pos, returnList]]; ],
{pos, 8, 1}]
myFunction[bits_, bin_, pos_, rList_] :=
Module[{binary = bin, current = Length[bin], returnList = rList},
If[pos == current,
Return[returnList],
If[bits[[current]] == "U",
(*If true*)
If[! MemberQ[returnList, FromDigits[binary, 2]],
(*If true*)
AppendTo[returnList, FromDigits[binary, 2]];
binary[[current]] = Abs[binary[[current]] - 1],
(*If false*)
binary[[current]] = 0;
current = current - 1]; ,
(*If false*)
current = current - 1];
returnList = myFunction[bits, binary, pos, returnList];
Return[returnList]]]