水晶占い占いとは…
aironさまが長期の観察の末に作成した運勢テーブルをもとに
キャンペーン期間中にどの星座がいつ作成成功率アップや
作成経験値アップの運勢が来るのかを予測し、まとめ上げて
公開ログのコメント欄で発表している情報のことである
運勢システムとそのテーブルについて詳しくはこちら
運勢システム - リュートピア図書
公開していただいたシステム分析から、では自分の日々の運勢はどうなのか
身近な方々の運勢はどうか…それを知るにはカレンダーを作る必要がある
公開可能なシートを作るガッツがないのでGoogle スプレッドシートで
こうしましたっていう説明だけ置いておく
前に貼ったこの画像は自分の星座の位置を確認して手動で
ばーっと「=上のセル+1」をコピペして作ったもの
Reutopia日記9/18-19 運勢占い占いすごい - ayanoのゲーム日記
右側に全星座の日程表を作って、そこからセルの値を参照して
左側に見たい星座だけを抜き出すようにした
A3セル … 今日から何日前まで遡るかの日数を指定する
画像はわかりやすいように5日にしているが、普段は30日くらいにしている
1行目 … テーブルが逆順かどうかのフラグ、てんびん座以降は逆走する
2行目 … 開始位置のオフセット、おひつじ座が基準となる1
(おひつじ座~おとめ座までのオフセットはaironさまの運勢テーブルの記載そのまま)
普段は2行目までを非表示、E-G列(知人の星座情報)を表示している
D列は色付け用に王国戦と自分の軍事作成アップ日が同日かの判定、基本非表示
てんびん座以降のオフセット値は、最終的に出てくる日付が秋の水晶占い占いで
発表された日程と一致するように設定した
水晶占い占いに対して間違いの報告はなかったそうなのできっと大丈夫
自分と、会話の中で確認できた知人の星座の運勢はバッチリ合っていた
(双子座・牡牛座・山羊座。サンプル少なめだが蠍座も大丈夫そう)
確か知人がいなくて確認できない星座で、計算した日付と占い占いの日程を
照合する際に%の数値だけが異なる日が1、2箇所あった記憶があるけれども
総じてテーブルの位置は仮説通り52間隔で合っているのではと思う
次回の占い占い発表があればまた照らし合わせて確認したい
画像で選択しているふたご座11/07のJ31セルの内容は
「=ZODIAC_DAY($A31, J$2, J$1)」
その日のテーブルNo. と星座のオフセットと逆順か否かのフラグをもとに
日付を算出する。その他のセルも同内容をコピペしている
(24/1/24追記:案の定ループするとおかしくなったので修正版に差し替えた)
計算方法(GoogleSpreadSheetの名前付き関数の設定)
関数:ZODIAC_BASE_DAY
説明:2023/3/18以降で最も早くこの運勢になる日付
引数:base_no, zodiac_offset, is_rev
式
=DATE(2023,3,18) + MOD(312+(base_no-zodiac_offset)*IF(is_rev=TRUE,-1,1),312)
関数:ZODIAC_LOOP_DAY
説明:今日以降で最も早くこの運勢になる日付
引数:base_no, zodiac_offset, is_rev
式
=ZODIAC_BASE_DAY(base_no,zodiac_offset,is_rev)
+(INT*1/312))*312
関数:ZODIAC_DAY
説明:今日からA1セル指定日数遡った日以降で最も早くこの運勢になる日付
引数:base_no, zodiac_offset, is_rev
式
=ZODIAC_LOOP_DAY(base_no,zodiac_offset,is_rev)
+IF(ZODIAC_LOOP_DAY(base_no,zodiac_offset,is_rev)-TODAY() > 311-'運勢'!$A$3,-312,0)
ZODIAC_BASE_DAY は ZODIAC_LOOP_DAYの中で1回使うだけなので
ZODIAC_LOOP_DAY内で展開してもOK
ちゃんとTODAY()の部分を変えながらデバッグするべきですね!
(今回もしてませんが…ループを越えたので大丈夫じゃないかな)
あと、あまりにも人間に優しくない表で各星座の「今日」がどこにあるか
迷子になるので、今日が 24/1/24 で牡羊座なら「$C$5」というように
今日のセルの行番号がわかる表示を追加している
例)牡羊座の表示の式 =ADDRESS(4+MATCH($C$2,M5:M317,0),3)
表示がC列なのは自分用にC列で作ってから各星座に横展開したので…
行番号だけ出すようにしておけば良かったなぁ。雑!w
こんな感じで~
(以降、ループの判定が間違ってた23/11/15versionの記述を折りたたみ)
23/11/15version(寝不足でコード書くとろくなことをしない例。R.I.P.)
ZODIAC_DAY関数の中身
シートを見ている当日からA3セルで指定した日数分遡った日を
起点として312日以内の日付を返す
(ループ処理確認してないので間違ってたら後でこっそり直す
…と言うかIF文なしの一発計算にたぶんできると思う)
ZODIAC_BASE_DAY関数の中身
ZODIAC_DAYが3回参照する値の計算を抜き出したもの
2023/3/18を開始日として各星座が各No.になる日付を返す
テーブルの要素数312や、おひつじ座がNo.1の運勢になる
2023/3/18 は、はじめシート内のセルに記述していたけども
参照回数が多く値自体は不変なので直打ちにした
(たぶん 312を3万回くらい参照することになっていると思う
計測比較してはいないのでほんとに重いかは知らない)
あとどっちの関数も説明に誤字がありましたね…まいっか…
こんな感じで~
*1:TODAY()-DATE(2023,3,18