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

模組: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

注釋