Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

Répondre

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
quatre-vingt quinze moins quatre-vingt deux
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Retour

Résumé de la discussion (messages les plus récents en premier)

G Darraud
08-05-2020 06:24:41

Bonjour à vous deux,

je suis en train de "m'amuser" avec le site dcode que vous m'avez donné. Et je fais la liste de toute les partitions pour le nombre 30 dont la taille de partition est comprise entre 3 et 20, avec les nombres compris entre 1 et 12. Ensuite, j'élimine les solutions non compatibles avec la valeur des jours travaillés et de repos. Je ne peux pas lui demander de prendre les valeurs de 2 à 12 pour les lancers impairs et de 1 à 6 pour les lancers pairs. A la fin, j'obtiendrai le nombre total de partitions, mais qui ne correspond pas à l'ensemble des solutions de ma requête.
Idem pour le nombre 20.
Je contacte ma sœur aujourd'hui.

Cordialement

freddy
07-05-2020 10:37:45
yoshi a écrit :

J'avais oublié le lien vers la doc officielle : https://docs.python.org/fr/3.6/library/itertools.html

Pourquoi diable, as-tu besoin de 30 boucles imbriquées ?

Pour  regarder les 30 dés à 6 faces, par tirage successif pour simuler la suite qui forme 30 jours. IL te faut au minimum 5 dés à 6 faces et au maximum 30 dés à 6 faces.
Mais je pense qu'on peut faire autrement, je n'ai pas encore trouvé (utiliser un truc qui s'appelle récursivité par exemple : c'est là où on a besoin d'un bon informaticien, je fais un truc très bourrin).

PS : itertools devrait permettre de résoudre ce sujet plus facilement, à voir !

yoshi
07-05-2020 10:27:36

J'avais oublié le lien vers la doc officielle : https://docs.python.org/fr/3.6/library/itertools.html

Pourquoi diable, as-tu besoin de 30 boucles imbriquées ?

freddy
07-05-2020 10:20:22

Re,

Python n'accepte pas 30 boucles imbriquées, il bloque au delà de 20, donc oui, je simule 5 et 6 dès comme suit D12-D6-D12/D6, puis 8 et 9 : D12-D6-D12-D6-D12/D6, puis 11 et 12, puis 14 et 15, … Le nombre de dé = nombre de dé à 6 faces ; D12 = deux dés à 6 faces.
Avec le confinement, je découvre le code et la meilleure manière d'apprendre est de faire, donc je fais ! IDLE est confortable pour gérer l'indentation entre autres. C'est un code puissant et pas mal intuitif (pour moi), il faut maintenant que j'aille voir dans les bibliothèques spécialisées qui peuvent m'intéresser. Mais j'en suis au tout début du commencement, j'ai encore bcp à apprendre. Ce que j'aime bien en informatique est qu'on apprend en regardant le code des autres, c'est très bon pour le partage des connaissances.

itertool : ok, je vais regarder.

yoshi
07-05-2020 10:01:46

Salut m'sieu,

On commence par D12, puis D6, puis D12, ... On a 20 tirages maximum sous ce format.

Si je ne m'abuse, ce faisant, tu omets les nombres impairs de tirages tel :
D12, D6, D12, D6, D12. Non ?

Je vois que tu t'amuses bien maintenant avec Python...
Tiens va jeter un œil sur le module itertools
Il y a un petit quelque chose qui va t'interpeller (pas propre à itertools) le mot clé yield.
Supposons que dans une fonction, tu aies une boucle qui fasse 1000 tests, tu aies un résultat positif au 500e : tu quittes la fonction pour revenir dans le corps de ton programme...
Si tu voulais chercher un autre résultat positif après le 500e et que tu rappelles ta fonction, tu devrais refaite les 500 premiers avant d'arriver au 501e ...
L'instruction yield suspend l'exécution au 500e, et te permet en revenant dans la fonction de démarrer directement le 501e test...

freddy
07-05-2020 08:40:34

Salut,

pour clôturer ce sujet, j'ai les résultats ci-dessous.
La convention est de regarder le tirage successif de dé à 12 faces et de dés à 6 faces tel que la somme des faces = 30.
On commence par D12, puis D6, puis D12, ... On a 20 tirages maximum sous ce format.
Sous Python, j'ai :

114.959.969 = nombre de fois que je passe dans une boucle qui déroule un dé ... J'en ai 20 imbriquées. Python n'en admet pas beaucoup plus, ou alors, il faut faire autrement.

Nombre de composition possibles : le nombre de dés utilisés selon la convention ci-dessus est égal au rang de la colonne.
On commence par 5 (1 résultat possible), puis 6, puis 8, ... Bien entendu, à la fin (rang=30), on a qu'une seule composition possible.

[0, 0, 0, 0, 0, 1, 82, 0, 2925, 17343, 0, 89169, 275840, 0, 556974, 1063029, 0, 1046540, 1277765, 0, 635726, 493500, 0, 318930, 54256, 0, 4845, 1140, 0, 19, 1]

91.45794081687927 = temps de calcul en seconde.

Merci yoshi pour ton initiation à Python :)

