0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

大人の動物占い、のタイプを算出してみたい

0
Last updated at Posted at 2026-02-01

今更ですが

大人の動物占い®的なページを踏んでしまいました
2023年って、大分昔の話ですね(気が付くのが遅い)

いや、気になったのは占いの方じゃないんです
該ページの一覧表
image.png
          :
image.png

めちゃ数字が一杯並んでる
どういう並び?
表引きじゃなくて計算できない?

うー、うずうずする…

まずは目視で

  • 値は 0~59 の範囲を循環する
  • 値は増加傾向にあるけど単調ではない
    し、逆戻りもしてるし…
  • 偶数月と奇数月でそれぞれ別系列

   っぽい

お次はExcelで俯瞰してみましょうか

取敢えず系列毎に並べて差分をとってみると…

image.png

をぅ、すごい周期的 :thumbsup_tone3:

奇数列と偶数列ではパターンが異なるけど、48か月するとまた元に戻ってる?
こいつは縦一列では把握しづらいので、元の縦横に整列させてみますかな

つまり、こうして…
image.png

こう
image.png
うむ、やはり48か月毎にきれいに循環しているようですね(この12年に限って言えば)

となると
image.png
image.png
こうなる筈

おめでとうございます
1959年12月生まれのあなた
あなたのタイプは 53 の様ですよ

 

因みに、この態でぬるっと進めてみると
image.png
と云う事になって、元資料の終端とも一致しています
(序に、今年分まで出してみました)

image.png

でもなー

まぁ、計算で出しているか?
って観点で云えば、そう云えなくもないかも知れないけど
実態は謎の48か月テーブルを参照しながら、足し算をしているだけ

突き詰めて根本的な問題は(今回)1960年の1月と2月のタイプを足掛かりにしている点
前掲の今年のタイプを求めるには、60数年分の累積が必要になる

これでは、うずうずが治まったとは云い難いっす

ではどうするか

どうしよう…
う~~~ん

今までは、先々月との差分を謎の48か月テーブルとして頼っていた訳だったので…
48か月と云う周期性に当てはめる方向性で

取敢えず前年同月との差分をとってみるとー
image.png
ををぉぅ

キレイに4年周期が浮かび上がった
しかもどうやら、3月始まりの一年と云う事かな?

では、どこか基準点を探しましょうか
あ、先程出てきた足掛かりの「値」ではなくて「位置」です、決めたいのは
1960年の3月を基準にしても良いんでしょうけど、 24・55 っていうのがね、イマイチしっくりこないというか…

んー、なんとなくですけど1960年から遡ってみましょうかねぇ
image.png

あ、ここです
1944年3月が 0 で始まるので良さげです
(んー、零点=0と云う値を決めたとも云えなくはないけど、あくまでも位置 のつもり)

もう一歩踏み込む

基準点が決まりましたが、これが固定だとまた色々めんどくさいかも
ここらへん、もう少し掘り下げたいと思います

えぇっと
最初に出てきた数列ふたつ

$0, 1, 1, 2, 1, 1, -1, 1, 1, 2, 1, 1, -1, 1, 1, 2, 1, 1, -1, 1, 1, 2, 1, 1$

$0, 1, 1, 1, 1, 2, -1, 1, 1, 1, 1, 2, -1, 1, 1, 1, 1, 2, -1, 1, 1, 1, 1, 2$

これ、それぞれ足すと 21 になります

当然、6 + 5 + 5 + 5 = 21を考えると、両方とも 21 になって貰わないと困りますけどねー

これはつまり、タイプは4年毎に 21 づつ進むという事なので
   $a + 21k \equiv a \pmod{60}$

   $21k \equiv 0 \pmod{60}$

ここから、
   $k = \frac{60}{\gcd(21, 60)} = \frac{60}{3} = 20$

つまり、20回繰り返すと元に戻るという事ですね

結局、$20 {\times} 4 = 80$
で、 80年 周期で同じパターンを繰り返す筈です

さて

ここまでで分かった情報は

  • 80年周期で全体を繰り返す
  • 4年毎にタイプは21ずつ加算される
  • 4年内の加算パターンは 6,5,5,5 である

それ以外に

  • 一年は3月始まりである
  • 1944年の3月が一つの基準点となる

 
となると、任意の年に対して

  • その年が80年周期のどの位置に相当するか
  • その年が4年周期のどの位置に相当するか

