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

Algorithmes et structures de données Discussion :

Calculer les horaires de travail


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2009
    Messages : 95
    Par défaut Calculer les horaires de travail
    Bonjour à tous,

    Voilà mon problème: je dois créer des horaires de travail.

    Imaginons une personne qui travaille mi-temps. Si on représente son horaire sur deux semaines, les jours où il travaille toute la journée sont représentés par un 7, les jours où il travaillent juste la demi-journée sont représentés par un 3 et ses jours d'absences par un 0. Ceci uniquement pour les jours ouvrés donc une série de 10 nombres.

    Je dois trouver toutes les possibilités.

    Par exemple si sur deux semaines, je travaille temps plein la première semaine et je suis en congé la seconde, ça donne ceci: 7777700000.

    Si je travaille deux jours la première semaine et trois la seconde, ça donne ceci: 7700077700, etc. Donc là, je travaille le lundi et mardi la première semaine et le lundi, mardi et mercredi la suivante.

    Compliquons la chose: J'ai deux journées pour lesquelles je suis présent une demi-journée que je représente par un 3.

    Si je travaille deux jours la première semaine et deux jours la seconde plus deux demi jours ça donne ceci: 7700077330.

    On pourrait donc trouver un horaire de quelqu'un qui travaille tous les jours mais juste le matin: 3333333333.

    Bon, je dois trouver toutes les combinaison possibles et il y en a un paquet. Et je ne vois absolument pas comment m'y prendre.

    Si quelqu'un avait une idée...

    Merci

  2. #2
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Bonjour
    Voici mon aide mais je ne garantis rien
    Pour chacune des 10 positions il y a 3 possibilités : 0 3 et 7 soit
    3^10 = 205 891 132 094 649 cas [2ème EDIT] décidément ... 3^10 = 59 049
    Pour les lister tous il suffit de compter en base ..4[EDIT] euh 3 bien sûr dans notre cas ...
    en partant de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    0000000000
    0000000001
    0000000002
    0000000010
    0000000011
    0000000012
    0000000100
    etc .
    2222222222
    et au passage de remplacer chaque 1 par 3 et chaque 2 par 7
    =>
    0000000000
    0000000003
    0000000007
    0000000030
    0000000033
    0000000037
    0000000300
    etc .
    7777777777

  3. #3
    Membre chevronné
    Homme Profil pro
    .
    Inscrit en
    Juin 2002
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : .
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2002
    Messages : 239
    Par défaut
    Bonjour.

    La durée de travail doit être de 35 heures sur les deux semaines, pour une personne travaillant à mi-temps.

    Cela réduit considérablement le nombre de possibilités.

    Comme 3^10 = 59049, un algorithme qui teste toutes les possibilités et ne retient que celles correspondant à 35 heures, est possible.

  4. #4
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Citation Envoyé par Prof Voir le message
    ...
    Comme 3^10 = 59049
    ...
    Tiens oui 3^10 = 59 049 j'ai du taper 3^100 ... c'est vrai que ça me paraissait beaucoup ...

  5. #5
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 229
    Par défaut
    Nombre de combinaisons ? On va mettre la barre un peu plus haut, on va faire la différence entre "travailler le matin" et "travailler l'après midi".
    On a donc 20 demi-journées, et chaque demi-journée est travaillée ou non. Nombre de combinaisons = puissance(2;20) = 1048576

    Et notre individu doit travailler 10 demi-journées.
    Nombre de façons de choisir 10 éléments parmi un ensemble de 20 éléments, ça doit faire 20! /10! / 10! = 184756

    J'ai un nombre bien supérieur à ceux évoqués, parce que, pour quelqu'un qui travaille tous les matins, je vais avoir : 10101010101010101010,
    Et pour quelqu'un qui travaille tous les après-midis, je vais avoir : 01010101010101010101
    Alors que si on synthétise à la journée, ces 2 configurations se codent : 3333333333 (plus de distingo entre 1+0 et 0+1)

  6. #6
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Comment faire 35 heures sur 10 jours avec des journées de 7h ou 3.5h ?

    Cas #1: 35 = 5*7
    Cas #2: 35 = 4*7 + 2*3.5
    Cas #3: 35 = 3*7 + 4*3.5
    Cas #4: 35 = 2*7 + 6*3.5
    Cas #5: 35 = 1*7 + 8*3.5
    Cas #6: 35 = 10*3.5

    Combien de possibilités pour le cas "x journées de 7 heures" dans un calendrier de 10 jours ?

    C(x,10)


    Combien de possibilités pour le cas "y journées de 3.5 heures" dans un calendrier de 10 jours ?

    C(y,10)


    Combien de possibilités pour le cas "x journées de 7 heures + y journées de 3.5h" dans un calendrier de 10 jours ?


    1. combien de possibilités pour disposer "x" journées de 7h dans un calendrier de 10 jours ? --> C(x,10)
    2. combien de possibilités pour disposer "y" journées de 3.5h dans un calendrier de 10-x jours --> C(y,10-x)

    => nombre de possibilités = C(x,10) * C(y,10-x)


    Quel est la solution du problème de départ ?

    Il faut additionner les possibilités pour chacun des cas.

    => C(5,10) + C(4,10) * C(2,6) + C(3,10) * C(4,7) + C(2,10) * C(6,8) + C(1,10) * C(8,9) + C(10,10)
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 31/03/2016, 23h33
  2. [2008R2] calcul du charge de travaille pour les requétes ad hoc
    Par Boubou2020 dans le forum Administration
    Réponses: 4
    Dernier message: 10/06/2015, 16h37
  3. Réponses: 2
    Dernier message: 02/08/2005, 13h53
  4. [MFC]Calculer les FPS
    Par inerti@ dans le forum MFC
    Réponses: 6
    Dernier message: 19/03/2003, 18h22

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