Inscription / Connexion Nouveau Sujet
Niveau énigmes
Partager :

Mon problème de réutilisation de calendriers

Posté par
Patch051
04-02-21 à 19:08

Nouveau sur ce forum, j'ignore si c'est la bonne rubrique pour poser mon problème pratique et amusant. Sinon, soyez indulgent !

Voici mon problème, il est concret, et ça fait des années que j'y pense sans trouver de solution. C'est un peu normal, mon niveau en maths est  bien faible.  Bien sûr, c'est plus un jeu qu'un réel besoin que je soumets ici, je suis curieux de voir si la solution existe.


Donc, je possède une collection de calendriers que je souhaite réutiliser dans les années suivant celle d'origine. Or, il est fastidieux de tâtonner pour trouver une année similaire.

Certes, chaque année normale (que je noterai N), le 1er janvier se décale de +1 par rapport au jour de semaine précédent : lundi -> mardi, etc.

Mais, lors des années suivant les années bissextiles (que je note B), ce décalage est de 2 jours : lundi ->mercredi, etc.

D'autre part, un décalage supplémentaire intervient, lors des années B, à partir du premier mars, en raison de la présence d'un 29 février.

J'ai bricolé une solution manuelle peu élégante, que je soumets ici : j'identifie, manuellement, chaque année, qu'elle soit B ou N, par les deux première lettres concaténées des jours de la semaine du 1er janvier et du 1er mars.

Les années sont donc classée en "dije", "dime", "jedi", etc. Une fois triées par ordre alphabétique, les années identiques sont regroupées et je vois lesquelles correspondent à un certain calendrier.

Mais, pour mieux utiliser me calendriers,  je voudrais aller plus loin et utiliser un calendrier pour une partie de l'année, Ainsi, un calendrier "dije" sera valable du 1er janvier à la fin février d'une année "dime", qu'elle soit B ou N ou du 1er mars au 31 décembre d'une année "luje", B ou N.

Mettre tout cela en équations cela me semble très complexe. Ces boucles sur 7 jours perturbées par des cycles sur 4 ans (et encore, je ne parle pas des années comme 1700, 1800 ou 1900 qui ne sont pas bissextiles), ça me fait tourner la tête.

Il semble que certaines combinaisons  soient extrêmement rares. J'ai un calendrier de 1988 ("vema") qui semble n'être réutilisable qu'en 2044. De même, un calendrier de 2004 ( "luje") semble n'être réutilisable qu'au-delà de 2044. Aurais-je mal bricolé mon tableau ?  Je n'ai pas continué mes recherches au-delà de 2044.

Une question : combien de ces catégories que je viens de créer existe-t-il en réalité, si l'on exclut  "luma", "lume" et autres, qui, je crois sont impossibles. Comment être sûr qu'une liste établie soit complète ? J ai recensé 10 termes  entre 2022 et 2044, avec des fréquences allant de 1 à 4, mais il y en a bien plus, sans doute.

Enfin, et c'est la vraie question : est-il possible, à l'aide de formules, de créer un tableau qui permettrait de trouver instantanément la période pendant laquelle un calendrier est utilisable ?


Voilà, j'espère avoir été clair. Merci pour votre attention.

Posté par
Zormuche
re : Mon problème de réutilisation de calendriers 04-02-21 à 19:24

Bonjour

En réalité il n'existe que 14 différentes années

