IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Date de Pâques par l'algorithme d'Oudin


Sujet :

Langage Perl

  1. #1
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 073
    Points : 15 460
    Points
    15 460
    Billets dans le blog
    9
    Par défaut Date de Pâques par l'algorithme d'Oudin
    Bonjour !

    Je vous propose un script qui détermine la date du dimanche de Pâques pour l'année courante, suivant l'algorithme d'Oudin.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    # oudin1.pl
    # Date de Pâques par l'algorithme d'Oudin
    # Testé avec Perl 5.16.3
     
    use strict;
    use warnings;
    use integer;
     
    # Année courante
    my $Y = (localtime)[5] + 1900;
     
    # Calcul date de Pâques
    my $G = $Y % 19;
    my $C = $Y / 100;
    my $C4 = $C / 4;
    my $E = (8 * $C + 13) / 25;
    my $H = (19 * $G + $C - $C4 - $E + 15) % 30;
    my $K = $H / 28;
    my $P = 29 / ($H + 1);
    my $Q = (21 - $G) / 11;
    my $I = ($K * $P * $Q - 1) * $K + $H;
    my $B = ($Y / 4) + $Y;
    my $J1 = $B + $I + 2 + $C4 - $C;
    my $J2 = $J1 % 7;
    my $R = 28 + $I - $J2;
     
    # Affichage du résultat
    print "Date de P\x83ques pour l'ann\x82e $Y : ";
    if ($R < 32) {
      print "$R mars\n";
    } else {
      $R = $R - 31;
      print "$R avril\n";
    }
    Qu'en pensez-vous ?
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    je croyais que tu m'avais dit que tu ne faisais pas de Perl, pas mal du tout pour quelqu’un qui ne connaît pas Perl.

    Je propose juste une petite modification:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my $Y = shift // (localtime)[5] + 1900;
    Cela permet de passer une autre année en paramètre (et donc de tester plus facilement sur d'autres années): si une année est donnée en paramètre au script, il calcule la date de Pâques pour cette année, sinon, il prend par défaut l'année de la date courante. Avec ce changement, j'ai testé quelques années pour lesquelles j'avais un calendrier, ça semble bien fonctionner.

    Sinon, une seule critique: perso, j'utiliserais dans la mesure du possible des variables dont le nom documente ce qu'elles contiennent, et j'ajouterais un minimum de commentaires expliquant l'algorithme. Par exemple, dans ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    my $C = $Y / 100;
    my $C4 = $C / 4;
    $C4 est manifestement un correctif pour les années bissextiles, ce serait bien que ce soit plus explicite.

    Tu l'as adapté en Perl depuis un algo dans un autre langage?

  3. #3
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 073
    Points : 15 460
    Points
    15 460
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Lolo78 Voir le message
    je croyais que tu m'avais dit que tu ne faisais pas de Perl, pas mal du tout pour quelqu’un qui ne connaît pas Perl.
    Merci ! En fait je viens de m'y mettre, après avoir lu ton article sur les grammaires.

    Citation Envoyé par Lolo78 Voir le message
    Je propose juste une petite modification:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my $Y = shift // (localtime)[5] + 1900;
    Cela permet de passer une autre année en paramètre (et donc de tester plus facilement sur d'autres années): si une année est donnée en paramètre au script, il calcule la date de Pâques pour cette année, sinon, il prend par défaut l'année de la date courante.
    J'achète ! Merci pour le tuyau.

    Citation Envoyé par Lolo78 Voir le message
    Sinon, une seule critique: perso, j'utiliserais dans la mesure du possible des variables dont le nom documente ce qu'elles contiennent, et j'ajouterais un minimum de commentaires expliquant l'algorithme.
    Oui, sur le principe tu as raison. En fait, j'avais trouvé la formule dans ce document, et j'ai gardé tels quels les noms des variables. J'en avais fait d'abord une version en Pascal puis dans d'autres langages que je pratique. Je trouve cet algorithme assez fascinant mais je t'avoue que je serais bien incapable de l'expliquer. J'ai quelque part sur mon disque dur l'article original de l'inventeur de la formule. Il faudrait que je prenne le temps de l'étudier.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771

  5. #5
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 073
    Points : 15 460
    Points
    15 460
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par djibril Voir le message
    Merci !
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  6. #6
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Merci ! En fait je viens de m'y mettre, après avoir lu ton article sur les grammaires.
    Eh ben, bienvenue dans la communauté Perl.

    Et tu te débrouilles super bien pour quelqu'un qui vient de s'y mettre, bravo.

  7. #7
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 073
    Points : 15 460
    Points
    15 460
    Billets dans le blog
    9
    Par défaut
    Merci Laurent ! À bientôt, j'espère, pour d'autres aventures.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  8. #8
    Membre habitué
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juillet 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2014
    Messages : 84
    Points : 197
    Points
    197
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Qu'en pensez-vous ?
    Je vais être très critique, mais coder sans nommer correctement ses variables, ou du moins avec un nom intéressant ou qui se rapporte à leur fonction, n'est pas acceptable.
    Ton code ne me donne aucune envie de le relire pour tenter de le comprendre.

  9. #9
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Bah, c'est vrai que ce serait mieux d'avoir des noms de variables plus parlants, et c'est aussi ce que j'ai dit plus haut, mais Roland n'a fait que reprendre les noms de variables provenant d'un algorithme de calcul publié sur le site de l'Université de Lille. Pas forcément facile d'inventer les noms si l'on ne maîtrise pas vraiment les fondements théologiques et astronomiques assez complexes du calcul de la date de Pâques.

Discussions similaires

  1. Date de Pâques par l'algorithme d'Oudin
    Par Roland Chastain dans le forum Lua
    Réponses: 5
    Dernier message: 23/03/2016, 07h27
  2. Date de Pâques par la méthode Oudin
    Par Roland Chastain dans le forum Contribuez
    Réponses: 12
    Dernier message: 21/03/2013, 07h56
  3. [Alerte] La blague du lundi de pâques 2013 - Algorithme d'oudin
    Par Lydéric dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 19/06/2012, 13h34
  4. [Flash Pascal] Oudin - Détermination de la date de Pâques
    Par Roland Chastain dans le forum Flash Pascal
    Réponses: 3
    Dernier message: 19/06/2012, 09h19
  5. PL/SQL TROUVER DATES DE PÂQUES, ASCENSION et PENTECôTE
    Par mimi_été dans le forum PL/SQL
    Réponses: 4
    Dernier message: 21/10/2004, 15h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo