Ich bin auf einen wunderbaren Artikel gestoßen.
[Ungefähr am 5. April 2013 * Dies ist ein Ruby-Artikel. | TECHSCORE BLOG](https://www.techscore.com/blog/2013/01/04/2013%E5%B9%B44%E6%9C%885%E6%97%A5%E3%81%AB%E3 % 81% A4% E3% 81% 84% E3% 81% A6-% E2% 80% BBruby% E3% 81% AE% E8% A8% 98% E4% BA% 8B% E3% 81% A7% E3% 81% 99% E3% 80% 82 /)
Das Folgende ist eine Zusammenfassung des Inhalts.
Ich persönlich habe es mit großem Interesse gelesen und es genossen. (Bitte werfen Sie einen Blick darauf!) Es ist gut, verschiedene Dinge mithilfe der Programmierung schnell untersuchen zu können. Ich dachte: "Es ist ein großartiger Schnitt im nächsten Jahr (2020), 2 und 0 werden bereits zweimal pro Jahr alleine verwendet." Zu dieser Zeit bemerkte ich etwas.
"Werden ... am 2. Februar 2020 nur zwei Zahlen verwendet, 0 und 2 ...?"
Dieser Tag ist ... was ... er besteht nur aus "0" und "2"! !!
Aus einer anderen Sicht ab dem 5. April 2013 ist dieser Tag auch ein seltener Tag ...? Ich dachte. Untersuchen wir also das Datum, das aus zwei oder weniger Zahlen wie dieser besteht. Ich habe Ruby im Originalartikel verwendet, aber dieses Mal werde ich Python verwenden. Die Ausführungsumgebung ist Google Colaboratory [^ Google Colaboratory].
Dieses Mal ist das Jahr 4-stellig und der Monat und der Tag sind 2-stellig. Füllen Sie daher die fehlenden Ziffern mit Nullen (0) aus. (Beispiel: "1 Jahr" -> "0001", "Januar" -> "Januar") Das Zieldatum liegt vom 01. Januar 0001 bis zum 31. Dezember 9999.
Übersicht über das anwendbare Datum
import datetime
from collections import Counter
#Konstante
START_DAY = datetime.datetime(1, 1, 1)
END_DAY = datetime.datetime(9999, 12, 31)
BORDER = 2
#Speichern Sie das Zieldatum im Wörterbuch (01. Januar 0001 - 31. Dezember 9999).
target_days = {}
today = START_DAY
while True:
target_days[today] = today
if (today == END_DAY):
break;
today = today + datetime.timedelta(days=1)
#Zieltage
print(len(days))
#Speichern Sie das Datum, das der Bedingung entspricht, dass es aus zwei oder weniger Zahlen besteht, im Wörterbuch ans
ans_days = {}
for today in target_days:
if (len(Counter(today.strftime("%Y%m%d"))) <= BORDER):
ans_days[today] = today
#Anwendbare Tage
print (len(ans_days))
#Anwendbarkeitsrate
print (len(ans_days)/len(target_days))
Die Zieltage dieses Mal waren "3652059" Tage vom 01. Januar 0001 bis zum 31. Dezember 9999. Unter diesen war das Datum, das aus zwei oder weniger Zahlen wie "02. Februar 2020" bestand, "928" Tag. Die Wahrscheinlichkeit für das Ganze betrug "0,0002541032332719707" oder einmal alle 3935 Tage. Ist es nicht ziemlich selten? (Obwohl es erhebliche Ungleichmäßigkeiten gibt, ist das Tempo alle 10 Jahre.) Übrigens galten die folgenden Daten. (Ausgelassen, Auszug.)
Berechnung des anwendbaren Datums
for today in ans_days:
print(ans_days[today].strftime("%Y/%m/%d"))
Ausführungsergebnis
01. Januar 0001
10. Januar 0001
11. Januar 0001
(Weggelassen)
02. Februar 2002
20. Februar 2002
22. Februar 2002
02. Februar 2020
20. Februar 2020
22. Februar 2020
02. Februar 2022
20. Februar 2022
22. Februar 2022
11. November 2111
12. November 2111
21. November 2111
(Weggelassen)
09. September 9999
11. November 9999
19. November 9999
Das letzte Mal war der 22. Februar 2002 vor 18 Jahren. Es scheint, dass es im Jahr 2020 drei Mal geben wird, einschließlich "02. Februar 2020", und es scheint, dass es im Jahr 2022 drei Mal geben wird. Als nächstes kommt 2111 ... es liegt ganz vorne ...
In diesem Artikel haben wir Daten untersucht, die nur aus zwei Zahlen bestanden, z. B. den 2. Februar 2020. Es gab Tage in der Nähe des 20. Februar 2020 und des 22. Februar 2020, aber in Bezug auf die Wahrscheinlichkeit war dies selten, etwa alle 10 Jahre.
Also (?), Danke für 2019. : Bogen: Ich freue mich darauf, 2020 mit Ihnen zusammenzuarbeiten. : Bogen:
(Hinzugefügt am 2. Januar 2019) Es wurde im folgenden Artikel veröffentlicht! Vielen Dank!
Recommended Posts