une année étant "entièrement déterminée" par le jour de la semaine du 1er janvier, et si elle est bissextile ou non (d'où  7*2 = 14)

Posté par
Zormuche
re : Mon problème de réutilisation de calendriers 04-02-21 à 19:25

Et pour s'assurer qu'il y'en a bien 14 et pas moins, on peut exhiber 14 années qui vérifient chacune un critère différent :

Posté par
Zormuche
re : Mon problème de réutilisation de calendriers 04-02-21 à 19:31

lundimardimercredijeudivendredisamedidimanche
non-bissextile2018201920142015202120112017
bissextile1996200820202004201620002012

Posté par
dpi
re : Mon problème de réutilisation de calendriers 04-02-21 à 20:50

Bonsoir,
C'est un problème intéressant.
Tu peux   par exemple prendre:
2021 <-->2010
2022<-->2011
2023<-->2006
2024<-->1996
2025<--> 2014<-->1997
2026<-->2009 <-->2015
2027<-->2021<-->1999

Posté par
dpi
re : Mon problème de réutilisation de calendriers 04-02-21 à 20:55

Pour
1998 je pense qu'il va bien en  2026 et pour 2004 en 2032 sauf erreur

Posté par
Zormuche
re : Mon problème de réutilisation de calendriers 04-02-21 à 21:05

je crois que le cycle se répète toutes les 28 années, du moins entre 1904 et 2096 car toutes les années bissextiles y sont régulièrement espacées

Posté par
Zormuche
re : Mon problème de réutilisation de calendriers 04-02-21 à 21:35

je préfère une notation du style lu1 où les deux lettres correspondent au jour du 1er janvier, et le chiffre correspond à si l'année est bissextile (1) ou non (0)

Comme je l'ai dit plus haut, les années bissextiles de 1904 à 2196 sont régulièrement espacées
Puisque entre deux années bissextiles on se décale de 5 jours, et que 5 et 7 sont premiers entre eux, il faut parcourir 7 années bissextiles avant de retomber sur ses pieds, d'où le cycle de 28 ans

n...[28]0123456789101112131415161718192021222324252627
année nve1di0lu0ma0me1ve0sa0di0lu1me0je0ve0sa1lu0ma0me0je1sa0di0lu0ma1je0ve0sa0di1ma0me0je0

Posté par
dpi
re : Mon problème de réutilisation de calendriers 05-02-21 à 10:16

Comme j'avais fait une telle recherche voici les compatibilités de 1980  à 2040

Mon problème de réutilisation de calendriers

Posté par
flight
re : Mon problème de réutilisation de calendriers 05-02-21 à 22:38

salut

j'ai fais un prog en vba qui retourne pour une année choisie , tout les calendriers identiques 60 avant et 60 ans apres  :
'en utilisant un formulaire :

Citation :
Private Sub ComboBox1_Change()
Dim a As Double

  For a = (CDbl(ComboBox1.Text) - 60) To (CDbl(ComboBox1.Text) + 60)
     If a <> CDbl(ComboBox1.Text) Then
       If nbr_jours(CDbl(ComboBox1.Text)) = nbr_jours(a) Then
         If Weekday(DateSerial(CDbl(ComboBox1.Text), 1, 1), vbMonday) = Weekday(DateSerial(a, 1, 1), vbMonday) And _
             Weekday(DateSerial(CDbl(ComboBox1.Text), 12, 31), vbMonday) = Weekday(DateSerial(a, 12, 31), vbMonday) Then
           ListBox1.AddItem a
         End If
       End If
     End If
  Next

End Sub


Private Sub ListBox1_Click()

End Sub

Private Sub UserForm_Initialize()
For i = 2020 To 2060
ComboBox1.AddItem i
Next

End Sub


Function nbr_jours(x As Double) As Double
  If x Mod 4 = 0 And x Mod 100 <> 0 Or _
     x Mod 400 = 0 Then
     nbr_jours = 366
     Else
     nbr_jours = 365
  End If
End Function

Posté par
dpi
re : Mon problème de réutilisation de calendriers 06-02-21 à 08:31

Que devient Patch051?
Au passage 2024  :1997 éventuellement 2052

Posté par
flight
re : Mon problème de réutilisation de calendriers 06-02-21 à 10:32

salut

pour 2024 mon esclave me donne  1968 1996 2052 2080

Posté par
dpi
re : Mon problème de réutilisation de calendriers 06-02-21 à 10:45

Bonjour
et 1912 et 1940

Mon bidule va de 1900 à 2100  donc si Patch051 donne l'année de ses calendriers de
collection je peux lui donner la liste des compatibilités pour le futur ,ce qui sera une
belle action écologique ,mais je ne suis pas sûr des saints

Posté par
Patch051
re : Mon problème de réutilisation de calendriers 20-02-21 à 16:24

Excusez mon absence, j'ai été occupé par ailleurs. Merci pour vos contributions.

j'aurais aimé, pour terminer, savoir si l'existence du cycle de 400 ans évoqué plus haut  existe bien, ou si je me trompe. Peut-on le démontrer ?


En d'autres termes, combien d'années faut-il pour retrouver la même succession d'années ?

Posté par
Zormuche
re : Mon problème de réutilisation de calendriers 20-02-21 à 16:39

Ce qui est sûr c'est que sur 400 ans d'écart les schémas de bissextilités seront exactement les mêmes (et c'est le plus petit chiffre possible)
J'ai regardé rapidement : les 1er janvier des années 1600 et 2000 tombent tous les deux un samedi. Donc logiquement, le cycle est de 400 et pas moins
Ce cycle, si on s'amuse à le dresser, est universel : il fonctionne à travers les siècles
Mais en pratique, surtout en ce début de siècle, très peu d'entre nous auront l'occasion de voir le XXIIème, et encore moins les 4 à venir

Posté par
Patch051
re : Mon problème de réutilisation de calendriers 21-02-21 à 07:10

D'accord pour les bissextilités,

Mais peut-on calculer ce que devient le cycle de 28 ans que Zormuche a mis en évidence pour la période 1904-2096 si on l'élargit au-delà, en tenant compte qu'avant et après, 1900 et 2100 n'étant pas bissextiles ? 400 ans, durée pendant laquelle les années bissextiles ont un cycle régulier n'est pas divisible par 28...

Posté par
Zormuche
re : Mon problème de réutilisation de calendriers 21-02-21 à 07:19

Ce n'est pas contradictoire
Sur un cycle de 400 ans on verra des cycles de 28 s'enchaîner mais avec des irrégularités quand les siècles se rejoignent et que le cycle de 28 est forcé à se briser
Et non pas des successions parfaites de cycles de 28

Posté par
Patch051
re : Mon problème de réutilisation de calendriers 21-02-21 à 08:05

Ok, mais nous avons déterminé le cycle de 400 ans en testant les valeurs. Peut-on le démontrer et vérifier qu'aucun cycle plus court n'existe.

par ailleurs, je ne peux pas réessayer de copier le programme en VBA de flight, la copie du texte est inopérante. Serait-il possible de ravoir le texte ?

Posté par
Zormuche
re : Mon problème de réutilisation de calendriers 21-02-21 à 08:07

400 est le plus court théorique car 400 est le plus petit cycle pour les années bissextiles
Pour info les années bissextiles sont les années étant des multiples de 4 mais pas de 100, ou bien les années multiples de 400

Posté par
Zormuche
re : Mon problème de réutilisation de calendriers 21-02-21 à 08:09

En bref, 400 est le plus petit entier k tel que pour toute année x, on a :
x bissextile <=> x+k bissextile

Pour k=4, c'est faux : 1896 est bissextile mais pas 1896+4=1900

Pour k=100, c'est faux : 1900 n'est pas bissextile alors que 1900+100=2000 l'est

Posté par
flight
re : Mon problème de réutilisation de calendriers 21-02-21 à 12:12

salut , à mettre dans un formulaire contenant une combobox  et une listbox

Private Sub ComboBox1_Change()
Dim a As Double

  For a = (CDbl(ComboBox1.Text) - 60) To (CDbl(ComboBox1.Text) + 60)
     If a <> CDbl(ComboBox1.Text) Then
       If nbr_jours(CDbl(ComboBox1.Text)) = nbr_jours(a) Then
         If Weekday(DateSerial(CDbl(ComboBox1.Text), 1, 1), vbMonday) = Weekday(DateSerial(a, 1, 1), vbMonday) And _
             Weekday(DateSerial(CDbl(ComboBox1.Text), 12, 31), vbMonday) = Weekday(DateSerial(a, 12, 31), vbMonday) Then
           ListBox1.AddItem a
         End If
       End If
     End If
  Next

End Sub


Private Sub ListBox1_Click()

End Sub

Private Sub UserForm_Initialize()
For i = 2020 To 2060
ComboBox1.AddItem i
Next

End Sub

placer ceci dans un module :

Function nbr_jours(x As Double) As Double
  If x Mod 4 = 0 And x Mod 100 <> 0 Or _
     x Mod 400 = 0 Then
     nbr_jours = 366
     Else
     nbr_jours = 365
  End If
End Function

Posté par
Patch051
re : Mon problème de réutilisation de calendriers 24-02-21 à 09:12

Malgré mes tentatives, je n'arrive pas à comprendre la manip, je n'ai jamais touché aux macros dans Excel donc ça coince.

Quelqu'un pourrait-il créer un document comprenant cette macro et le mettre en lien ? Ça serait sympa, merci

Posté par
verdurin
re : Mon problème de réutilisation de calendriers 24-02-21 à 17:20

Bonjour,
pour le cycle de 400ans il faut aussi voir qu'il correspond à un nombre de jours multiple de 7 : il y a exactement 20871 semaines en 400 ans ( pour le calendrier grégorien ).

Posté par
Zormuche
re : Mon problème de réutilisation de calendriers 25-02-21 à 03:40

J'avais vérifié que les 1er janvier des années 1600 et 2000 tombaient le même jour de la semaine... Il me semblait l'avoir dit ici trou de mémoire

Posté par
Patch051
re : Mon problème de réutilisation de calendriers 25-02-21 à 04:29

Merci, verdurin. 400 ans = 146097 jours ou 20871 semaines, c'est la clé qui manquait à mon esprit laborieux pour comprendre le cycle.

Puis-je pousser le bouchon un peu plus loin ? Est-il possible d'étendre le calcul de Zormuche sur le cycle de 400 ans et  de calculer le nombre d'occurrences de chaque type d'année (lu0, lu1, ma0, etc...) ? Je suppose que ce doit être proche mais pas tout à fait égal, puisque 400 divisé par 28 donne un nombre décimal.

Posté par
verdurin
re : Mon problème de réutilisation de calendriers 26-02-21 à 21:03

Bien sur que c'est possible.
Et de nombreuses personnes l'on fait.



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !