この記事では、ヒューマン・リソース・マシーンの私の解答を紹介します。
夫や他サイトさんの解答を見てみると、人によって解き方が違うのが面白かったので、私の解答も記録として残してみることにしました。
注意事項
- あくまでへっぽこ元プログラマーの解答です。←ココ大事
- 効率化目標を達成していないステージもあります。
- もっとよい解き方があるかもしれないことをご承知おきください。
自分の解答とくらべて、
参考にする(なる?)もよし、
鼻で笑うもよし、
違いを楽しんでいただけたら幸いです。
今回は1年目~10年目までです。他のステージの解答は下の記事にまとめています。
1年目:運び屋さん
「inbox」で左側のコンベアからデータを入手して、「outbox」で右側のコンベアに持って行くだけの簡単なお仕事。
2年目:忙しい運び屋さん
「jump」で次に実行する場所を指定します。
ジャンプ先を上に持って行くと、その間の命令をくり返すループになります。
サイズ目標とスピード目標、両方同時に達成できません。
サイズ目標
これが通常。
スピード目標
スピード目標のランプがつかなくて「えっ!?」ってなりませんでしたか?
スピード目標は、ループの回数を減らして達成(ゴリ押し)
これでいいの……?
3年目:コピーのお仕事
「copyfrom」でカーペット上のデータを入手します。
「inbox」は使わなくてOK。
4年目:逆にして運んで
「copyto」でカーペット上に手元のデータのコピーを置きます。
上司にきける解答例は、インプットに対してのアウトプットの結果です。
答えをズバリ言われてしまうのかと思って、ずっと押せないでいました。
6年目:真夏の雨
「add」で手元のデータとカーペット上のデータを加算します。
手元のデータは、加算結果に上書きされ、カーペット上のデータは、加算前と変わらずそのまま残ります。
7年目:ゼロを取り除け
「jump if zero」は、手元のデータが0の場合、指定の場所にJUMPします。
手元のデータが0以外の場合は、次の行を実行します。
8年目:当社比300%
「add」は、手元のデータとカーペット上のデータを加算します。
手元のデータは、加算結果に上書きされ、カーペット上のデータは、加算前と変わらずそのまま残ります。
9年目:ゼロだけを残せ
- データが0の場合:右側のコンベアに持って行く→次のデータを入手する。
- データが0以外の場合:次のデータを入手する。
使う「inbox」は1つだけ。
10年目:3回で8を
2倍+2倍で4倍。
4倍+4倍で8倍。
11年目以降の解答
行数の多いステージの画像が見にくくて申し訳ありません。
拡大してなんとか見ていただければと思います。
他のステージの解答は下の記事にまとめています。