Inscription / Connexion Nouveau Sujet
Niveau énigmes
Partager :

Vider sans rien perdre

Posté par
vham
05-04-18 à 11:32

Bonjour,

Trois urnes de contenances illimitées contiennent chacune un nombre entier (en cm3) de liquide.
On ne peut transférer d'une urne dans une autre que la quantité présente dans l'urne réceptrice.
Pouvez-vous vider entièrement une des trois urnes ?
Exemple : 9, 8 et 21 cm3. Une méthode générale est demandée, pour tous contenus.

Posté par
flight
re : Vider sans rien perdre 05-04-18 à 13:00

salut

 Cliquez pour afficher


14:44 malou edit > ai blanké suite au message de carpediem
        

Posté par
carpediem
re : Vider sans rien perdre 05-04-18 à 14:43

dommage de ne pas blanker et les laisser les autres réfléchir ... comme d'hab ...

Posté par
rogerd
re : Vider sans rien perdre 05-04-18 à 15:10

Bonjour à tous!

Le problème posé est voisin du vieux problème des "trois cruches".
Ce problème a fait l'objet d'une épreuve écrite du Concours Commun de Centrale.
Voir sur le site du Concours Centrale Supélec , à la page des "rapports et sujets",
l'épreuve de Mathématiques2 de la filière TSI de 2014.
On y présente une méthode généralisable à ces problèmes de transvasements entre trois récipients, basée sur des endomorphismes de l'espace vectoriel R^6.

Posté par
vham
re : Vider sans rien perdre 05-04-18 à 15:22

>> carpediem

 Cliquez pour afficher

Posté par
vham
re : Vider sans rien perdre 05-04-18 à 15:52

>> rogerd : vieux problème , c'est vrai. mais bien moins général que l'étude proposée sur le site du Concours Centrale Supélec , à la page des "rapports et sujets",
l'épreuve de Mathématiques2 de la filière TSI de 2014.
et une méthode généralisée à tous contenus initiaux en est de formulation bien plus simple.

Posté par
vham
re : Vider sans rien perdre 05-04-18 à 15:57

>>flight : j'ai manqué votre réponse sous blank, Mon commentaire fait à carpediem (à 15;22) était pour vous...

Posté par
flight
re : Vider sans rien perdre 05-04-18 à 16:08

ce serait un bon probleme à  programmer

Posté par
vham
re : Vider sans rien perdre 05-04-18 à 16:24