yoshi
06-05-2020 13:02:09

Re,

+1
Cela dit :

Au demeurant c'est plutôt vers un (très jeune) informaticien vers lequel ta sœur devrait se retourner (les solutions requièrent l'aide d'un automate de calcul)

Les solutions proposées (avec suppression des doublons) sont exhaustives...
A partir de 6 lancers, la présentation devra être revue...
Je n'ai pas fait ça à la main, mais en Python brut, et j'ai fichtrement galéré : mon script est affreux (tris + éliminations des doublons en 2 fois) et devra être repris pos être adaptable à des des lancers> 3 + 3...
Je vais aller regarder du côté des bibliothèques spécialisées.

A la main, je serais passé à travers 50 fois...

@+

freddy
06-05-2020 11:49:01

Salut,

j'aimerais bien savoir ce que le collègue de ta sœur pourrait te dire de plus que les deux pistes que je t'ai données, à savoir regarder du côté de la partition du nombre 30 ou de la composition du même nombre.
Au demeurant c'est plutôt vers un (très jeune) informaticien vers lequel ta sœur devrait se retourner (les solutions requièrent l'aide d'un automate de calcul), à la condition expresse que tu précises exactement ce que tu veux savoir, là, ça reste très flou pour moi.

Enfin, si tu as une réponse satisfaisante (pour toi, moi, je sais ce que je voulais savoir), merci de nous la faire connaître, j'aime bien connaître la fin des histoires.

G Darraud
05-05-2020 21:46:37

Bonsoir à vous tous,

non, je n'ai pas laché l'affaire et vous non plus. Encore merci pour tout ce que vous avez fait. Je pensais, à tort, que la résolution de ce problème devait être un peu plus compliqué que le tirage du loto. Mais je me suis complètement fourvoyé.

L'idée de départ vient d'un petit délire d'une bande de copains, mêlant jours de travail et tirage à la roulette.

Yoshi a parfaitement compris le problème, mais je ne pensais pas enlever les doublons.
A partir de 3 lancés (2 pour les jours travaillés et un pour les jours de repos), on obtient 1 possibilité d'avoir 30 jours (12 - 6 -12)
A partir de 4 lancers (2 pour les jours travaillés et 2 pour les jours de repos), on obtient 82 possibilités d'avoir 30 jours (12-6-11-1 ... 6-6-12-6)
A partir de 5 lancers (3 pour les jours travaillés et 2 pour les jours de repos), les possibilités s'affolent ...

la dernière façon d'arriver à 30 jours est 2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1-2-1 soit 20 lancers
J'imagine que le nombre de possibilités suit une courbe (laquelle ?) passant par un maximum (12 lancers ?...)
J'ai ma sœur qui est enseignante en fac de sciences. Peut être pourras-t-elle m'orienter vers un de ses collègues du département de maths, pour esquisser une résolution à ce problème

En tout cas, merci Messieurs d'avoir pris le temps de comprendre, réfléchir et me proposer une solution à ce problème qui au départ parait simple à penser, mais qui se révèle d'une redoutable complexité.

Cordialement

G Darraud

freddy
05-05-2020 14:52:34

Re,

Je lui ai donné un embryon de réponse via le site dcode, je pense qu’il a disparu. J’ai construit 18 boucles imbriquées, ensuite, il faut être sioux pour éviter des calculs inutiles. J’aurais bien aimé connaître l’origine de sa question.
Je lâche l’affaire aussi !

yoshi
05-05-2020 13:14:00

Re,

C'est bien pour ça que je m'arrête là...
N-B
Pas de solution avant 2 lancés de 2 suivis chacun d'un lancé de 2...

Je ne suis pas sûr que notre ami soit intéressé par l'ordre...
Au cas où, je vais apporter une précision sur l'exemple
(2, 7, 11)
et : (4, 6) ou (5, 5)
Les résultats 2, 7,11 ont pu se produire en tenant compte de l'ordre :   
2 _ 7 _ 11       2 _ 11 _ 7      7 _ 2 _ 11        7 _ 11 _ 2         11 _ 2 _ 7       11 _ 7 _ 2
Pour chaque _
peuvent se produire les résultats de lancé 1 dé :
4  ou 6  ou 5
Je peux donc avoir pour le tirage (2,7,11) dans cet ordre :
2 dés jours travaillés  2     7     11         2     7     11          2     7     11       
1 dé jours de congé      4     6                 6      4                   5     5           

