もうすぐやってくる「2021年12月2日」は意外と貴重な日付(年月日)なんです。
「2021年12月2日」は「20211202」とも書けますが、「2 0 2 1 1 2 0 2」は後ろから読んでも「2 0 2 1 1 2 0 2」です。
いわゆる回文となるからですね。
2021年12月2日以前は2020年2月2日(20200202)にもあり、割と頻繁にありそうですが、実は回文となる年月日はかなりレアなのです。
今回は回文となる日付が他にもどのくらいあるのか、Pythonを使って調べてみました。
回文とは?
一応説明しておくと、前から読んでも後ろから読んでも同じ字、同じ文になる語句のことです。
例えば、
- 新聞紙(しんぶんし)
- 八百屋(やおや)
- 世の中ね、顔かお金かなのよ(2chより引用)
などです。
日付もyyyymmdd(例:2021年11月5日であれば20211105)の形式にすれば、回文が成り立ちことがあります。
Pythonを使って調べてみる
まず調べるにあたり、以下のことを前提とします。
- 調べる範囲は西暦1000年1月1日から2099年12月31日まで
- 月と日が1桁の場合は、0埋めして2桁表示にする(例:9月7日の場合は0907)
※範囲を指定したのは、単に数が多くなりすぎるからで特に意図はありません。
結果だけを知りたい人は「回文となる日付(年月日)一覧」にとんでください。
以下のコードを使って調べてみます。
import datetime dt = datetime.date(1000,1,1) num = 0 while True: add = datetime.timedelta(days=num) if dt + add == datetime.date(2100,1,1): break dt_str = datetime.datetime.strftime(dt + add,"%Y%m%d") if dt_str == dt_str[::-1]: print(f"{dt_str}は回文です。" ) num += 1
西暦1000年1月1日を起点として、1日ずつ進めていきながらyyyymmddの形式を反対から読んでも同じ文字列となる場合のみ「yyyymmddは回文です。」と表示させます。
1000年1月1日から2099年12月31日までの期間で回文となる年月日が分かります。
回文となる日付(年月日)一覧
結果は以下の通りとなりました。
- 10011001 (1001年10月1日)
- 10100101 (1010年1月1日)
- 10111101 (1011年11月1日)
- 10200201 (1020年2月1日)
- 10211201 (1021年12月1日)
- 10300301 (1030年3月1日)
- 10400401 (1040年4月1日)
- 10500501 (1050年5月1日)
- 10600601 (1060年6月1日)
- 10700701 (1070年7月1日)
- 10800801 (1080年8月1日)
- 10900901 (1090年9月1日)
- 11011011 (1101年10月11日)
- 11100111 (1110年1月11日)
- 11111111 (1111年11月11日)
- 11200211 (1120年2月11日)
- 11211211 (1121年12月11日)
- 11300311 (1130年3月11日)
- 11400411 (1140年4月11日)
- 11500511 (1150年5月11日)
- 11600611 (1160年6月11日)
- 11700711 (1170年7月11日)
- 11800811 (1180年8月11日)
- 11900911 (1190年9月11日)
- 12011021 (1201年10月21日)
- 12100121 (1210年1月21日)
- 12111121 (1211年11月21日)
- 12200221 (1220年2月21日)
- 12211221 (1221年12月21日)
- 12300321 (1230年3月21日)
- 12400421 (1240年4月21日)
- 12500521 (1250年5月21日)
- 12600621 (1260年6月21日)
- 12700721 (1270年7月21日)
- 12800821 (1280年8月21日)
- 12900921 (1290年9月21日)
- 13011031 (1301年10月31日)
- 13100131 (1310年1月31日)
- 13211231 (1321年12月31日)
- 13300331 (1330年3月31日)
- 13500531 (1350年5月31日)
- 13700731 (1370年7月31日)
- 13800831 (1380年8月31日)
- 20011002 (2001年10月2日)
- 20100102 (2010年1月2日)
- 20111102 (2011年11月2日)
- 20200202 (2020年2月2日)
- 20211202 (2021年12月2日)
- 20300302 (2030年3月2日)
- 20400402 (2040年4月2日)
- 20500502 (2050年5月2日)
- 20600602 (2060年6月2日)
- 20700702 (2070年7月2日)
- 20800802 (2080年8月2日)
- 20900902 (2090年9月2日)
今回の2021年12月2日以降に回文となる年月日がくるのは、約10年後の2030年3月2日です。
2000年以降は、2011年11月2日と2021年12月2日を除いて約10年おきに回文となる年月日が出現していますね。
2001年10月2日以前に回文となったのは1380年8月31日なので、実に621年ぶりのことなんですね。
回文となる年月日が貴重であることが分かります。
おわりに
回文となる日付(年月日)をPythonを使って調べてみました。
皆既日食みたいに何かが起きるわけでもなく、ただの言葉遊びに過ぎませんが、きたる2021年12月2日(木)は意外と貴重な日ということで締めたいと思います。