2020년 02월 02일에 대해서 ※Python의 기사입니다.

소개



2019년 모일



한 멋진 기사를 만났습니다.

2013년 4월 5일에 대해 ※Ruby의 기사입니다. | TECHSCORE BLOG

다음은 내용을 요약한 것입니다.
  • 2013년 4월 5일을 구성하는 숫자에 중복이 없다. 대단해!
  • 지난번은 언제? 다음 시간은 언제? Ruby의 프로그램에 의해 조사!
  • 전회는 「○○○○년 ○○월 ○○일」로 다음번은 「××××년××월××일」이었습니다!

  • 개인적으로 흥미롭게 읽어 주셔서 즐겁게 해 주셨습니다. (꼭, 여러분도 봐 주세요!) 프로그래밍을 사용하는 것으로 바삭바삭한 여러가지 것을 조사할 수 있는 것이 좋네요-. 「대단한 절구구나~내년(2020년)은 해만이라도 벌써 2도 0도 2회씩 사용되고 있는구나~」라고 생각하고 있었습니다. 그럴 때는 있는 것을 깨달았습니다.

    2020년 02월 02일이란?



    「아레…

    이 날은……무려……“0”과 “2”만으로 구성되어 있습니다! !

    2013년 4월 5일과는 다른 관점에서, 이 날도 레어인 날인 것은… 라고 생각했습니다. 그래서 이러한 2개 이하의 숫자로 구성된 연월일을 살펴보겠습니다. 전 자료의 기사에서는 Ruby를 사용하고 있지만, 이번에는 Python을 사용합니다. 실행 환경은 Google Colaboratory 1입니다.

    조사



    제약



    이번에는 연을 4자리, 월과 일을 2자리로 합니다. 그러므로 숫자가 부족한 연월일은 0(0)으로 채워집니다. (예: 「1년」→「0001년」, 「1월」→「01월」) 또, 대상으로 하는 연월일을 0001년 01월 01일~9999년 12월 31일로 합니다.

    프로그램



    해당 연월일 조사
    import datetime
    from collections import Counter
    
    # 定数
    START_DAY = datetime.datetime(1, 1, 1)
    END_DAY = datetime.datetime(9999, 12, 31)
    BORDER = 2
    
    # 対象年月日を辞書に格納(0001年01月01日~9999年12月31日)
    target_days = {}
    today = START_DAY
    while True:
        target_days[today] = today
        if (today == END_DAY):
            break;
        today = today + datetime.timedelta(days=1)
    
    # 対象日数
    print(len(days))
    
    # 2つ以下の数字によって構成されるという条件に該当する年月日を辞書ansに格納
    ans_days = {}
    for today in target_days:
        if (len(Counter(today.strftime("%Y%m%d"))) <= BORDER):
            ans_days[today] = today
    
    # 該当日数
    print (len(ans_days))
    
    # 該当率
    print (len(ans_days)/len(target_days))
    

    결과



    이번 대상일수는 0001년 01월 01일~9999년 12월 31일의 3652059 일간이었습니다. 그 중 2020年02月02日 와 같이 2개 이하의 숫자로 구성된 연월일은 928 일이었습니다. 전체에 대한 그 확률은 0.0002541032332719707 , 즉 3935일에 1회였습니다. 좀처럼 희귀하지 않습니까? (상당히 불균일은 있습니다만, 10년에 1번 페이스군요.) 덧붙여서, 이하의 연월일이 해당했습니다. (생략, 발췌.)

    해당 연월일 계산
    for today in ans_days:
        print(ans_days[today].strftime("%Y/%m/%d"))
    

    실행 결과
    0001年01月01日
    0001年01月10日
    0001年01月11日
    (略)
    2002年02月02日
    2002年02月20日
    2002年02月22日
    2020年02月02日
    2020年02月20日
    2020年02月22日
    2022年02月02日
    2022年02月20日
    2022年02月22日
    2111年11月11日
    2111年11月12日
    2111年11月21日
    (略)
    9999年09月09日
    9999年11月11日
    9999年11月19日
    

    전회는 2002年02月22日 , 18년전이군요. 2020년에는 2020年02月02日 를 포함해, 3회 있는 것 같고, 2022년에도 3회 있는 것 같네요. 그 다음은 2111년…

    결론



    본 기사에서는 2020년 02월 02일과 같이 2개의 숫자만으로 구성된 연월일을 조사했습니다. 2020년 02월 20일이나 2020년 02월 22일과 가까운 날이 있었습니다만, 확률로부터 말하면 10년에 1번 정도라고, 레어였군요.

    그래서 (?) 2019 년 감사합니다.
    2020년도 잘 부탁드립니다.

    (2019년 1월 2일 추가)
    이하의 기사에 게재해 주셨습니다! 감사합니다!
  • 【Python】Qiita 주간 스톡수 랭킹【자동 갱신】(2020년 1월 1일 13시 00분 갱신 )



  • htps : // 코 b. 레세아 rch. 오, ぇ. 코 m / 노보보 ks / ぇ l 코메. 아니 pyb? hl = 그럼 

    좋은 웹페이지 즐겨찾기