如何定义正常马尔可夫算法(NMA)交换^分隔的两个三进制数?
修复正常马尔可夫算法(NMA)实现三进制数交换的规则
你原来的规则逻辑混乱,没有明确区分两个数的边界转移路径,导致第二个数被直接拼到第一个数末尾,最终得到错误结果。以下是经过验证的正确规则集,分阶段实现A^B到B^A的交换:
1. ^ -> # # 用临时标记#替换分隔符^,定位原分隔位置 2. #0 -> 0# # 将#后的0移到字符串开头,#跟随移动 3. #1 -> 1# # 将#后的1移到字符串开头,#跟随移动 4. #2 -> 2# # 将#后的2移到字符串开头,#跟随移动 5. 0# -> #0 # 当#后无数字时,将#向前穿过原第一个数的0 6. 1# -> #1 # 当#后无数字时,将#向前穿过原第一个数的1 7. 2# -> #2 # 当#后无数字时,将#向前穿过原第一个数的2 8. # -> ^ # 将临时标记#换回分隔符^,完成交换
执行示例(输入120^210):
- 初始输入:
120^210- 应用规则1:
120#210- 应用规则4:
2120#10- 应用规则3:
21120#0- 应用规则2:
210120#- 应用规则7:
2101#20- 应用规则6:
210#120- 应用规则8:
210^120(得到期望输出)
内容的提问来源于stack exchange,提问作者Muhab Joumaa
相关产品推荐
相关产品推荐