>> flight : Oui, en démontrant que le programme va aboutir (s'arrêter avec une suite de manipulations finie) quels que soient les contenus initiaux...
Un programme de ce type existe.

Posté par
flight
re : Vider sans rien perdre 05-04-18 à 16:44

voila le programme

 Cliquez pour afficher

Posté par
flight
re : Vider sans rien perdre 05-04-18 à 16:48

 Cliquez pour afficher

Posté par
flight
re : Vider sans rien perdre 05-04-18 à 16:48

bien sur il est possible de modifier les valeurs de départ

Posté par
flight
re : Vider sans rien perdre 05-04-18 à 16:52

 Cliquez pour afficher

Posté par
flight
re : Vider sans rien perdre 05-04-18 à 16:54

oups ! oublié de blanker  , dommage qu'on puisse pas remanipuler un message deja posté

Posté par
malou Webmaster
re : Vider sans rien perdre 05-04-18 à 17:01

non mais flight, il te faut une secrétaire !!

Posté par
rogerd
re : Vider sans rien perdre 05-04-18 à 17:11

>>wham
L'idée du sujet de Centrale était de montrer qu'on peut traiter un tel problème avec les techniques de l'algèbre linéaire dans R^6:
3 variables pour les volumes occupés par l'eau et 3 variables pour les volumes vides.
A chaque transfert de liquide d'une cruche dans une autre on associe un endomorphisme de R^6.

Par ailleurs, la dernière partie de l'énoncé faisait appel à l'informatique (vérification d'un programme résolvant le problème posé).

Posté par
vham
re : Vider sans rien perdre 05-04-18 à 17:52

Re Bonjour,

>>flight :

 Cliquez pour afficher


>> rogerd : J'ai bien parcouru votre référence, mais le problème posé ici peut se passer des endomorphismes dans R6 et utiliser un principe simple accessible aux lycéens
Ensuite une méthode facile à mettre en oeuvre  est utilisée dans un jeu d'allumettes célèbre.

Posté par
carpediem
re : Vider sans rien perdre 05-04-18 à 18:05

mes sieurs un lien direct vers ce sujet serait la bienvenue ...

merci par avance

Posté par
flight
re : Vider sans rien perdre 05-04-18 à 19:11

..quelques commentaire de mon programme pour vham

Citation :
 Cliquez pour afficher

  

Posté par
flight
re : Vider sans rien perdre 05-04-18 à 19:13

testé avec d'autres valeurs ca à l'air de bien marcher

Posté par
vham
re : Vider sans rien perdre 05-04-18 à 21:20

Bonsoir,

>> flight

 Cliquez pour afficher

Posté par
flight
re : Vider sans rien perdre 06-04-18 à 07:16

Pourquoi vous dites que mon programme ne s arrêtera pas ??.. Je vous ai montré un exemple de traitement avec des valeurs..

Posté par
flight
re : Vider sans rien perdre 06-04-18 à 07:16

Mon programme s arrête des qu on a deux urnes identiquement remplies

Posté par
carpediem
re : Vider sans rien perdre 06-04-18 à 08:41

carpediem @ 05-04-2018 à 18:05

mes sieurs un lien direct vers ce sujet serait la bienvenue ...

merci par avance



d'autre part je ne pense que ce soit utile de blancker les programmes qui peuvent être instructifs (qu'on blank une solution ok ... mais un programme ?)

cependant je dois dire que flight programmant ?? je rejoins vham sur une remarque

par exemple qu'est-ce que Ubound (t) ?

merci par avance

Posté par
vham
re : Vider sans rien perdre 06-04-18 à 09:04

Bonjour,

>> carpediem : Ubound(t) c'est le plus grand index du tableau qui contient donc Ubound(t) + 1 valeurs.

>> flight : je vous montre que votre programme tournera indéfiniment avec les valeurs initiales 12 15 18, car la succession des trois valeurs sera 24 15 6, 12 15 18, 24 15 6,..... Votre méthode ne répond pas au problème
           "Une méthode générale est demandée, pour tous contenus."

Posté par
vham
re : Vider sans rien perdre 06-04-18 à 09:17

Avant de donner une solution, je précise les indices donnés précédemment pour une méthode générale :
utiliser un principe simple accessible aux lycéens (division euclidienne)
Ensuite une méthode facile à mettre en oeuvre  est utilisée dans un jeu d'allumettes célèbre.

Posté par
flight
re : Vider sans rien perdre 06-04-18 à 10:19

Je vais tester ça, vham et vous dirait ça

Posté par
flight
re : Vider sans rien perdre 06-04-18 à 10:23

Carpediem pourrais tu m expliquer ceci :

"cependant je dois dire que flight programmant ??"

C est quoi?...du rabaissement ?

Posté par
malou Webmaster
re : Vider sans rien perdre 06-04-18 à 10:33

Citation :

d'autre part je ne pense que ce soit utile de blancker les programmes qui peuvent être instructifs (qu'on blank une solution ok ... mais un programme ?)


mais y en aurait-y- des- qui ne sont jamais contents ?

Posté par
rogerd
re : Vider sans rien perdre 06-04-18 à 11:15

>>carpediem

https://www.concours-centrale-supelec.fr/CentraleSupelec/2014/TSI/sujets/2011-086.pdf

Posté par
jsvdb
re : Vider sans rien perdre 06-04-18 à 11:27

Bonjour à tous.



Citation :
de ma pratique professionnelle (passée) il ressort : Un programme non commenté passe d'emblée à la poubelle.

Je confirme pour l'avoir vécu.
Et de la mienne, je dirai qu'on ne devrait jamais programmer un problème de mathématiques sans l'avoir analysé numériquement.
Le problème a toujours une solution simple pour deux urnes.

 Cliquez pour afficher

