Brainfuckの基本的な構文について学び、 "Hello World"スクリプトをプログラミングすることですぐに自分自身に挑戦しようとしています。現時点では、私はすべての手紙を持っています。私が知っているように、o
のASCIIコードは111
です。ここに私のコードは、その番号を取得し、Oを印刷することです:それを破壊 +++++[>>++<<-][-]>>+[<<+++++[>>>++<<<-]>>-]>+.
、私は+ 1 2 * 5を操作することにより、11に、[2]を設定しています。次に、[2]の減分ごとに10に[3]を加えて11倍にします。 110になるはずなので、最後に印刷前に追加します。しかし、私はASCIIコード91、またはHell[
を書き続けています。どこで私は間違えましたか?
ありがとうございます!
EDIT:冒頭で6 +に変更しましたが、今は動作しますか?それは13 * 10 + 1 = 131で、11ではなく動作していますか? HmmmmmmmBrainf * ck Multiplication
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'を印刷するだけのコードです。セル#2の最初のループの後に2番目のループは必要ありません。 はここで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'
次のWebサイトでは、あなたのBrainf * ckのコードをテストすることによって、あなたを助けることができる: Brainfck Visualizer
1
私はちょうど私の中でこれを実行しようとしました(自己プログラミングされた)Brainfuck-interpreterと私は'o'
を持っていました。あなたの通訳に問題があるかもしれません。
問題の可能性があるもう一つの理由は、あなたのセルが以前に使用されていて、それでも値が等しくないことです。あなたはすでにあなたのコードの一部しか表示していないので、前に使用されていたと思います(すでに'hell'
(面白いxD)を印刷して、cell[1]
をスキップします)。
私は個人的に16文字のブロックでASCIIテーブルを分割しました。したがって、特定の文字を取得する場合は、16
を3
(数字用)、4
(大文字用)または6
(小文字用)と混ぜ合わせます。しかし、いくつかの手紙については、16
を5
または7
と「もっと速い」(短いコード)としています。 '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でx == yを数える
- 4. brainf * ckの合計が10より大きい数値を追加する
- 5. NetSuite Advanced PDF Multiplication
- 6. Scilab: "inconsistent multiplication"エラーメッセージ
- 7. CKエディタ
- 8. Python Brainf *** - whileループのバグ
- 9. CKエディタ - コピー&ペースト
- 10. Python Multiplication Programゲーム、再試行オプション
- 11. Multiplication AppでDo Whileを使用する
- 12. CKエディタの選択ワード
- 13. brainf * ckの2つの細胞が等しいかどうかをどうやって確認できますか?
- 14. CKエディターの奇妙な文字
- 15. ckエディタからデータを分割する
- 16. CKエディタ - IDの割り当て
- 17. カスタムボタンを追加する| CK Editor Angular 2
- 18. CUDA Matrix Multiplicationが間違ったメモリ位置に書き込む
- 19. CKエディタを適用したSylius電子商取引の問題
- 20. CKエディタでブレークポイントを使用するイメージパスが破損する
- 21. CKエディタのコマンドボタンを有効/無効にする
- 22. コロナsdkのCKエディタからデータを取り出す方法は?
- 23. Ndependを使用したC#プロジェクトのCKメトリック
- 24. CK Editor - Ms Wordからの画像貼り付け
- 25. Laravel 5.3ファイルマネージャがCKエディタで画像をアップロードできません
- 26. CK EditorをカスタムJoomlaコンポーネントに統合する際のトラブル
- 27. AndroidでRichtext/CKエディタが動作しない
- 28. CKエディターの内容が不明です。tempイメージタグgeneretaed
- 29. jQueryの検証 - ボタンクリックイベントのCKエディタで動作しません
- 30. JavaScriptを使ってCKエディタでダイナミックメニューを作成するには?
良い言及、質問に直接答えませんが。あなたは彼のコードを分析しますが、何が間違っているのかは言いません(実際にコードは間違っていませんが、あなたはそれを言っていません)。あなたは '' o ''を印刷するのが大変だと言っていますが、それは頭に浮かぶものです。単純なことをするには多くのコードが必要です。彼は明らかに独自の解決策を見つけようとしましたが、彼に 'Hello World!'プログラムの例を与えました。しかし、いくつかの言及は ''実際には何もしない ''のようにまだ良くなっています(この場合、なぜ[*] [*]は何もしません。 – Aemyl