4

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

拜托,没有人问我为什么选择使用'Y'作为错误值..

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


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

想要相当于

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

无论我在程序中输入什么,我都没有得到任何输出(将它指向一个文件并用十六进制转储它,屏幕上什么也没有)

4

2 回答 2

8

将近 2 年后,您可能不再需要它了,但这是我的“if - else”语句版本:

+++++ +++++
+++++ +++++
+++++ +++++
+++           (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

于 2015-06-27T10:28:29.093 回答
7

您的问题是,当您到达第二个循环时,当前单元格中的值始终为零,因此您的第二个循环永远不会运行。您需要再向右移动一个单元格才能获得对输入的修改结果,然后仅当值为零时才需要工作与循环不同,循环仅在值不为零时才起作用) .

为了做一个有条件的,我建议从一个网站上抓取一些其他人提出的代码(我找到的一个例子)。

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

,

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

expect everything to be zero here

[ >+ >+ <<- ]
> [ <+ >- ] +
> [ <- >[-] ]
< [ <
  >> [-]
  (11 * 8) plus 1 = 89 = 'Y'
  +++++ +++++ +
  [ << +++++ +++ >> - ]
  << + .
  > -
]
于 2013-08-28T04:24:00.603 回答