Je suis tombé sur un merveilleux article.
[À propos du 5 avril 2013 * Ceci est un article Ruby. | BLOG TECHSCORE](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 /)
Ce qui suit est un résumé du contenu.
Je l'ai lu personnellement avec beaucoup d'intérêt et je l'ai apprécié. (Veuillez jeter un oeil!) Il est bon de pouvoir rapidement étudier diverses choses en utilisant la programmation. Je me suis dit: "C'est une excellente coupe l'année prochaine (2020), 2 et 0 seront déjà utilisés deux fois par an seulement." À ce moment-là, j'ai remarqué quelque chose.
"Est-ce que ... le 02 février 2020 utilise seulement deux nombres, 0 et 2 ...?"
Ce jour est ... ce que ... il se compose uniquement de "0" et "2"! !!
D'un point de vue différent du 5 avril 2013, cette journée est aussi une journée rare ...? J'ai pensé. Alors, examinons la date qui se compose de deux nombres ou moins comme celui-ci. J'ai utilisé Ruby dans l'article original, mais cette fois, j'utiliserai Python. L'environnement d'exécution est Google Colaboratory [^ Google Colaboratory].
Cette fois, l'année est composée de 4 chiffres et le mois et le jour sont de 2 chiffres. Par conséquent, remplissez les chiffres manquants avec des zéros (0). (Exemple: "1 an" -> "0001", "janvier" -> "janvier") De plus, la date cible est du 1er janvier 0001 au 31 décembre 9999.
Sondage de la date applicable
import datetime
from collections import Counter
#constant
START_DAY = datetime.datetime(1, 1, 1)
END_DAY = datetime.datetime(9999, 12, 31)
BORDER = 2
#Stocker la date cible dans le dictionnaire (01 janvier 0001-31 décembre 9999)
target_days = {}
today = START_DAY
while True:
target_days[today] = today
if (today == END_DAY):
break;
today = today + datetime.timedelta(days=1)
#Jours cibles
print(len(days))
#Stocker la date correspondant à la condition qu'elle soit composée de deux nombres ou moins dans le dictionnaire et
ans_days = {}
for today in target_days:
if (len(Counter(today.strftime("%Y%m%d"))) <= BORDER):
ans_days[today] = today
#Jours applicables
print (len(ans_days))
#Taux d'applicabilité
print (len(ans_days)/len(target_days))
Les jours cibles cette fois-ci étaient «3652059» jours du 1er janvier 0001 au 31 décembre 9999. Parmi eux, la date composée de deux nombres ou moins tels que «02 février 2020» était le jour «928». Sa probabilité pour l'ensemble était de «0,0002541032332719707», soit une fois tous les 3935 jours. N'est-ce pas assez rare? (Bien qu'il y ait des inégalités considérables, le rythme est de une fois tous les 10 ans.) En passant, les dates suivantes étaient applicables. (Omis, extrait.)
Calcul de la date applicable
for today in ans_days:
print(ans_days[today].strftime("%Y/%m/%d"))
Résultat d'exécution
01 janvier 0001
10 janvier 0001
11 janvier 0001
(Omis)
2 février 2002
20 février 2002
22 février 2002
02 février 2020
20 février 2020
22 février 2020
2 février 2022
20 février 2022
22 février 2022
11 novembre 2111
12 novembre 2111
21 novembre 2111
(Omis)
9 septembre 9999
11 novembre 9999
19 novembre 9999
La dernière fois, c'était le «22 février 2002», il y a 18 ans. Il semble qu'il y en aura trois en 2020, dont le `` 02 février 2020 '', et il semble qu'il y en aura trois en 2022. Le prochain est 2111 ...
Dans cet article, nous avons étudié les dates qui ne comprenaient que deux nombres, comme le 02 février 2020. Il y avait des jours proches du 20 février 2020 et du 22 février 2020, mais en termes de probabilité, c'était rare, environ une fois tous les 10 ans.
Alors (?), Merci pour 2019. : arc: J'ai hâte de travailler avec vous en 2020. : arc:
(Ajouté le 2 janvier 2019) Il a été publié dans l'article suivant! Je vous remercie!
Recommended Posts