20211202 今天是一个特别又美好的日子,世界完全对称日

x33g5p2x  于2021-12-03 转载在 其他  
字(1.1k)|赞(0)|评价(0)|浏览(242)

今天的朋友圈被“世界完全对称日”刷屏了!——这个节日是指公历纪年日期中数字左右完全对称的日期。

这样的对称日,时间间隔并不固定,最近的四次分别是2010年1月2日(20100102)、2010年1月2日(20100102)、2011年11月2日(20111102)和2021年2月2日(20200202);但是再往前的一次居然要追溯到1380年8月31日,也就是明朝洪武十三年;还有之后的近几十年时间里,每十年都会有一个对称日。

为验证这些结论是否正确,我来写段代码验证一下结论;顺便也计算一下每个世纪有多少个对称日,以及对称日总数。根据定义对称日只能是8位数,所以只要在1000.1.1~9999.12.31之间寻找。代码如下:

def SymmetricalDay(year1,year2):
    res = []
    import datetime as dt
    for i in range(year1,year2):
            for j in range(1,13):
                    for k in range(1,32):
                            try: t = dt.date(i,j,k).strftime('%Y%m%d')
                            except: pass
                            if t==t[::-1]:
                                res.append(t)
    return res

total = 0
for j in range(1000,10000,100):
    count = 0
    for i,d in enumerate(SymmetricalDay(j,100+j)):
        count += 1
        total += 1
        print(d,end='\n' if i%5==4 else '\t')
    if count!=0: print()
    print(f'{j}-{100+j},Count:',count)
print('Total:',total)

由计算结果可知,之前讲的结论都是正确的;得出新结论有:

1 .有公元纪年以来,前20个世纪只有43个;
2. 从21世纪开始,每100年都有12个;
3. 9220年因为恰巧是闰年多了一个日子:9220.02.29。

所以,“完全对称日”总共有:43+12x24+1=332。

程序的执行结果是333个,错误的原因是9220.02.29重复计算了一次,后一个“92200229”实际上是9220.02.30这个不存在的日子,不知道是不是python的datetime中引起的bug。

(本文完)

欢迎加入CSDN社区!http://​https://bbs.csdn.net/forums/PythonTogether

http://xn--https-kt3b//bbs.csdn.net/forums/PythonTogether

相关文章