'''
小明特别喜欢顺子。顺子指的就是连续的三个数字:123、456等。
顺子日期指的就是在日期的 yyyymmdd 表示法中,存在任意连续的三位数是一个顺子的日期。
例如20220123就是一个顺子日期,因为它出现了一个顺子: 123; 而20221023则不是一个顺子日期,它一个顺子也没有。小明想知道在整个2022年份中,一共有多少个顺子日期。
'''
一、手算
# 思路:
# 20220101~20221231 由于2022限定 只可能存在 012 123,所以直接在2022年内算这个就好了
# 0120 0121 0122 0123 0124 0125 0126 0127 0128 0129 (012)
# 1012 1123 1231 1230
# 输出14
二、代码
# 代码(适用于多个年份之间)
from datetime import timedelta, date
def has_sequence(date_str):
# 顺子范围控制在012 ~ 789
return any(str(i) + str(i + 1) + str(i + 2) in date_str for i in range(0,8))
def count_satisfied_dates():
count = 0
start = date(2022,1,1)
end = date(2022,12,31)
delta = timedelta(days=1)
while start <= end:
if has_sequence(start.strftime("%Y%m%d")): # 格式化时间对象为str
count += 1
start += delta
return count
print(count_satisfied_dates())