Brainfuck。怎么检查回文?

时间:2015-05-16 19:38:42

标签: brainfuck

问题是使用 Brainfuck 检查序列是否为回文序列。

输入是一个数字序列

输出 0如果不是palindorme,否则为1。

我有一个想法: 说,我们有sequance 1 2 3 2 1 。我们可以在变量中记住我们数组中的第一个单元格(使用'!' )来执行此操作,

  • 然后将1更改为0(使用' 0' 操作),数组将为0 2 3 2 1,
  • 然后我们到阵列的末尾,直到我们遇到0(使用 '> [>]' ),
  • 然后我们从变量中获取数字并获得序列 0 2 3 2 1 1.
  • 下一步步骤应该是比较两个最后的数字,如果它们相等则继续算法从开始做其他事情......

我不知道如何实施最后一步。

1 个答案:

答案 0 :(得分:2)

如果我不打算将整个程序写入brainfuck,请原谅,

这是主要的想法:

  1. 读取输入(指针应该在之后的最后一个字符处)
  2. 记住字符
  3. 将值设置为0
  4. 转到第一个[<]
  5. 与记忆中的角色比较(参见Brainfuck compare 2 numbers as greater than or less than
  6. 如果不相等,请打印1
  7. 如果下一个(>)单元格数组为0,则打印0
  8. 移至指向结束[>]
  9. 的指针
  10. 返回第2步