024: Jump 0で眠る機械¶
難易度: ☆☆
問題¶
関数 run(program, inputs=None, max_steps=1000) を書いてください。
この関数は、SSCプログラムを Jump 0 で停止するまで実行し、出力値のリストを返します。
program は、メモリ0番地から順に配置する整数のリストです。
不足するメモリは0で埋めます。
inputs は Read 命令が読む値のリストです。
制約¶
- 前問の
make_machineとstepを使ってください。 max_steps回実行しても停止しない場合はRuntimeErrorを送出してください。- 返り値は
machine["outputs"]です。
例¶
>>> program = [
... assemble_line("Read 10"),
... assemble_line("Write 10"),
... assemble_line("Stop"),
... ]
>>> run(program, [42])
[42]
>>> run([assemble_line("Stop")])
[]
発展¶
停止時のメモリやAccumulatorも観察できるように、出力だけでなく machine 全体を返す関数を書いてください。