2017-09-11 1 views
-3

私は、学生の割り当てを自動的に格付けするためのbashスクリプトに取り組んでおり、乱数の扱いに困惑しています。それはint型の入力を待つbashを使ったJavaプログラムへのインテリジェントな入力

学生のプログラムの出力は、次のようになります。

4 + 6 =

そして、私のスクリプトは、必ずそのプログラムが正しくチェックに実行するために正しい入力を生成する必要がありますレスポンス。問題は、数字が常に4と6ではなく、1から20までの任意の乱数のセットであることです。

したがって、プログラムで「5 + 7 =」と表示された場合、スクリプトには12を入力する必要がありますそれは "20 + 12 ="を印刷し、私のスクリプトは32を入力する必要があります。bashスクリプトを作成する方法はありますか?私はそれを即座に計算する方法を知らない。私はcoprocコマンドを試しましたが、それは私が好きなように働いていません。

ありがとうございます!

+3

"これは学生の番組がこのように見える"ということを理解していません。あなたはソースコードにアクセスできますか?あなたのテストは、プロンプトに基づいて反応する必要がありますか? –

+0

出力はそのように見えます。だから、私のスクリプトはプロンプトに反応して値を渡す必要があります –

+0

Bashは私がここに行く方法ではありません。この質問は、あなた自身が開発者ではないことを示唆しています。本当? – duffymo

答えて

0

mathexpressionを分割してスタックに追加することをお勧めします。それは次のようになります:| 4 | + | 6 | 次に、数値を実数に変換しようとする可能性があります。それが失敗すると、+、 - 、*、/のような演算子であるかどうかを尋ねることができます。 これを済ませたら、スタックを計算して計算してください。あなたがそれを計算したら、それを生徒の入力と比較してください。

または簡単な方法: 乱数を保存し、生成した後に計算する必要があります。

ご迷惑をおかけして申し訳ございません。

0

プログラムの出力は、単一の行にある場合は、その後、「=」

LINE = `echo $REPLY | sed 's#=.*##` 

を削除

read -r 

を使用して、それをキャプチャし、bashは数値変数としてそれを解釈することができます

echo $((LINE)) 
0

さらに考えてみると、purpのMath.Random()の実装をオーバーライドする方が理にかなっています生徒プログラムは常に同じ値を生成するように格付けすること。

関連する問題