3

私は、brainfuckで大きな整数に対して算術演算を実行することは、おそらくかなり退屈なことですが、完全に可能であることを知っています。

ただし、私が疑問に思っているのは、一般的に受け入れられているベストプラクティスは、大きな整数(または文字列でさえも)を入力として取り込むことです。

ほとんどのコンパイラ/インタプリタでは、入力として一度に完全な文字列を提供できます(その後、各文字はで個別に読み込まれます,)。しかし、私が疑問に思っているのは、これです。入力ストリームがいつ停止するかわからない場合、どのように読み取ることができますか?1つの方法は、特定の文字/文字列を番号に追加して、それが終わったことを示すようにユーザーに指示することだと思いますが、それは少しユーザーフレンドリーではないようです。

移植性を念頭に置いた回答を希望します(実装固有のソリューションに関心がありますが、この質問の主な焦点ではありません)。これを行うための完全に実装にとらわれない方法がない場合、ほとんどの実装で機能し、そうでなければ正常に失敗する方法が次善の策です。

前もって感謝します。

4

2 に答える 2

2

ほとんどの言語では、入力から行を読み取ることができます(たとえば、Cのgets()、C#のReadLine()など)。各値を行として(つまり、Enterで区切って)入力するようにユーザーに依頼してみませんか?

于 2010-06-24T20:13:43.103 に答える
0

実際、私は別の目的のために別の質問に同じコードを投稿しました。ここで、次のコードは、改行文字が満たされない限り、入力したもののASCIIを受け入れ続けます。次に、入力した内容を出力します。

移植性について心配する必要はありません; 数字を読み取るこの戦略で、2つのn桁の数字の加算をすでに実装しました。ここで見つけることができます。

> +
[ - >,>+< 
  ----- -----    ; minus 10
  [              ; if enters means it is not a \n
    +++++ +++++  ; restore prev value
    < 
  ] >>           ; moving forward
]
                 ; numbers are 0 0 49 0 50 0 51
                 ; for input 123
<<<<[<<]         ; moving to the beginning
>>               ; reaching first char
[.>>]            ; just printing till end
于 2013-10-18T16:12:10.153 に答える