見出し画像

クリスマスクイズ第3問は本気で頑張った(一部修正あり)

注意:答えも導き方もあっているか知りません。責任持てません。

注意2:Excel画像は値が誤っている状態のものがあるかもしれません。


最初は…

第1問、第2問からモチベーションが下がっていて、クロスワードだけやって会話をSS撮ったところであまりに面倒そうで投げました。

「これ簡単なスクリプトでも組んで問題作ったのでは?」

しかしその後、ギルマスであるいえっささんが計算してると聞いて、
キャラの会話をよく読むとExcel関数っぽいねこれという結論に。

よし、ぼくもがんばろう

コースの長さ

基本ルール
  • 1~100マスがコースになっている。

  • 通常レースやすごろく的なものだとスタートマス等とだけ言うと思うんだけど、「スタートは0マス目」でそれ以上下がらない
    →関数の設定によってはいきなりマイナスになっちゃうかもだけど0にしてねの意味?

  • 100マス目に到達した「ポリン」から順位がつく
    →後述する、同一ターンゴール時の順位決定意思か?
    →参加モンスターも五十音順であった。

  • ゴール後に下がっても順位は変わらない
    →100マス目に着いたら終わりではなく、次ターン以降98マス目等に戻ることもある。
    →その場合、先に決定している順位は固定。関数を動かすために一緒に付き合えくらいの意味か。

なぜExcel関数か

  • スクリプトだと誰から動くのかが決定できないのでは
    →1ターン前の情報が変数にあるので別に大丈夫な気がしてきた。

  • Excel関数とスクリプトでは再現させるのに難易度の差が大きいと思えた

  • 「0マス目」が変数の初期値の意味だと思ったけど、Excelの計算用数字としても変じゃない

  • 下記画像のリエッタのセリフ「同じ列にいる」

同じ「列」????

ここまでの状態をExcelに起こしてみた

Excelで右に進めるとセリフと整合がとれる

左3列は人、モンスターの愛称、進行ロジック
右4列はターン数とそれぞれのモンスターのマス位置

関数はこんな感じで

たとえば

夏美のまるちゃんは下記の通り進むので、

1ターンに3マス進み、次の1ターンはお休み、以降繰り返し

作成者が手計算のはずないので、絶対に手計算せず関数で

画像上部のターン数を参照し、
奇数ターンなら現在位置(左隣のセル) + 3、それ以外なら左隣 + 0
みたいに作りました。

剰余パターンは3つのセリフがありますが、いずれも同じロジック(のはず)

  • 1ターン進んで次の1ターンやすみ

  • 1ターン進んで次の1ターンは戻る

  • 4ターン休んで5ターン目に進む

先頭、最後尾、同率含む、同率含まない

ifにあてる関数をどのように組むかのパターン
先頭(含まない)の場合、単に左隣の列を全てmaxにかけると駄目なときがありそう。
みたいな考えで関数を考える?
ただし、アテイルお前は駄目だ。

こんな書き方の仕様書あったらぶっ飛ばされる

基本1マス、先頭(同率含む)でないときは3マス
と表現したいけど、先頭(同率含む)じゃないときのほうが多くなるイメージがきっとみんなあると思うので、基本は3マス、先頭(同率含む)になったら1マス。……………だよね?????

計算していくと

関数を右にコピーしていくと次々に100マスを超過する。
このとき、ギィが「ゴール後に下がっても順位は変わらない」と言っていたように、100マスを超過しても100に戻すなんてことをせずに容赦なくコピっていく。
100マス目のルール(追加)」参照

同一ターンに複数モンスターがゴールした(修正あり)

本当にそうなるのが合っているのかはわからない。
が、これもギィの言う通り「100マス目に達したポリンから順位がつく」
暗に何よりも「ポリン」が優先されるという意味か、その前のセリフでモンスターを五十音順に並べ替えていることから、全体的に五十音だよと言いたいのか。
それともポリンが同一ターンにゴールするとヒントを与えているのか。
どのクイズも日本語が怪しいので微妙なんだけれど、多分そんなとこ。

同着ゴールはないかもしれない(追加)

寝て頭冷やして見直したらうーん

「歩数」の増減

減るのは「歩数」であってマスを4つ戻るんじゃなかった。

if (非常食のマス > max(みんなのマス) {
  歩数 = 歩数 - 4;
} else {
  歩数 = 歩数 + 1;
}
非常食のマス = 非常食のマス + 歩数;

こうなるのか…?
できれば、上記画像にある歩数の計算後に

歩数分だけマスを進める/戻る

という記載がほしかった。


100マス目のルール(追加)

コースは1~100マスなのだから、100マスを超過したら100に補正する必要があるように見える。
※マイナスの可能性がないモンスターは補正不要だけど
怪しいのはこいつら

だんりき
リンリン
非常食

非常食は、少なくとも他のモンスターが100マスに到達したらマイナスになることはなくなる。

まーでも考えるの面倒だから全員100マスまでしか進めないようにしとこ

でも順位は昨日夜と変わらなかった

凡ミスでしたが変わらなくてよかったです。
あまり複雑な関数はやらせないような気がするんですがどうなんでしょうね。

順位がわかったら

各キャラが言っていた
「〇〇の次で〇〇の前」などのセリフから埋められるところを埋めて愛称とモンスター名を確定させる。

おわり!!!!!!!!!!!!!!!

  • if

  • mod(なくてもできるけどコピペ面倒になるので使うほうがいい)

  • countifとかそのへん

  • max

  • min

あたりの関数がわかっていればなんとかなりそうでした。
あと条件つき書式は入れたほうがいいね………

もっかい注意:答えも導き方もあっているか知りません。責任持てません。

この記事が気に入ったらサポートをしてみませんか?