とりあえず車を楽しむ

2021年12月2日は希少!回文(後ろから読んでも同じ)となる日付を調べてみた【Python】

※記事内のリンクには広告が含まれる場合があります。

f:id:humidasu_1:20211123144845j:plain

もうすぐやってくる「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日(木)は意外と貴重な日ということで締めたいと思います。

 

'