この記事では、ヒューマン・リソース・マシーンの私の解答を紹介します。
夫や他サイトさんの解答を見てみると、人によって解き方が違うのが面白かったので、私の解答も記録として残してみることにしました。
注意事項
あくまでへっぽこ元プログラマーの解答です。←ココ大事
効率化目標を達成していないステージもあります。
もっとよい解き方があるかもしれないことをご承知おきください。
効率化目標を達成していないステージもあります。
もっとよい解き方があるかもしれないことをご承知おきください。
自分の解答とくらべて、
参考にする(なる?)もよし、
鼻で笑うもよし、
違いを楽しんでいただけたら幸いです。
今回は22年目~31年目までです。効率化目標を達成するのが難しくなってきました。
他のステージの解答は下の記事にまとめています。
22年目:フィボナッチ数列
ダヴィンチコード以外で「フィボナッチ数列」というワードをきくことになるとは(笑)
ダヴィンチコード、小説も映画も面白いので見たことない方はぜひ!
サイズ
カーペットに、
- 2つ前の値
- 1つ前の値
- 1つ前の値+2つ前の値
を保存する場所を用意。
- 「1つ前+2つ前」と「入力」を比較
- 「1つ前+2つ前」の方が大きかったら次のデータへ
- 「入力」の方が大きかったら、
- 「1つ前+2つ前」を出力
「1つ前の値」を「2つ前の値」へ
「1つ前+2つ前」を「1つ前の値」へ
「1つ前の値」と「2つ前の値」を足して「1つ前+2つ前」へ - 1.へ戻る
スピード
1、1を最初に出力するのは確定なので、余計な判定をしないで、出力するようにしました。
23年目:一番小さいのは?
サイズ目標のみクリア。
サイズ目標
- WK … 読み込んだ値を保存
- Min … 現時点での最小値を保存
24年目:あまりはいくつ?
掛け算の逆。1つ目から2つ目の値をどんどん引いていきます(A-B→A)
A-Bがマイナスになったら、その時のAの値があまりになります。
25年目:ゼロまで足して
- TOTAL … 値(CNT)を足していき、合計を求める
- CNT … 入力された値をカウントダウンする
26年目:割り算のしかた
1つ目から2つ目の値をどんどん引いていき、引いた回数が商になります。
24年目のプログラムをコピーすると楽です。
28年目:小から大へ
効率化目標をクリア出来ませんでした……
1つ目のデータ:A
2つ目のデータ:B
3つ目のデータ:C
- CとBを比較し、Bの方が小さい場合CとBを入れ替え
- CとAを比較し、Aの方が小さい場合CとAを入れ替え
- BとAを比較し、Aの方が小さい場合BとAを入れ替え
- C、B、Aを出力。
29年目:間接的な指定
- 直接指定(2行目) … その番号のカーペットの値をみる。
- 間接指定(3行目) … その番号のカーペットにある値の番号のカーペットをみる。
30年目:隠された暗号
最初に、入力の数値を24番目のカーペットに入れます。
31年目:文字列を逆に
間接指定をうまく使いましょう。
他のステージの解答
行数の多いステージでは、画像が見にくくて申し訳ありません。
拡大してなんとか見ていただければと思います。
他のステージの解答は下の記事にまとめています。