現在地:第三段階修了

セブンビリオンヒューマンズ

第三段階はステージ数が少なかったのですが、大変に梃子摺りました。突破するだけでも精一杯でした。

セブンビリオンヒューマンズ

目標クリアできたのは48年目「班長さんと生徒さん」のスピード目標のみです。

第三弾回では新たなコマンド「tell」と「listen」が出てきました。使い方修得の最初のステージ、正直笑いましたね。こんな形状&内装のビル嫌ですよ!(笑)

セブンビリオンヒューマンズ

これを使いこなすのが難しかったです。listenで待ち時間が生じる分、作業時間がどうしても長くなる感じもします。
また、メモリは全員共有ではなく、社員一人ずつ保存だということが頭から抜けて、listenで待ってる間に他の社員が計算したメモリを引き継いでくれるつもりで何回か指示してしまい、結果が違う!となりました。

52年目「ランダムカウント」と54年目「無難な答え」には特に悩みました。

セブンビリオンヒューマンズ

脇道ステージなので、諦めて先に進もうかと思ったくらいです。

ランダムカウント」は、床に散らばるパネルの中から、0〜5の各数字のパネルが何枚あるか数えるという内容。

セブンビリオンヒューマンズ

用意されている社員が6人なので、各社員がいずれかの数字を担当し、担当数字の数を数えて回る、という解放自体はすぐ思いつきました。しかしそれを実現するとなると下記の3点で苦しみました。

  • それぞれに担当数字を割り当てる
  • すべてのパネルを過不足なく回る
  • すべてのパネルを回ったことを認識する

一点目はcalcで、パネルの前を通過した回数から割り当ててみました。

セブンビリオンヒューマンズ

二点目は、当初は壁まで行き着いたら右列に移動して折り返すという動きを考えたのですが、それを八列行ったり来たりするコマンドにすることができませんでした。もちろん、上へ進むコマンド4回と下に進むコマンド4回を交互にベタ書きすれば動作したと思います。が、部分コピペもない本作でそんなコマンドを書いていたら発狂しそうなので、違う方法を模索しました。結果、

  • 左下パネルをスタート地点にする
  • パネルの調査は常に上に進むものとする
  • 調査の結果、上壁に行き着いたら左壁まで歩数を数えつつ歩いた後、スタート地点に戻って記憶した歩数分右に移動する(調査のコマンドに戻る)

という形で、一列ずつ調査できるようにしました。

三点目は、前述の「調査済み列から左壁までの歩数分、スタート地点から右に移動する」の動きが役に立ちました。このコマンドがあるので、最後のパネル列を調査したあと、なにも指示を加えなくても最右列まで移動してくれるのです。それで、右壁に隣接したら調査打ち切り、という判断をさせることができました。

出来上がったコマンドは、JUMPの線があちらこちらに走っていて、チェックがかなり大変でした。一番混線しているのはここでしょうか。

セブンビリオンヒューマンズ

その分、最後まで想定通りに動くと確認できた時は嬉しかったです。
しかし、コマンドの圧縮を意識したつもりだったのに、目標24行に対して38行だったので、まだまだ無駄がありますね。

無難な答え」は、全パネルの平均値を算出した後、全てのパネルにその数値を記入するという内容。

セブンビリオンヒューマンズ

平均値を出すコマンドまでは、割合すぐ思い付いたのです。パネル列が社員の人数と等しいので、各々が縦計を出した後、その横計を出してから全パネル数で割ればいいじゃないか、という案です。ご覧の通り、それはうまくいきました。

セブンビリオンヒューマンズ

しかしその数値をすべてのパネルに書き写すところが鬼門でした。
前回「床いっぱいに」でも同じような動きを求められて、ランダム移動を使ってみたら、実行速度が遅過ぎると怒られたんですよね。
nearestのコマンドが使えたら、簡単に一列ずつ書き換えを担当させられたのですが、このステージでは用意されていません。
「ランダムカウント」で書いた、全パネルを回る動きを再利用することも考えましたが、この方法だと一列移動なので仕事するのは先頭の社員だけで、残りの面々はすでに回答が書き込まれたパネルを上書きするだけになります。
それは無駄だなぁと思って、結局ランダム移動で押し切ってしまったのですが、社員が右往左往しているのを見ていると、結局ひどく無駄な動きをさせているなと反省しました。でも本当に、どうしたら無駄なくスピード感のある動きにできるのか、考えが及ばないのですよね……。

セブンビリオンヒューマンズ

一応、パネルのない場所に移動しにくくするためにif設定などを足してみたところ、平均361秒を294秒まで短縮はできたのですが、非効率なのは変わりません。プログラマーの道は厳しいですね!

コメント

  • コメントはまだありません。

コメント登録

  • コメントを入力してください。
登録フォーム
名前
メール
URL
コメント
閲覧制限
投稿キー
(スパム対策に 投稿キー を半角で入力してください)