が、分かれば、算出することができるという事ですよね?

よしよし、ゴールに近づいてきたぞ

月毎のパターン

年のパターンが分かっても、月のパターンが特定できない事には話になりません
そいつを考えましょう

いま、基準に置いた1944年の12か月分のタイプパターンは以下の通りです
image.png

こういう事なので、1944年はー
  $Array(0,31,1,32,2,33,4,34,5,35,6,37)[月 - 1]$
的な感じで表引きしてあげると、月毎のタイプ基準値を特定できますね

48か月の謎テーブルが12か月分の謎テーブルにまで縮小されました!!!!!

 

……余り嬉しくないですね
謎は謎のままです

月のパターンも純粋に計算で求めたいです
ここは、タイプを(mod 30)してみましょうか

image.png

いいですねー
後戻りせずに、常に増加傾向にあります

もういっその事、べたで数式組み立ててー

初期値はゼロで、4月以降は+1で、更に6月以降は+1で、更に8月以降は+1で、更に…

みたいな、奇っ怪な計算式を組み上げる、ってな事もできますが
いやいや、汚い

ここまで来てそれは無いだろう
もう一捻りしましょうよ

もう一捻り

なんか上手い多項式組めないだろうか…
🐙 🐙 🐙
 

で、Excelいじっているうちに以下の様な所に辿り着きました
image.png

調整項3つをちょっとづつずらして足し合わせると、あら不思議
ぴったり合うじゃん

※ 月数は、3月を1とおいて、翌2月が12と表されているとして

\left\lfloor \frac{month + 3}{5} \right\rfloor \quad … adj1
\left\lfloor \frac{month + 1}{5} \right\rfloor \quad … adj2
\left\lfloor \frac{month - 1}{5} \right\rfloor \quad … adj3

こいつに、偶数月の場合 30 を加えれば謎の12か月テーブルの出来上がり!
謎は謎でなくなりました

一応確認をば

80年毎にパターンを繰り返す、って言いきってしまいましたが、そこら辺はどうなの?
を確認する

1944年を基準年に置いたので、80年後は…
2024年だ!?

image.png

掲示されていたタイプ表はちょうど80年分だけだったんですね

よし! じゃぁプログラムだ

手軽なところで、WScriptで…
所謂「JScript」ですね

function YearBlock(yy) {
	return Math.floor(((yy + 56) % 80) /4);
}

function YearMod(yy) {
	return (yy + 56) % 4;
}

function RefVal(mm) {
	return Math.floor((mm + 3) / 5) + Math.floor((mm + 1) / 5) + Math.floor((mm - 1) / 5) + 30 * ((mm - 1) % 2);
}

function GetType(y, m, d) {
	var yy = Math.floor((y * 12 + m - 3) / 12);
	var mm = (y * 12 + m - 3) % 12 + 1;
	return ((RefVal(mm) + 21 * YearBlock(yy) + 5 * YearMod(yy)) % 60 + (d - 1)) % 60 + 1;
}

おしまいっ!

 

いや、若干の説明を…

  • YearBlock(yy)
    80年周期の中で、何番目の4周年期かを返す(zero origin)
    yy + 56の 56 は、1944年が80周年の一つの紀元となる様にするための調整項です
  • YearMod(yy)
    4年周期の中で、何年目かを返す(zero origin)
  • RefVal(mm)
    基準年のmm月に該当するタイプを返す
  • GetType(y, m, d)
    西暦 ymd日 のタイプを返す

でゎ、実測

ん? 測?
ま、いいや

image.png

と云っているので…

WScript.Echo(GetType(1970, 9, 25));

を実行してあげると…

C:\Users\Toraja\Script>cscript test.js
Microsoft (R) Windows Script Host Version 10.0
Copyright (C) Microsoft Corporation. All rights reserved.

45

C:\Users\Toraja\Script>

よし、おっけー

 

序に、これは?

WScript.Echo(GetType(1836, 1, 3));
C:\Users\Toraja\Script>cscript test.js
Microsoft (R) Windows Script Host Version 10.0
Copyright (C) Microsoft Corporation. All rights reserved.

36

C:\Users\Toraja\Script>

image.png

らしいっすよ
坂本龍馬 さん

終わりに…

いやー、楽しかった
ただそれだけです

学びも何もなかったですが―――

ひたすら自分が楽しかった、だけの項になります
失礼いたしました

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?