无法弄清楚是否有陈述

时间:2013-08-28 03:04:24

标签: brainfuck

这是我正在使用的代码,它测试'b'的输入,如果还有其他输入则输出'Y'。

请不要问为什么我选择使用'Y'作为假值。

> , <
+++++ +++++
[
    > ----- ----
    < -
]
> ----- --- <


[
    >
    +++++ +++++
    [
            > +++++ +++
            < -
    ]
    > +++++ ++++ <
    . <
]

想要相当于

char c;
c = getchar();
if (c == 'b')
    putchar('Y');

我无法输出任何内容(将其指向文件并将其显示为灰色,以及屏幕上没有任何内容)无论我将哪些内容输入程序

2 个答案:

答案 0 :(得分:8)

差不多两年后你可能不再需要这个了,但这是我的版本&#34; if - else&#34;语句:

+++++ +++++
+++++ +++++
+++++ +++++
+++           (this is the value you want to check, in this case it's the "!")

> , <         (then you take input an char to compare)
[ - > - < ]   (after that you have to check if their ascii values are the same)
>>            (and initialize the answer on "true")

+++++ +++++
+++++ +++++
+++++ +++++
+++++

< [ - > ] > . (if "false", this loop will be executed and the answer won't be printed)

希望它今天对某人有用。 :d

答案 1 :(得分:7)

您的问题是,当您到达第二个循环时,当前单元格中的值始终为零,因此您的第二个循环永远不会运行。你需要在右边的另一个单元格中获得对输入的修改结果,然后只有当值 为零时才需要工作(不像循环,它只会起作用)如果值不为零)。

要制定条件,我建议从某个网站抓取某些其他人已经出现的代码(an example I found)。

无论如何,这是我提出的解决问题的代码:

,

7 * 7 * 7 = 98 = 'b'
> +++++ ++
[ > +++++ ++
  [
    << --
    >> -
  ]
  < -
]
<

expect everything to be zero here

[ >+ >+ <<- ]
> [ <+ >- ] +
> [ <- >[-] ]
< [ <
  >> [-]
  (11 * 8) plus 1 = 89 = 'Y'
  +++++ +++++ +
  [ << +++++ +++ >> - ]
  << + .
  > -
]