有人可以在编程语言brainf * ck中发布一个代码段来乘以两位数字吗?
答案 0 :(得分:8)
,>,< input numbers at cell #1 #2
[
> go to cell #2
[
->+>+<< move data to cell #3 #4
]
>> go to cell #4
[
-<<+>> move data to cell #2
]
<<< go to cell #1
- decrement cell #1
]
>>. output cell #3
程序读取到单元格#1,#2,结果将出现在单元格#3
中我使用BF解释器,我可以输入数字作为数字(不是ASCII符号)
答案 1 :(得分:6)
好吧,我可能没有最有效的方法,但它有效。我以特定的方式做事,以便它适用于所有这些
2 * 3 = 6
6 * 7 = 42
4 * 5 = 20
所以,这是:
read
>, >, <<
convert from ascii
+++++ +
[
>----- ---
>----- ---
<<-
]
multiply
>[
>[>+>+<<-]
>[<+>-]
<<-
]
separate numbers
>[-]>+> >+++++ +++++<
[
- >- [>>>]+++++ +++++<<+
[<<<]>>>>
]
<-
<+++++ +++++>>>[-<<<->>>]<<<
convert to ascii
<+++++ +
[
>+++++ +++>
[+++++ +++>]
<[<]>-
]
print
>>[.<<]<[<<]>>.
我使用了这个翻译:http://esoteric.sange.fi/brainfuck/impl/interp/i.html
答案 2 :(得分:2)
,>,<>[->+>+<<]>>[->>+<<]<[->>>+<<<]>>>++++++++++++++++++++++++++++++++++++++++++++++++
最后48+是为了让bfdev在ascii中显示它。
答案 3 :(得分:0)
,>,<[>[>+>+<<-]>>[<<+>>-]<<<-]>>.
答案 4 :(得分:0)
有点难以理解,但它有效
[&GT;&GT;&GT + LT;&LT;&LT; - &GT;&GT;&GT; [&GT + GT + LT;&LT; - &GT;&GT;并[d 1 +&GT; &GT; - ]&LT;&LT;&LT;&LT;&LT;&LT; [&GT + GT + GT + LT;&LT;&LT; - &GT;&GT;&GT;并[d&LT; 1 +&GT; &GT;&GT; - &GT;&GT; [ - &LT;&LT;&LT; [ - &LT; 1 +&GT;&GT]的百分比抑制率&GT + GT + LT;&LT; - &GT;&GT; [ &LT; 1 +&GT;&GT; - ]&LT;&LT;&GT;&GT;&GT;&GT;]&LT; [ - ]&LT;&LT; [ - ]&LT; [ - ]&LT;
答案 5 :(得分:0)
我知道这是八年前发布的,但是我仍然想分享我的答案,以防其他人偶然发现此话题。
,>,>++++++[-<--------<-------->>]<<[->[->+>+<<]>[-<+>]<<]>[-]
>+>[->+<<<<+>>>]>[<<[-]+>>>[-]++++++++++<[->-[>]<<]<[-<<-----
----->>>>>>>+<<<<<]<[-<]>>>]>>>[-<<<<<<+>>>>>>]<<[-]<<<++++++
[-<++++++++<++++++++>>]<.[-]<.[-]
这使用八个单元格的空间,所有这些单元格都应初始化为零(以防您在较大的程序中使用此空间),并且指针从八个单元格的最左侧开始。它将接受两个单位ASCII数字,并输出一个单两位数字ASCII数字。用一个ASCII数字,我的意思是它将接受并输出组成该数字的字符的ASCII值。完成此程序后,指针将再次位于八个单元格的最左端,并且所有单元格都将返回零。在正常操作下,在磁带上产生的值不会低于0或不会超过81,因此您不必担心底片或绕线。