我剛剛瞭解了Brainfuck的基本語法,並試圖通過編寫「Hello World」腳本來快速挑戰自己。此刻,我收到了每封信,直到你打開「o」。據我所知,o
的ASCII碼是111
。這裏是我的代碼來獲取該號碼,打印○: +++++[>>++<<-][-]>>+[<<+++++[>>>++<<<-]>>-]>+.
打破下來,我通過操作2 * 5 + 1設置[2] 11。然後,我將[2]的每次遞減增加10到[3],這樣11次。這應該會導致110,所以我打印前添加一個。但是,我一直使用ASCII代碼91或Hell[
。我哪裏做錯了?
在此先感謝!
編輯:我剛把它改成6 +的開頭,現在它的作品?即使這將運行13 * 10 + 1 = 131,而不是11?嗯mmmmmmmBrainf * ck乘法
2
A
回答
1
我知道Brainf * ck不關心縮進和事情。但是你應該考慮縮進代碼,因爲這樣可以更容易閱讀。
讓我們看看你的代碼:
+++++ intialize counter (cell #0) to 5
[ use loop to set cell #2 to 10
>>++ add 2 to cell #2
<<-
]
[-] does actually nothing
>>+ add 1 to cell #2
[ use outside with cell #2 as counter
<<+++++ sets cell #0 to 5
[ use inner loop to add 10 to cell #3
>>>++
<<<-
]
>>-
]
>+. add 1 to cell #3 and print result
您的代碼實際上是按預期工作,不工作的可能,這是這片之前執行的代碼,設置細胞對其它初始值的原因。
這是很多代碼來打印一個'o',你可能已經打印它在第二個單元格的第一個循環後,不需要第二個循環。 下面是與Brainf * CK打印爲例的「Hello World」:
+++++ +++++ initialize counter (cell #0) to 10
[ use loop to set 70/100/30/10
> +++++ ++ add 7 to cell #1
> +++++ +++++ add 10 to cell #2
> +++ add 3 to cell #3
> + add 1 to cell #4
<<<< - decrement counter (cell #0)
]
> ++ . print 'H'
> + . print 'e'
+++++ ++ . print 'l'
. print 'l'
+++ . print 'o'
> ++ . print ' '
<< +++++ +++++ +++++ . print 'W'
> . print 'o'
+++ . print 'r'
----- - . print 'l'
----- --- . print 'd'
> + . print '!'
> . print '\n'
下面的網站可以通過測試你的Brainf * CK代碼幫助您: Brainfck Visualizer
1
我只是試圖在運行此我(自編)Brainfuck口譯員,我得到了'o'
,就像你期望的那樣。所以也許你的口譯員有問題。
您的問題的另一個可能的(也是更可能的原因)是,您的單元格之前已經使用過,並且其值仍然不等於零。我想他們之前已經使用過了,因爲你只在這裏顯示你的代碼的一小部分(你已經打印了'hell'
(在xD的方式中很有趣),你跳過了cell[1]
)。
我親自將ASCII-table分成16個字符的塊。所以如果我想得到一個特定的字符,我可以16
與3
(用於數字),4
(用於大寫字母)或6
(用於小寫字母)。不過,對於某些字母,如果它「更快」(較短的代碼),我可以用5
或7
來代替16
。例如'o'
我會這樣:
++++ write 4 in cell(0)
[ while cell(0) != 0
>++++ write 4 in cell(1)
[ while cell(1) != 0
>+++++++ add 7 to cell(2)
<- decrement cell(1)
] go back to 'while cell(1) != 0'
<- decrement cell(0)
] go back to 'while cell(0) != 0'
>> go to cell(2) (has value 4*4*7 = 0x70 or 'p')
- decrement cell(2) (it's an 'o' now)
. print cell(2)
相關問題
- 1. Brainf * ck的乘法
- 2. Brainf * ck解釋器循環問題
- 3. Brainf * ck解釋器奇怪的輸出
- 4. CK編輯問題
- 5. 乘法
- 6. 乘法
- 7. 乘法
- 8. 乘法* =
- 9. 矩陣乘矢量乘法
- 10. 大整數乘法(階乘)
- 11. 正常乘法的定點乘法
- 12. Python字符乘法或列表乘法
- 13. CK編輯appendTo不工作
- 14. 名單乘法
- 15. 跨乘法表
- 16. Vbs乘法表
- 17. 變量乘法
- 18. 數組乘法
- 19. 乘法總之
- 20. CSSMatrix乘法
- 21. 矩陣乘法
- 22. Memoizing乘法
- 23. 實數乘法
- 24. NSDecimal乘法
- 25. 數組乘法
- 26. vhdl乘法器
- 27. 嵌套乘法
- 28. 乘法除了
- 29. jquery減乘法
- 30. 乘法Datetime * Double
好的提到,雖然它不直接回答這個問題。你分析他的代碼,但你沒有說它有什麼問題(代碼實際上沒有錯,但你也沒有這麼說)。你說打印一個'o''的代碼很多,但是這很讓人頭疼:你需要很多代碼來完成簡單的事情。你給他一個'Hello World!'程序的例子,儘管他顯然試圖找到一個自己的解決方案。然而,有些提到仍然像'實際上沒有什麼'一樣好(也許你可以解釋爲什麼*'[ - ]'在這種情況下什麼都不做,但確定)。 – Aemyl