本文整理汇总了C++中Controller::MarkFinal方法的典型用法代码示例。如果您正苦于以下问题:C++ Controller::MarkFinal方法的具体用法?C++ Controller::MarkFinal怎么用?C++ Controller::MarkFinal使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Controller
的用法示例。
在下文中一共展示了Controller::MarkFinal方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: BitwiseFlip
// 按位取反
void BitwiseFlip(Tape &t)
{
Controller c;
// 如果这里看到的是0,那么S1将写1;
// 如果这里看到的是1,那么S2将写0。
c.AddRule(0, '0', 1, ' ', 'R');
c.AddRule(0, '1', 2, ' ', 'R');
c.AddRule(0, '$', 4, '$', 'S');
c.AddRule(1, '0', 1, '0', 'R');
c.AddRule(1, '1', 1, '1', 'R');
c.AddRule(1, ' ', 3, '1', 'L');
c.AddRule(1, '$', 1, '$', 'R');
c.AddRule(2, '0', 2, '0', 'R');
c.AddRule(2, '1', 2, '1', 'R');
c.AddRule(2, ' ', 3, '0', 'L');
c.AddRule(2, '$', 2, '$', 'R');
// 往回移到数字开头。
c.AddRule(3, '0', 3, '0', 'L');
c.AddRule(3, '1', 3, '1', 'L');
c.AddRule(3, ' ', 0, ' ', 'R');
c.AddRule(3, '$', 3, '$', 'L');
c.MarkFinal(4);
c.Run(t, true);
}
示例2: Less
// a<=b?
// 必须同等长度
void Less(Tape &t)
{
Controller c;
// 若第一位为0,则去(a)
// 若第一位为1,则去(b)
c.AddRule(0, '0', 1, ' ', 'R');
c.AddRule(0, '1', 4, ' ', 'R');
c.AddRule(0, '$', 6, ' ', 'R'); // 等于最后也写0
// (a) 若0,把第二个数的第一位改成$;若1,则确定小于
c.AddRule(1, '0', 1, '0', 'R');
c.AddRule(1, '1', 1, '1', 'R');
c.AddRule(1, '$', 2, '$', 'R');
c.AddRule(2, '$', 2, '$', 'R');
c.AddRule(2, '0', 3, '$', 'L');
c.AddRule(2, '1', 9, ' ', 'R');
// 移回第一个数开头。
c.AddRule(3, '0', 3, '0', 'L');
c.AddRule(3, '1', 3, '1', 'L');
c.AddRule(3, '$', 3, '$', 'L');
c.AddRule(3, ' ', 0, ' ', 'R');
// (b) 如果第二个数的第一位是1继续比较;如果是0,那确定大于
c.AddRule(4, '0', 4, '0', 'R');
c.AddRule(4, '1', 4, '1', 'R');
c.AddRule(4, '$', 5, '$', 'R');
c.AddRule(5, '$', 5, '$', 'R');
c.AddRule(5, '0', 6, ' ', 'R');
c.AddRule(5, '1', 3, '$', 'L');
// 最后写0
c.AddRule(6, '0', 6, ' ', 'R');
c.AddRule(6, '1', 6, ' ', 'R');
c.AddRule(6, '$', 6, ' ', 'R');
c.AddRule(6, ' ', 7, '0', 'R');
// 最后写1
c.AddRule(9, '0', 9, ' ', 'R');
c.AddRule(9, '1', 9, ' ', 'R');
c.AddRule(9, '$', 9, ' ', 'R');
c.AddRule(9, ' ', 7, '1', 'R');
//c.AddRule(7, ' ', 8, '$', 'L');
c.MarkFinal(7);
c.Run(t, true);
}