我正在尝试在模拟器中编写一个普通的马尔可夫算法来交换由符号“^”分隔的两个三元数。例如,输入“120^210”,结果应该是“210^120”。
我尝试过这些规则:
^0 -> 0@^
^1 -> 1@^
^2 -> 2@^
@^0 -> 0@^
@^1 -> 1@^
@^2 -> 2@^
@^ -> ^
^->@
@0 -> ^0
@1 -> ^1
@2 -> ^2
@ -> ^
但它不能正常工作;我只得到“120210^”。
我正在尝试在模拟器中编写一个普通的马尔可夫算法来交换由符号“^”分隔的两个三元数。例如,输入“120^210”,结果应该是“210^120”。
我尝试过这些规则:
^0 -> 0@^
^1 -> 1@^
^2 -> 2@^
@^0 -> 0@^
@^1 -> 1@^
@^2 -> 2@^
@^ -> ^
^->@
@0 -> ^0
@1 -> ^1
@2 -> ^2
@ -> ^
但它不能正常工作;我只得到“120210^”。
当
^
符号移到最右边,并被 替换时@
,则不再适用任何规则。例如,@0
、 、@1
永远@2
不会出现,因此相应的规则永远不会激活,因此@
被替换回 而^
没有任何效果。我建议将任务分为以下几个阶段:
您可以为每个阶段使用不同的标记来了解“您在哪里”。
以下是马尔可夫算法在 JavaScript 中的可能实现,给出了一组应用上述阶段的规则: