You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Arduino生成无相邻重复动作的魔方打乱序列?

解决魔方打乱器相邻动作重复问题

你的代码核心问题是未排除上一次选中的动作,导致出现连续重复。只需记录上一次的动作编号,每次生成新动作时强制与上一次不同即可解决,同时还要修正随机范围的错误:

修改后的完整代码

char moves[6][4] = {"R ", "L' ", "B' ", "D2 ", "F ", "U2 "};
int lastMove = -1; // 初始化为无效编号,确保第一次随机不受限制

for (int i=0; i < 6; i++)
{
  int currentMove;
  // 循环生成动作,直到和上一次不同
  do {
    currentMove = random(0, 6); // 修正范围:覆盖0-5所有6个动作
  } while (currentMove == lastMove);
  
  Serial.print(moves[currentMove]);
  lastMove = currentMove; // 更新上一次动作编号
  delay(200);
}

关键调整说明

  • 用数组moves统一存储所有动作,替代零散的a0-a5,代码更简洁易维护
  • 新增lastMove变量记录上一次动作的编号,初始值设为-1(不在0-5的有效范围内,保证第一次随机正常执行)
  • 通过do-while循环强制生成与上一次不同的动作,彻底避免相邻重复
  • 修正random范围:原代码random(0,5)只能生成0-4,漏掉了编号5的动作,改为random(0,6)才能覆盖全部6个动作

修改后输出示例:

B' F D2 R B' U2 

内容的提问来源于stack exchange,提问作者Luca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 05:48:22