2

我正在寻找将伪随机数分配给深奥语言brainf ***中的记忆单元的代码。我找到了这个示例代码,但发现它有些混乱。据我所知,这是一个“需要一些组装”(没有双关语?)样本。运行它导致了一个近乎无限的循环。我也已经看过这个问题和维基百科的文章,但仍然有些困惑。

我正在寻找一个可以运行的简单片段。我不在乎它是否会影响它周围的细胞。我只要求对样本进行很好的评论。

4

2 回答 2

1

我已经使用您提到的那个页面上的算法为我正在编写的brainfuck 编译器实现RNG。那里的代码不太难使用。取其中的所有变量名称(如 temp0、temp1、randomh、randoml 等)并给它们一个数字。这将是该变量的单元格编号。然后,您只需为变量插入必要的 > 和 < 符号。这是第一部分的示例。temp0 到 temp5 的单元格编号为 0 到 5,randomh 为 6,randoml 为 7:

pointer starts at 0

pointer is at 0 and need to go to temp0 (cell 0) so do nothing
temp0         [-]
pointer is at 0 and need to go to temp1 (at cell 1) so move one position to the right
temp1        >[-]
pointer is at 1 and need to go to temp2 (at cell 2) so move another position to the right
temp2        >[-]
pointer at 2 and needs to go to 3 so move another position to the right
temp3        >[-]
pointer at 3 and needs to go to 4 so move another position to the right
temp4        >[-]
pointer at 4 and needs to go to 5 so move another position to the right
temp5        >[-]

pointer at 5 and needs to go to 6 so move one to the right
randomh   >[
    pointer at 6 and needs to go to 0 so move 6 to the left
    temp0    <<<<<<+
    pointer at 0 and needs to go to 6 so move 6 to the right
    randomh  >>>>>>-]

并且您继续为代码中的每个变量执行此操作。该算法的重要之处在于分配给 randomh 和 randoml 的单元格不会被任何其他代码触及,因为它们包含随机数种子(每次运行此代码时都会改变)

于 2014-04-27T09:04:45.723 回答
0

BrainfuckMachine IDE 附带的这个代码示例对我来说很好用。

>>>++[
    <++++++++[
        <[<++>-]>>[>>]+>>+[
            -[->>+<<<[<[<<]<+>]>[>[>>]]]
            <[>>[-]]>[>[-<<]>[<+<]]+<<
        ]<[>+<-]>>-
    ]<.[-]>>
]
"Random" byte generator using the Rule 30 automaton.
Doesn't terminate; you will have to kill it.
To get x bytes you need 32x+4 cells.
于 2014-04-28T23:53:03.400 回答