見出し画像

今が令和何年かわからない人へ捧げるアルゴリズム


西暦令和変換アルゴリズム

上の画像は今年最も感動したアルゴリズムで、大学時代の同期に教えてもらったもの。

平成の間は、平成n年のnが(n = 自分の年齢)になっており、30歳までは割と自分の年齢もパッと出てきたのだが、

令和になると令和n年を求める際に、(n = 自分の年齢 - 30)という計算をする必要が出てきた上、自分の現在の年齢も段々思い出せなくなってきており、月に一回ほど、自分の年齢や令和n年を記載するタイミングで少しだけ困っていた。

そのような折、ふとしたLINEでの会話から冒頭のアルゴリズムを紹介され、いたく感動し、これはnote.comに書かなければと思い、GIMPで画像まで作ってしまった。

このアルゴリズムは2020年から2029年の間しか機能しない。

func TestSeirekiReiwa(t *testing.T) {
	for seireki := 2018; seireki <= 2030; seireki = seireki + 1 {
		// 西暦 下2桁
		a := (seireki - 2000)

		// 西暦 十の位
		// 2024年の場合:2
		// 2030年の場合:3
		b := (a - (a % 10)) / 10

		// 西暦 一の位
		// 2024年の場合:4
		// 2030年の場合:0
		c := a - (b * 10)

		// 令和 計算式
		reiwa := b + c

		fmt.Printf("seireki: %d, reiwa: %d\n", seireki, reiwa)
		// => seireki: 2018, reiwa: 9
		// => seireki: 2019, reiwa: 10
		// => seireki: 2020, reiwa: 2
		// => seireki: 2021, reiwa: 3
		// => seireki: 2022, reiwa: 4
		// => seireki: 2023, reiwa: 5
		// => seireki: 2024, reiwa: 6
		// => seireki: 2025, reiwa: 7
		// => seireki: 2026, reiwa: 8
		// => seireki: 2027, reiwa: 9
		// => seireki: 2028, reiwa: 10
		// => seireki: 2029, reiwa: 11
		// => seireki: 2030, reiwa: 3
	}
}

このアルゴリズムは2020年から2029年の間しか機能しないために、これをプログラマとしてシステムへ組み込むことはあり得ない。

プログラマとしてシステムへ組み込むことはあり得ないからこそ、多分自分では思いつかなかったし、今後思いつくこともなかったと思う。

言うまでもないが、令和n年は(n = 2024 - 2018)で算出可能だ。
しかしながら、2018という定数を覚えていられるだろうか。自分の年齢も覚えられないのに。無理だ。

アルゴリズムは日常生活で人間が用いる分であれば、2018などという中途半端な定数を記憶する必要なく、西暦のみを使用して和暦を求められるアルゴリズムは、2030年までの6年間という期限付きとはいえ、十分にメリットが大きい。1年しか使えないとしても重宝しそうだ。

今が令和何年かわからなくなったら西暦の下2桁を足してみてほしい。それが令和だ。

このアルゴリズムに出会った感動をどうしてもを紹介したかった。以上。


宣伝(他にこんな記事を書いています)



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