コンテンツにスキップ

024: Jump 0で眠る機械

ヒント / 解答

難易度: ☆☆

問題

関数 run(program, inputs=None, max_steps=1000) を書いてください。 この関数は、SSCプログラムを Jump 0 で停止するまで実行し、出力値のリストを返します。

program は、メモリ0番地から順に配置する整数のリストです。 不足するメモリは0で埋めます。 inputsRead 命令が読む値のリストです。

制約

  • 前問の make_machinestep を使ってください。
  • 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 全体を返す関数を書いてください。