置顶公告:【置顶】关于临时开启评论区所有功能的公告(2022.10.22) | 【置顶】关于本站Widget恢复使用的公告
  • 你好~!欢迎来到萌娘百科镜像站!如需查看或编辑,请联系本站管理员注册账号。
  • 本镜像站和其他萌娘百科的镜像站无关,请注意分别。

Module:Sandbox/あめろ/Brainfuck/doc

贴贴♀百科,万娘皆可贴的百科全书!转载请标注来源页面的网页链接,并声明引自贴贴百科。内容不可商用。
跳到导航 跳到搜索

这是Module:Sandbox/あめろ/Brainfuck的文档页面

执行Brainfuck程序。

用法

参数1为代码。代码中,除+-<>[],.之外的字符都将被忽略。

参数2为输入。输入的内容将按字节而非Unicode码位读取。输入的内容末尾会被添加-1 (0xFF)作为EOF。

返回程序的输出。

示例

Hello, World!

输出“Hello, World!”。[1]

{{User:あめろ/Brainfuck|
+[-->-[>>+>-----<<]<--<---]>-.>>>+.>>..+++[.>]<<<<.+++.------.<<-.>>>>+.
}}

执行结果:User:あめろ/Brainfuck

字母小写化

花了一夜肝出来的,水平不好。

{{User:あめろ/Brainfuck|1=
[由于内存单元初始是0,这对方括号里的代码(+-<>[],.)会被跳过,所以可以当作文档注释。
该程序实现了将输入的内容中的大写字母转换为对应小写字母,而其它字符不变。]

MEM: zero zero charIn
     ^ 0    0     0
>>(charIn),+[-                          读取字符,当字符不是EOF时进入循环
    将charIn减'A',并复制为两份:charCpy在下一段用,charOut在最终输出的时候用。
    MEM: charOut charCpy charIn counter
            0       0     ^ X      0
    >(counter)++++++++[<-------->-]<-   charIn减'A'的ASCII码65 (8 * 负8 减 1)
    (charIn)[<+<+>>-]                   复制charIn到charCpy和charOut中

    判断是charCpy否小于等于26,若是,则isLT26非0。
    MEM: charOut charCpy isLT26 temp doesDec
            X       X     ^ 0     0     0
    >(temp)+++++[<+++++>-]<+            isLT26 = 26 (LT: less than)
    <(charCpy)[
        >(isLT26)[>(temp)+>(doesDec)[-]+<<-]
        >(temp)[<+>-]                   上一行和此行:isLT26非0时,使doesDec为1
        >(doesDec)[<<->>-]              若doesDec,则isLT26减1、doesDec减1
        <<<(charCopy)-                  charCopy减1
    ]

    如果是小写字母,输出对应大写字母;否则输出本身。
    MEM: charOut counter isLT26
            X     ^ 0       B
    >(isLT26)[                          isLT26非0时
        <(counter)++++[<++++++++>-]     charOut加32 (4 * 8)
        >(isLT26)[-]                    将isLT26清零,以退出循环
    ]
    <(counter)++++++++[<++++++++>-]<+   charOut加65 (8 * 8 加 1)
    (charOut).[-]                       输出并清零

    MEM: zero zero charIn
         ^ 0    0     0
    >>(charIn),+                        读取下一个字符
]
|2=ABcdEf123}}

去掉注释:

{{User:あめろ/Brainfuck|
>>,+[->++++++++[<-------->-]<-[<+<+>>-]>+++++[<+++++>-]<+<[>[>+>[-]+<<-]>[<+>-]>[<<->>-]<<<-]>[<++++[<++++++++>-]>[-]]<++++++++[<++++++++>-]<+.[-]>>,+]
|ABcdEf123}}

执行结果:User:あめろ/Brainfuck

注释