ヒューマンリソースマシーンとは
一言でいうと、使える命令に制限がかかった競技プログラミングのようなゲームです。アセンブリ以下の機能でいろいろなアルゴリズムを実装していくというプログラミング入門みたいなところがあります。
日本ではswitchで発売中(2017/6/19現在)
ゲーム内表記 | ブログでの表記 |
---|---|
jump if zero | jump(zero) |
jump if neg | jump(neg) |
jumpの終点 | (行数)からjump |
以下、解答につきネタバレ注意
- inbox
- outbox
- inbox
- outbox
- inbox
- outbox
行数
ステップ数
inoutを20回直書きするのが最小値です。
- 3からjump
- inbox
- outbox
- jump
ステップ数
inoutを20回直書きするのが最小値です。
- 5からjump
- inbox
- outbox
- inbox
- outbox
- jump
- copyfrom 4
- outbox
- copyfrom 0
- outbox
- copyfrom 3
- outbox
- 7からjump
- inbox
- copyto 0
- inbox
- outbox
- copyfrom 0
- outbox
- jump
- 6からjump
- inbox
- copyto 0
- inbox
- add 0
- outbox
- jump
- 4からjump
- 2からjump
- inbox
- jump(zero)
- outbox
- jump
- 6からjump
- inbox
- copyto 0
- add 0
- add 0
- outbox
- jump
ステップ数の条件をみたすためにこのあたりから必要となるテクニックとして、outboxを先に置くというものがある。
outboxが先にあるとjumpを効率よく実行できる場合が多くなる。
outboxが先にあるとjumpを効率よく実行できる場合が多くなる。
- jump
- 4からjump
- outbox
- 1からjump
- 5からjump
- inbox
- jump(zero)
- jump
- 9からjump
- inbox
- copyto 0
- add 0
- copyto 0
- add 0
- copyto 0
- add 0
- outbox
- jump
- 10からjump
- inbox
- copyto 0
- inbox
- copyto 1
- sub 0
- outbox
- copyfrom 0
- sub 1
- outbox
- jump
- 14からjump
- inbox
- copyto 0
- add 0
- copyto 0
- add 0
- copyto 0
- add 0
- copyto 1
- add 1
- copyto 0
- add 0
- add 1
- outbox
- jump
- jump
- 8からjump
- copyfrom 0
- outbox
- 1からjump
- 9からjump
- inbox
- copyto 0
- inbox
- sub 0
- jump(zero)
- jump
- 10からjump
- inbox
- copyto 0
- inbox
- sub 0
- jump(neg)
- add 0
- jump
- 5からjump
- copyfrom 0
- 7からjump
- outbox
- jump
- jump
- 7からjump
- copyto 0
- sub 0
- sub 0
- 8からjump
- outbox
- 1からjump
- inbox
- jump(neg)
- jump
- jump
- 8からjump
- 10からjump
- copyfrom 4
- 12からjump
- outbox
- 1からjump
- inbox
- jump(neg)
- inbox
- jump(neg)
- jump
- 5からjump
- inbox
- jump(neg)
- 7からjump
- copyfrom 5
- jump
行数を短くするとループの中に条件分岐ができることがある。その場合、分岐をループ外に持っていくとステップ数を小さくできることがある。
行数
ステップ数
行数
- 5からjump
- inbox
- copyto 0
- 10からjump
- outbox
- copyfrom 0
- jump(zero)
- jump(neg)
- bump- 0
- jump
- 6からjump
- bump+ 0
- 8からjump
- jump
ステップ数
- jump
- 4からjump
- 9からjump
- 13からjump
- outbox
- 1からjump
- inbox
- jump(zero)
- copyto 0
- jump(neg)
- 10からjump
- outbox
- bump- 0
- jump(zero)
- jump
- 6からjump
- 14からjump
- outbox
- bump+ 0
- jump(zero)
- jump
かけ算は足し算のループで表現できる。
一方が0のときは特殊なので先に判定しておく。
行数
ステップ数
かけ算をループで実行することになるので、ループ回数は小さい方の数にしたい。カーペット0,5に大きい数字、1に小さい数字を置いてから処理に入るようにする。
一方が0のときは特殊なので先に判定しておく。
行数
- jump
- 11からjump
- copyfrom 5
- outbox
- 1からjump
- inbox
- copyto 1
- inbox
- copyto 0
- copyfrom (zero!)
- 14からjump
- copyto 5
- bump- 1
- jump(zero)
- copyfrom 5
- add 0
- jump
ステップ数
かけ算をループで実行することになるので、ループ回数は小さい方の数にしたい。カーペット0,5に大きい数字、1に小さい数字を置いてから処理に入るようにする。
- jump
- 8からjump
- inbox
- copyfrom (zero!)
- 11からjump
- copyto 5
- 26からjump
- copyfrom 5
- outbox
- 1からjump
- inbox
- jump(zero)
- copyto 0
- inbox
- jump(zero)
- copyto 1
- sub 0
- jump(neg)
- jump(zero)
- copyfrom 1
- copyto 5
- copyfrom 0
- copyto 1
- copyfrom 5
- copyto 0
- jump
- 14からjump
- 15からjump
- copyfrom 0
- copyto 5
- 22からjump
- 30からjump
- bump- 1
- jump(zero)
- copyfrom 5
- add 0
- copyto 5
- jump
行数
ステップ数
- jump
- 7からjump
- copyfrom 0
- outbox
- 1からjump
- copyfrom 5
- 9からjump
- copyto 0
- inbox
- jump(zero)
- add 0
- jump
ステップ数
- jump
- 6からjump
- 8からjump
- copyfrom 0
- outbox
- 1からjump
- inbox
- copyto 0
- jump(zero)
- 11からjump
- inbox
- jump(zero)
- add 0
- copyto 0
- jump
- 10からjump
- inbox
- copyto 0
- copyfrom 9
- copyto 3
- bump+ 3
- copyto 4
- outbox
- 18からjump
- copyfrom 0
- sub 3
- jump(neg)
- copyfrom 3
- copyto 8
- add 4
- copyto 3
- copyfrom 8
- copyto 4
- outbox
- jump
- jump
- 7からjump
- copyfrom 0
- outbox
- 1からjump
- inbox
- copyto 0
- 10からjump
- 13からjump
- inbox
- jump(zero)
- sub 0
- jump(neg)
- jump
- 9からjump
- add 0
- copyto 0
- jump
- jump
- 10からjump
- add 0
- outbox
- 1からjump
- inbox
- copyto 1
- inbox
- copyto 0
- copyfrom 1
- 11からjump
- sub 0
- jump(neg)
- jump
- jump
- 6からjump
- copyto 0
- 10からjump
- copyfrom 0
- outbox
- 1からjump
- inbox
- jump(zero)
- copyto 1
- 12からjump
- copyto 0
- bump- 1
- jump(zero)
- add 0
- jump
- jump
- 12からjump
- copyfrom 2
- outbox
- 1からjump
- copyfrom 9
- copyto 2
- inbox
- copyto 1
- inbox
- copyto 0
- 15からjump
- copyfrom 1
- sub 0
- jump(neg)
- copyto 1
- bump+ 2
- jump
課題行数が多いだけあって難しいのでまだ解けてないです。
現状は行数:35 ステップ:97です。
現状は行数:35 ステップ:97です。
ついにポインタが使えるようになりました。
- 5からjump
- inbox
- copyto 10
- copyfrom [10]
- outbox
- jump
- 4からjump
- inbox
- copyto 24
- 7からjump
- copyfrom [24]
- jump(zero)
- outbox
- bump+ 24
- jump
- 5からjump
- 7からjump
- bump+ 14
- inbox
- jump(zero)
- copyto [14]
- jump
- 3からjump
- 10からjump
- bump- 14
- jump(zero)
- copyfrom [14]
- jump
- jump
- 13からjump
- copyfrom 18
- outbox
- 1からjump
- copyfrom 14
- copyto 18
- bump- 18
- copyto 19
- inbox
- copyto 15
- 15からjump
- bump+ 18
- 16からjump
- bump+ 19
- copyfrom [19]
- jump(zero)
- sub 15
- jump(zero)
- jump
- jump
- 9からjump
- copyfrom 6
- outbox
- 1からjump
- 11からjump
- copyfrom 5
- copyto 9
- inbox
- copyto 6
- 13からjump
- copyfrom [9]
- jump(zero)
- sub 6
- jump(zero)
- bump+ 9
- jump
行数
ステップ数
- jump
- 10からjump
- copyfrom [14]
- outbox
- bump+ 14
- 1からjump
- 13からjump
- inbox
- copyto [14]
- copyfrom 14
- copyto 13
- 14からjump
- bump- 13
- jump(neg)
- copyfrom [14]
- sub [13]
- jump(zero)
- jump
ステップ数
- inbox
- copyto 0
- outbox
- bump+ 14
- inbox
- copyto 1
- sub 0
- jump(zero)
- 17からjump
- copyfrom [14]
- outbox
- bump+ 14
- 8からjump
- 20からjump
- inbox
- copyto [14]
- copyfrom 14
- copyto 13
- 21からjump
- bump- 13
- jump(neg)
- copyfrom [14]
- sub [13]
- jump(zero)
- jump
- copyfrom 23
- copyto 20
- copyfrom 24
- copyto 21
- 9からjump
- inbox
- jump(zero)
- copyto [20]
- bump+ 20
- jump
- 6からjump
- 14からjump
- inbox
- jump(zero)
- copyto [21]
- bump+ 21
- jump
- 11からjump
- 39からjump
- copyfrom [23]
- sub [24]
- jump(zero)
- jump(neg)
- 23からjump
- copyfrom [24]
- outbox
- bump+ 24
- sub 21
- jump(neg)
- jump
- 18からjump
- 29からjump
- copyfrom [23]
- outbox
- bump+ 23
- sub 20
- jump(neg)
- jump
- 17からjump
- copyfrom [23]
- outbox
- bump+ 23
- sub 20
- jump(neg)
- jump
- 35からjump
- bump+ 24
- sub 21
- jump(neg)
- 24からjump
- 30からjump
- 36からjump
- 7からjump
- inbox
- 8からjump
- copyto 12
- copyfrom [12]
- outbox
- bump+ 12
- copyfrom [12]
- jump(neg)
- jump
ステップ数が未達成です。
行数
- jump
- 27からjump
- copyfrom 3
- outbox
- 9からjump
- copyfrom 0
- outbox
- 1からjump
- inbox
- copyto 0
- sub 10
- jump(neg)
- copyfrom 9
- copyto 3
- copyfrom 0
- sub 11
- jump(neg)
- 20からjump
- copyto 0
- bump+ 3
- copyfrom 0
- sub 11
- jump(neg)
- jump
- 19からjump
- copyfrom 3
- outbox
- copyfrom 9
- copyto 3
- 14からjump
- 30からjump
- copyfrom 0
- sub 10
- jump(neg)
- copyto 0
- bump+ 3
- jump
24,26年目を思い出しますね。
- jump
- 10からjump
- add 15
- outbox
- copyfrom 1
- outbox
- 1からjump
- copyfrom 14
- copyto 1
- inbox
- 14からjump
- sub 15
- jump(neg)
- copyto 0
- bump+ 1
- copyfrom 0
- jump
行数が未達成です。
行数
ステップ数
2以外の偶数を飛ばすようにすると一気に減らせます
ステップ数
2以外の偶数を飛ばすようにすると一気に減らせます
- copyfrom 24
- 29からjump
- copyto 1
- copyto 23
- bump+ 23
- bump+ 23
- copyto 22
- bump+ 22
- inbox
- copyto 5
- 15からjump
- 25からjump
- 35からjump
- sub 23
- jump(neg)
- copyto 0
- bump+ 1
- copyfrom 0
- jump
- 11からjump
- copyfrom 0
- jump(zero)
- copyfrom 24
- copyto 1
- bump+ 23
- sub 22
- jump(zero)
- bump+ 23
- 22からjump
- copyfrom 5
- jump
- 17からjump
- copyfrom 23
- outbox
- bump- 1
- jump(zero)
- bump+ 1
- copyto 5
- copyfrom 24
- copyto 1
- copyfrom 5
- jump
行数を抑えるならバブルソート、ステップ数を抑えるなら挿入ソートが良いでしょう。
行数
ステップ
行数
- jump
- 17からjump
- 6からjump
- copyfrom [20]
- jump(zero)
- outbox
- bump+ 20
- jump
- 1からjump
- copyfrom 24
- 3からjump
- copyto 20
- 13からjump
- inbox
- copyto [20]
- jump(zero)
- bump+ 20
- jump
- 11からjump
- 32からjump
- copyto 21
- copyto 22
- bump- 20
- jump(zero)
- 30からjump
- bump+ 22
- copyfrom [21]
- sub [22]
- jump(neg)
- copyfrom [22]
- copyto 19
- copyfrom [21]
- copyto [22]
- copyfrom 19
- copyto [21]
- 21からjump
- bump+ 21
- sub 20
- jump(neg)
- copyfrom 24
- jump
ステップ
- copyfrom 24
- copyto 20
- copyto 23
- jump
- 9からjump
- 14からjump
- copyfrom [20]
- outbox
- bump- 20
- jump(neg)
- jump
- 8からjump
- bump+ 20
- 1からjump
- inbox
- copyto 0
- 41からjump
- inbox
- jump(zero)
- copyto 19
- 21からjump
- 22からjump
- copyfrom [23]
- sub 19
- jump(neg)
- bump+ 23
- sub 20
- jump(neg)
- jump(zero)
- jump
- 18からjump
- copyfrom 20
- copyto 21
- copyto 22
- bump+ 22
- 35からjump
- copyfrom [21]
- copyto [22]
- copyfrom 21
- sub 23
- jump(zero)
- bump- 21
- bump- 22
- jump
- 32からjump
- 23からjump
- copyfrom 19
- copyto [23]
- bump+ 20
- copyfrom 24
- copyto 23
- jump