Au delà ça devient vite effroyable : c'est ce que j'ai volontairement voulu shunter dans ma présentation sans ordre...

Le nombre de lancers de 1 dé est toujours égal ou inférieur de 1 au nombre de lancers de 2 dés...

@+

freddy
04-05-2020 21:34:27

Salut yoshi,

on est sur le terrain de la composition d'un entier, c'est très velu à faire et ça se complexifie très vite.

yoshi
04-05-2020 19:41:22

Re,

Quelques solutions seulement parce que sinon, on est pas rendus.
Alors, je ne lance pas 2 fois 1 dé, mais 1 fois 2 dés pour les jours travaillés et je somme les résultats :
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
1 lancer de 2 dés ( travail) et 1 de 1 dé (congé) ne suffisent pas
J'ai donc cherché tous les lancer  de 2 fois 2 dés et de 2 fois 1 dé  donnant 20 et 10...
[(8, 12), (9, 11), (10, 10), (11, 9), (12, 8)]
[(4, 6), (5, 5), (6, 4)]
L'ordre n'important pas, je considère (11,9) et (12,8) par exemple comme des doublons.
J'élimine les doublons.
Reste : :
[(8, 12), (9, 11), (10, 10)]
[(4, 6), (5, 5)]
Et je les ai associés :
(8, 12)
et : (4, 6) ou (5, 5)

(9, 11)
et : (4, 6) ou (5, 5)

(10, 10)
et : (4, 6) ou (5, 5)



Après je suis passé à 3 lancers de 2 dés où j'ai éliminé tous les doublons :
[(2, 6, 12), (2, 7, 11), (2, 8, 10), (2, 9, 9), (3, 5, 12), (3, 6, 11), (3, 7, 10), (3, 8, 9), (4, 4, 12), (4, 5, 11), (4, 6, 10), (4, 7, 9), (4, 8, 8), (5, 5, 10), (5, 6, 9), (5, 7, 8), (6, 6, 8), (6, 7, 7)]

Et j'ai associé chacun 3 lancers de 2 dés (travail) avec 2 lancers de 1 dé (congé)
(2, 6, 12)
et : (4, 6) ou (5, 5)

(2, 7, 11)
et : (4, 6) ou (5, 5)

(2, 8, 10)
et : (4, 6) ou (5, 5)

(2, 9, 9)
et : (4, 6) ou (5, 5)

(3, 5, 12)
et : (4, 6) ou (5, 5)

(3, 6, 11)
et : (4, 6) ou (5, 5)

(3, 7, 10)
et : (4, 6) ou (5, 5)

(3, 8, 9)
et : (4, 6) ou (5, 5)

(4, 4, 12)
et : (4, 6) ou (5, 5)

(4, 5, 11)
et : (4, 6) ou (5, 5)

(4, 6, 10)
et : (4, 6) ou (5, 5)

(4, 7, 9)
et : (4, 6) ou (5, 5)

(4, 8, 8)
et : (4, 6) ou (5, 5)

(5, 5, 10)
et : (4, 6) ou (5, 5)

(5, 6, 9)
et : (4, 6) ou (5, 5)

(5, 7, 8)
et : (4, 6) ou (5, 5)

(6, 6, 8)
et : (4, 6) ou (5, 5)

(6, 7, 7)
et : (4, 6) ou (5, 5)
...

@+

freddy
04-05-2020 10:01:33

Re,

la partition de 30 de l'ordre 5 à 30 est assez impressionnante (environ 5.000), et on sait que l'ordre de la décomposition n'intervient pas. En ordonnant, je ne te dis pas l'arborescence.

J'aimerais bien savoir ce qui motive la demande de notre ami.

Je le renvoie sur dcode, il y a quelques pistes.

freddy
04-05-2020 09:52:05

Salut,

après avoir déroulé le calcul avec 15 dès (il en faudrait 30 pour aller au bout du bout de l'ensemble des combinaisons possibles), je me suis aperçu qu'on peut peut-être raccourcir en regroupant par nombre de dés à utiliser.
En effet, dans le cas de 5 dés, on a qu'une seule solution : que des 6 ; dans le cas de 30 dès, une seule solution aussi : que des 1. Avec 29 dès, le résultat est donné par 28 fois 1 plus 2, qu'on peut positionner sur 28 postions distinctes, inutile de faire tourner l'automate pour ça.
et donc, dans l'intervalle, on peut travailler avec 6 dés, puis 7 dès, puis 8, …
je vais regarder du coté de la partition d'un nombre entier.

Pied de page des forums