Dates représentables seulement avec 2 chiffres différents, rares à quel point ?
Par RaphAstronome le samedi, 12 février 2022, 11:47 - Mathématiques - Lien permanent
Ce mois si il y a 3 jours dont on peut exprimer la date avec seulement 2 chiffres en écrivant en base 10 : 02/02/2022, 20/02/2022 et 22/02/2022.
Plutôt rare mais à quel point ?
Pour cela j'ai fait un petit programme et ... effectivement, c'est rare mais lorsque cela arrive, cela arrive par lots, comme ce mois si. Plutôt logique il faut déjà que l'année puisse être écrit avec seulement 2 caractères donc pour les années 20xx cela n'arrive qu'en 2000, 2002, 2020 et 2022. Il y aura aussi des cas en 21xx et 22xx mais plus rien après jusqu'en l'an 3000. Pas très étonnant car dans 23xx, 24xx et autres on est coincé : le chiffre 2 est obligatoirement présent ainsi qu'un autre chiffre supérieur ou égal à 3. Or, impossible de faire un numéro de mois : il faut obligatoirement au moins un 0 ou un 1 pour les dizaines.
De la même façon impossible d'avoir des dates dont la date est représentable avec un seul chiffre autre que le 11 novembre (11/11) et il faut alors que l'année soit elle même représentable avec uniquement des "1" : ce fut le cas de l'année 1111 et la prochaine bah ... 11111 !
Si vous voulez voici donc la liste complète des dates dont la représentation n'utilise que deux chiffres entre 2000 et 3100 (format année - mois - jour) :
- 2000-02-02
- 2000-02-20
- 2000-02-22
- 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
- 2111-11-22
- 2111-12-11
- 2111-12-12
- 2111-12-21
- 2111-12-22
- 2112-11-11
- 2112-11-12
- 2112-11-21
- 2112-11-22
- 2112-12-11
- 2112-12-12
- 2112-12-21
- 2112-12-22
- 2121-11-11
- 2121-11-12
- 2121-11-21
- 2121-11-22
- 2121-12-11
- 2121-12-12
- 2121-12-21
- 2121-12-22
- 2122-11-11
- 2122-11-12
- 2122-11-21
- 2122-11-22
- 2122-12-11
- 2122-12-12
- 2122-12-21
- 2122-12-22
- 2200-02-02
- 2200-02-20
- 2200-02-22
- 2202-02-02
- 2202-02-20
- 2202-02-22
- 2211-11-11
- 2211-11-12
- 2211-11-21
- 2211-11-22
- 2211-12-11
- 2211-12-12
- 2211-12-21
- 2211-12-22
- 2212-11-11
- 2212-11-12
- 2212-11-21
- 2212-11-22
- 2212-12-11
- 2212-12-12
- 2212-12-21
- 2212-12-22
- 2220-02-02
- 2220-02-20
- 2220-02-22
- 2221-11-11
- 2221-11-12
- 2221-11-21
- 2221-11-22
- 2221-12-11
- 2221-12-12
- 2221-12-21
- 2221-12-22
- 2222-02-02
- 2222-02-20
- 2222-02-22
- 2222-11-11
- 2222-11-12
- 2222-11-21
- 2222-11-22
- 2222-12-11
- 2222-12-12
- 2222-12-21
- 2222-12-22
- 3000-03-03
- 3000-03-30
- 3003-03-03
- 3003-03-30
- 3030-03-03
- 3030-03-30
- 3033-03-03
- 3033-03-30
Pour ceux qui voudrait regarder pour les dates de leur choix voici le programme écrit en Ruby :
#! /usr/bin/env ruby require "date" debut = ARGF.argv[0] fin = ARGF.argv[1] limite = ARGF.argv[2] debut = (debut == nil) ? Date.today : Date.parse(debut) fin = (fin == nil) ? Date.parse(debut.to_s).next_year : Date.parse(fin) limite = (limite == nil) ? 4 : limite.to_i puts "# Dates ayant au plus "+limite.to_s+" chiffres différents entre "+debut.to_s+" et "+fin.to_s puts "# Date \tNb.\tChiffres utilisés" (debut..fin).each { |date| chiffres_utilises = date.to_s.gsub("-", "").each_char.to_a.uniq if chiffres_utilises.count <= limite puts date.to_s+"\t"+chiffres_utilises.count.to_s+"\t"+chiffres_utilises.join(',') end }
Par défaut il calcule toutes les dates dont le nombre de chiffres différents est inférieur ou égal à 4 ce qui est assez courant en commençant par la date actuelle et pour un an.
Pour changer ce comportement vous pouvez ajouter appeler ce programme avec des arguments :
- Premier argument la date de début, format année sur 4 chiffres, mois sur 2 chiffres, jour sur 2 chiffres séparés par des tirets (ex : "2022-02-12")
- Second argument la date de fin, même format que le début.
- Nombre de chiffres identiques maximum.
Le script utilise la librairie fournie par ruby qui l'air de rien gère les années négatives et supérieures à 9999. Il considère par contre que l'année 0 existe.
Commentaires