Posté par
vham
re : Vider sans rien perdre 06-04-18 à 11:42

Bonjour,

>> jsvdb

 Cliquez pour afficher

Posté par
jsvdb
re : Vider sans rien perdre 06-04-18 à 11:48

Bonjour vham

 Cliquez pour afficher

Posté par
jsvdb
re : Vider sans rien perdre 06-04-18 à 11:51

Erratum :

 Cliquez pour afficher

Posté par
bbomaths
re : Vider sans rien perdre 06-04-18 à 12:01

Bonjour.

Citation :
Trois urnes de contenances illimitées...


Pour les amateur d'objets bizarre, voir le vase de Sluse, dérivé de la cissoïde de Dioclès, de volume fini et d'une contenance infinie... pratique comme rangement...

Posté par
vham
re : Vider sans rien perdre 06-04-18 à 12:09

>> jsvdb :

Citation :
On ne peut transférer d'une urne dans une autre que la quantité présente dans l'urne réceptrice.

Posté par
jsvdb
re : Vider sans rien perdre 06-04-18 à 12:32

 Cliquez pour afficher

Posté par
jsvdb
re : Vider sans rien perdre 06-04-18 à 14:31

 Cliquez pour afficher

Posté par
vham
re : Vider sans rien perdre 06-04-18 à 15:09

Bonjour,

>> jsvdb :

 Cliquez pour afficher

Posté par
carpediem
re : Vider sans rien perdre 06-04-18 à 18:51

rogerd : merci

flight : nul rabaissement : seulement le constat que tu utilises un langage ... disons un peu désuet ... voire ""peu connu"" (enfin "peu utilisé" dans le milieu éducatif en tout cas) et je rejoignais seulement vham dans sa remarque blanckée de 17h52 plussoyée par jsvdb à 11h27 ...

je ne demande pas de détailler la logique de l'algo (ou plus tard) mais de préciser certains mots du langage

c'est l'avantage de l'algo qui peut être compris par tout le monde ... mais qui alors peut faire comprendre la logique de la solution

donc un pgm ok ... mais avec qq éléments d'explication surtout pour le vocabulaire utilisé

Posté par
jsvdb
re : Vider sans rien perdre 06-04-18 à 22:57

@ vham

 Cliquez pour afficher

Posté par
jsvdb
re : Vider sans rien perdre 07-04-18 à 02:17

Je pense avoir résolu complètement le problème à deux urnes :

 Cliquez pour afficher

Posté par
vham
re : Vider sans rien perdre 07-04-18 à 10:21

Bonjour,

>> jsvdb : un indice simple :

 Cliquez pour afficher

Posté par
jsvdb
re : Vider sans rien perdre 07-04-18 à 21:57

@vham

 Cliquez pour afficher

Posté par
vham
re : Vider sans rien perdre 08-04-18 à 02:24

Bonne nuit,

>> jsvdb : Solution

 Cliquez pour afficher

Posté par
vham
re : Vider sans rien perdre 09-04-18 à 11:32

Bonjour,

Rappel : Trois urnes de contenances illimitées contiennent chacune un nombre entier (en cm3) de liquide.
On ne peut transférer d'une urne dans une autre que la quantité présente dans l'urne réceptrice.
Pouvez-vous vider entièrement une des trois urnes ?

Solution en Python 3.5

def vidage(L): # les contenus de 3 vases A,B,C sont dans une liste indicée de 0 à 2
    print( L)
    while not L[1]==0: #tant que B ne sera pas vide
        L=sorted(L) # contenus ordonnés croissants : a <= b <= c
        q=L[1]//L[0] # quotient dans b = aq + r division euclidienne
        lg=len(bin(q))-2 #longueur de q exprimé en binaire
        for i in range(lg): #index des bits de q
            # transfert dans A depuis B si bit=1 ou depuis C si bit=0
            # le membre de gauche n'est mis à jour qu'après calcul à droite
            L[0],L[2-((q>>i)&1)]=L[0]*2,L[2-((q>>i)&1)]-L[0]  
            print( L)
vidage([887,79,491]) # pour exemple
print("***************")
vidage([8,9,21]) # pour exemple



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 !