这需要一种迭代方法。转到文件 |选项 |公式,将工作簿计算设置为手动,勾选启用迭代计算并将最大迭代设置为 1。
使用填充系列在 C2-C151 中设置灯光编号 1-150。
将以下公式放入B2中以遍历人员编号:-
=IF(A2,0,B2+1)
在 D2 中输入以下公式,以确定 C2 中的灯是否会打开或关闭(奇数人总是打开,偶数人会关闭,但仅适用于与其人数精确倍数的灯):-
=IF(A$2,FALSE,IF(MOD(C2,B$2)=0,ISODD(B$2),D2))
将公式从 D3 复制到 D151。
我还添加了一个公式来在 E2 中显示文本字符串“ON”或“OFF”,但这是可选的:-
=IF(D2,"ON","OFF")
要初始化它(可能有更简洁的方法),请在 A2 中键入“1”。
屏幕底部应该有一个“计算”按钮。按一次应该将所有灯设置为“关闭”
在 A2 中键入“0”。现在每次按下“计算”时,它都会模拟 B2 中显示号码的人的动作。
这是第 3 个人成功后的样子:-
如果您想看看在所有 150 人都尝试过之后的样子,请返回文件 |选项 |公式并将最大迭代次数设置为 150。
像以前一样重置并计算。
现在看起来像这样:-
灯光交替 - 这是您的预期吗?对于所有偶数灯,最近的动作是由偶数人执行的,所以它是关闭的,反之亦然。
或者,也许您正在考虑马特·帕克 (Matt Parker) 的《在第四维度中制作和做的事情》一书中概述的问题。在这里,一系列守卫可以使用相同的约束锁定和解锁牢房门,除了它们总是将 0(锁定)变为 1(解锁)并将 1 变为 0,事实证明,那些保持打开的就是那些平方数为 1,4,9,16 ...
在这种情况下,D 列中的公式为
=IF(A$2,FALSE,IF(MOD(C2,B$2)=0,NOT(D2),D2))
它看起来像这样:-