4

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

输入是一个数字序列

如果不是回文则输出0,否则输出 1。

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

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

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

4

1 回答 1

2

如果我不会用brainfuck编写整个程序,请原谅,

这是主要思想:

  1. 读取输入(指针应该在最后一个字符之后)
  2. 记住字符
  3. 将值设置为 0
  4. 转到第一个 [<]
  5. 与记忆的字符进行比较(参见Brainfuck 比较 2 个数字大于或小于
  6. 如果不相等,打印 1
  7. 如果下一个 (>) 元胞数组为 0,则打印 0
  8. 将指针移至结尾 [>]
  9. 返回第 2 步
于 2015-05-16T19:56:18.710 回答