2024年の干支は何か、すぐ分かるか？【†ダブルドラゴン†】を使うんだ。

# TL;DR
- 2024年は辰年です。
- 【†ダブルドラゴン†】とは、2000年が辰年だった、という事実の造語です。

# 2024年は何年なのか
皆さん、以下の会話をした記憶はありませんか？

「来年(2024年)って何年だっけ？」
「来年は**辰年**だよ。年賀状書いてないの？」
「ああ。年賀状書くのやめちゃったから、分からなかったわ」

私も年賀状を書くのを止めてしまった身で、
今年が何年なのか、来年が何年なのか、すっかり分からなくなってしまいました。
これを頭の中で計算で求めたい。こういう時に瞬時に対応したい。
そんな事を考えた次第です。年末なので。

# 要件定義
- 計算機は使用不可
- 暗算で導出する
- なるべく早く導出する

以上を基本的な条件として、目標を達成していきたいと思います。よろしくお願いします。

# ChatGPT3.5に聞いてみた
まず、そもそもの計算方法をChatGPT 3.5先生に聞いてみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737208/b5377f70-42e0-c785-a483-39f11ef682c9.png)

:::note warn
は？2024年は辰年ですよ？
:::

そもそも違いますね。期待した私が間違っていました。

# 一般的な干支の算出方法
googleで調べると、以下の様な記述が得られました。

>十二支は、西暦を１２で割り、同様に余りを求めます。 それを、０：申、１：酉、２：戌、３：亥、４：子、５：丑、６：寅、７：卯、８：辰、９：巳、１０：午、１１：未に当てはめます。

上記の方法で計算出来るそうです。
確かに、十二支は十二と付くだけあって、12の数でループします。
modを使うのが適切でしょう。
でも皆さん、干支って**ねずみ**を先頭から覚えていませんか？
これでは頭の中で計算する時に、それ用の干支配列を入れておく必要が出て来ました。
干支配列は一般的に皆さんの記憶の中にある、ねずみをスタートにした配列を使う事を前提にします。

:::note info
追加要件：干支は一般的な、ねずみを最初にした順序を用いる物とする。
:::

上記追加要件により、この方法は瞬時に使える機能では無いので、ボツにします。

# より実用的な干支の算出方法
まず干支の配列を以下の様に設定する事にします。

1:子 2:丑 3:寅 4:卯 5:辰 6:巳 7:午 8:未 9:申 10:酉 11:戌 12(0):亥

干支配列を固定化するとした場合、元の年の値をずらす計算を入れた方が良さそうです。
上記配列を使う前提なら、計算したい年から3を引いて12の余りを求めると良い感じです。
つまり、以下式になります。

```math
\begin{align}
f(x) &= (x-3) \mod12 \
\end{align}

```

x=2024を当てはめてみます。

```math
\displaylines{
    \begin{align}
        f(2024)&=(2024-3)\mod12 \\
        &=2021\mod12 \\
        &=5
    \end{align}
}
```

上記配列に当てはめると、5:辰なので、2024年は辰年と求める事が出来ました。
ただ、2021のmod12を瞬時に暗算で求められますか？私は出来ません。

:::note warn
4桁のmod12はちょっと難易度高い。
:::

なので、この方法も最適解に近いとは言え、瞬時に求めるという要件を満たしていません。
一般的な人間には4桁のmod計算をするのは荷が重いのです。
**ラマヌジャンでもない限り**、この方法も使えないという事が分かりました。
ラマヌジャン級の方はこの方法でQ.E.D.して構いません。ブラウザバックして下さい。

# 基準年を考える方法
一般的な方法で暗算で求める場合、干支が特定出来ている年という観点を利用するのが良くある方法で、
自分の生年月日と干支を使うケースが多いと思います。
幸いにも、私は干支が亥でして、この方法を使うと超簡単に求める事が出来ます。
ちなみに干支が亥の場合、以下の年が該当する生まれ年になりますね。

|生まれ年  |干支  |
|---|---|
|1923  |亥  |
|1935  |亥  |
|1947  |亥  |
|1959  |亥  |
|1971  |亥  |
|1983  |亥  |
|1995  |亥  |
|2007  |亥  |
|2019  |亥  |

上記を踏まえた上で、現在に一番近い、2019年から1年ずつ数えて行きます。

|生まれ年  |干支  |生まれ年  |干支  |生まれ年  |干支  |生まれ年  |干支  |生まれ年  |干支  |生まれ年  |干支  |
|---|---|---|---|---|---|---|---|---|---|---|---|
|1923  |亥  |
|1935  |亥  |
|1947  |亥  |
|1959  |亥  |
|1971  |亥  |
|1983  |亥  |
|1995  |亥  |
|2007  |亥  |
|2019  |亥  | 2020 | 子 | 2021 | 丑| 2022 |寅| 2023| 卯| 2024 | 辰 |

この方法だと、私が何年生まれであったとしても、一番直近に近い年、2019年まで寄せて、
そこから１年ずつ数えていくと2024年の干支が分かるという寸法です。
恐らく皆さんやった事あるのではないでしょうか。

しかし、私は亥年生まれなので、
**カウントがねずみからスタートする**という大きなアドバンテージを持っています。
干支の後半、例えば申とか酉年生まれの方は、
この方法を利用すると、高確率で**干支配列を頭の中で折り返さなければならない**というジレンマを抱えます。
頭の中で配列を巻き直すのはエラーの確率が大幅に高くなります。危険です。

:::note warn
干支配列を折り返すとエラー確率が高確率で危険が危ない。
:::

正確に干支を算出出来ないという意味では可用性が低く、
かつ干支によって上手に使えない可能性があるという事で、この方法だと属人性が高くなる傾向にあります。
この為、この方法もボツにせざるを得ません。

# 【†ダブルドラゴン†】を使え
皆様、ダブルドラゴンをご存知でしょうか？

https://ja.wikipedia.org/wiki/%E3%83%80%E3%83%96%E3%83%AB%E3%83%89%E3%83%A9%E3%82%B4%E3%83%B3%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA

実はダブルドラゴンが何かは置いておいて、
要するに**2000年が辰年であった**という事実を記憶する事で、
少し計算が楽になるのではないかという提起をしたいのです。

まず、2000年が辰年である事を、以前の計算式を利用して改めて導出します。

```math
\displaylines{
    \begin{align}
        f(2000)&=(2000-3)\mod12 \\
        &=1997\mod12 \\
        &=5
    \end{align}
}
```

以上の通り、辰年でした。
2024年は、2000年の24年後なので、**mod12の観点から辰年**です。
恐らくこれが最適解です。

そして、この方法は【†ダブルドラゴン†】というしょうもない言葉を憶えておく事で、
mod12が使える年にはかなり有効に働くというのがポイントです。
もしかしたら2025年も2024年の翌年、という方法で、すぐ巳年と分かるかもしれません。

:::note
ダブルドラゴン…一体何者なんだ…
:::


# まとめ

いいか、干支は【†ダブルドラゴン†】だ。
これから数年は使える。覚えておけ。

そして皆さん、良いお年を。