Problème de Mathématiques

Olympiades mathématiques, énigmes et défis
PhilZPhaZ
Messages: 2
Enregistré le: 04 Déc 2021, 14:56

Problème de Mathématiques

par PhilZPhaZ » 04 Déc 2021, 15:01

Bonjour à tous,
Je suis en classe de 2nd et j'ai un problème de maths. J'ai fais plusieurs simulations (avec Python) mais sans résultats concret.
Voici mon problème:

Jasmine, qui s’ennuie énormément en attendant la deuxième vague de problèmes du Marathon d’Orsay de Mathématiques, a écrit sur un tableau noir tous les nombres entiers de 1 à 2021. Elle s’amuse ensuite à répéter autant que possible l’opération suivante : choisir deux nombres x et y sur le tableau, les effacer, puis écrire la valeur absolue |x −y| de leur différence. Ainsi, après 2020 telles opérations, il ne reste plus qu’un seul nombre écrit sur le tableau. Quelles sont toutes les valeurs que Jasmine peut obtenir pour ce dernier nombre ?

Pourriez vous m'aider ?



phyelec
Membre Rationnel
Messages: 948
Enregistré le: 06 Mar 2020, 17:47

Re: Problème de Mathématiques

par phyelec » 04 Déc 2021, 15:32

Bonjour,

Vous pouvez nous fournir votre programme?

PhilZPhaZ
Messages: 2
Enregistré le: 04 Déc 2021, 14:56

Re: Problème de Mathématiques

par PhilZPhaZ » 04 Déc 2021, 15:37

Voici le code :

from random import choice, randint

liste_Nombre_Final = []

def createList():
liste_Nombre = []

# Creer la liste d'entier compris entre 1 et 2021
for i in range(2022):
liste_Nombre.append(i)
return liste_Nombre

def delete(num):
liste_Nombre.remove(num)

def addNumber(num):
liste_Nombre.append(num)

def calculer(x,y):
nombre_Ajouter = abs(x-y)
return nombre_Ajouter

def choiceNumber():
# Définir x
x = choice(liste_Nombre)

# Le supprimer de la liste
delete(x)

# Définir y
y = choice(liste_Nombre)

# Le supprimer de la liste
delete(y)

# Faire le calcule abs(x-y)
nombre_Ajouter = calculer(x,y)

# Ajouter le nombre dans la liste
addNumber(nombre_Ajouter)

# Initier la boucle pour trouver tous les nombres

for i in range(50000):

# Creer la liste
liste_Nombre = createList()

# Définir la boucle pour qu'il ne reste plus qu'un nombre
for i in range(2021): # Réteter 2020 fois
choiceNumber()

nombre_A_Ajouter = liste_Nombre[0]
if nombre_A_Ajouter in liste_Nombre_Final:
pass
else:
liste_Nombre_Final.append(nombre_A_Ajouter)

liste_Nombre_Final.sort()
print(liste_Nombre_Final)

print(len(liste_Nombre_Final))

lyceen95
Membre Complexe
Messages: 2255
Enregistré le: 15 Juin 2019, 00:42

Re: Problème de Mathématiques

par lyceen95 » 04 Déc 2021, 16:04

Code: Tout sélectionner
from random import choice, randint

liste_Nombre_Final = []

def createList():
liste_Nombre = []

# Creer la liste d'entier compris entre 1 et 2021
for i in range(2022):
liste_Nombre.append(i)
return liste_Nombre

def delete(num):
liste_Nombre.remove(num)

def addNumber(num):
liste_Nombre.append(num)

def calculer(x,y):
nombre_Ajouter = abs(x-y)
return nombre_Ajouter

def choiceNumber():
# Définir x
x = choice(liste_Nombre)

# Le supprimer de la liste
delete(x)

# Définir y
y = choice(liste_Nombre)

# Le supprimer de la liste
delete(y)

# Faire le calcule abs(x-y)
nombre_Ajouter = calculer(x,y)

# Ajouter le nombre dans la liste
addNumber(nombre_Ajouter)

# Initier la boucle pour trouver tous les nombres

for i in range(50000):

# Creer la liste
liste_Nombre = createList()

# Définir la boucle pour qu'il ne reste plus qu'un nombre
for i in range(2021): # Réteter 2020 fois
choiceNumber()

nombre_A_Ajouter = liste_Nombre[0]
if nombre_A_Ajouter in liste_Nombre_Final:
pass
else:
liste_Nombre_Final.append(nombre_A_Ajouter)

liste_Nombre_Final.sort()
print(liste_Nombre_Final)

print(len(liste_Nombre_Final))


Pour copier le code, il faut 'copier le code' , puis cliquer sur le bouton 'Code' en haut.
Ainsi, la mise en page est respectée, et les indentations (les espaces en début) de ligne sont visibles.
Dans ton code, on a perdu ces indentations, et en Python, c'est essentiel.

Dans ton code, tu testes if nombre_A_Ajouter in liste_Nombre_Final: ....
Normalement, tu ne devrais pas avoir ce test. L'énoncé dit qu'il faut ajouter la ligne dans tous les cas, et tant pis si ça donne des doublons.
Sinon... problème possible, tu supprimes 2020 fois 2 lignes, et tu ajoutes de temps en temps (rarement) une ligne... ton tableau va être vide bien avant de faire les 2020 boucles.

phyelec
Membre Rationnel
Messages: 948
Enregistré le: 06 Mar 2020, 17:47

Re: Problème de Mathématiques

par phyelec » 04 Déc 2021, 18:19

Bonjour,

Voici un programme dans lequel je fais varier la taille du tableau

Code: Tout sélectionner
from random import randint
import numpy as np

def tirage () :
   i1=randint(0,n)
   #█print i1
   i2=randint(0,n)
   #print i2
   return i1,i2
   
# programme principal
n=30   
#création du tableau des entiers
A=np.arange(0,n+1)
print A
   
for i in range (0,n):
    k=0
    while  k==0 :
        (i1,i2)=tirage()
        i3=abs(A[i1]-A[i2])
        A[i1]=i3
        A[i2]=i3
        nb=0
       # on regarde si le tableau est rempli de valeur identique
        for j1 in range(0,n):
           if A[j1]==A[j1+1]:
              nb=nb+1
        if nb == n :
           k=1
           print A

lyceen95
Membre Complexe
Messages: 2255
Enregistré le: 15 Juin 2019, 00:42

Re: Problème de Mathématiques

par lyceen95 » 04 Déc 2021, 19:18

Phyelec, tu mets comme commentaire dans ton programme :
on regarde si le tableau est rempli de valeur identique

Pourquoi ?

Si on tire les nombres 44 et 45, on supprime ces 2 nombres et on insère une ligne avec 1 à la place.
Si un peu plus tard, on tire 13 et 14, on supprime ces 2 nombres et on insère une ligne avec 1 à la place.
On se retrouve avec 3 fois le nombre 1 dans le tableau : le 1 apparaissait déjà une fois, et on vient d'insérer 2 lignes avec 1.
Rien dans l'énoncé ne dit qu'il faut supprimer ces doublons.

Code: Tout sélectionner
tt est un tableau de 0 entiers
i,k , i1, i2 , i01, i02 est un entier
POUR i = 1 À 2021
   TableauAjoute( tt, i)
FIN

POUR i = 1 À 2020
   k = TableauOccurrence (tt)
   i1 = Hasard(k)
   i01 = tt[i1]
   TableauSupprime(tt, i1)
   i2 = Hasard(k-1)
   i02 = tt[i2]
   TableauSupprime(tt,i2)
   TableauAjoute( tt, Abs(i01-i02) )
FIN
print ( tt[1] )



En lançant ce programme 100 fois via une boucle, on constate une certaine particularité dans les résultats, et on peut répondre à la question : Quelle est la liste des valeurs qui peuvent être affichées ?

phyelec
Membre Rationnel
Messages: 948
Enregistré le: 06 Mar 2020, 17:47

Re: Problème de Mathématiques

par phyelec » 04 Déc 2021, 21:27

@lyceen95 parce que dans l'énoncé il y écrit :" ne reste plus qu’un seul nombre écrit sur le tableau. " Mais j'ai peut être loupé quelque chose

Avatar de l’utilisateur
Ben314
Le Ben
Messages: 21532
Enregistré le: 11 Nov 2009, 22:53

Re: Problème de Mathématiques

par Ben314 » 04 Déc 2021, 23:15

Salut,
Il est clair que la parite de la somme reste inchangee a chaque etape et que les nombres que l'on ecrit sont entre 0 et 2021 (inclus).
Donc le dernier nombre est un impair entre 1 et 2021 et on verifie facilement que tous sont possibles : garder le nombre voulu, faire des 1 avec les 1010 couples (a,a+1) restant puis faire des zéros avec les 505 couples (1,1)
Modifié en dernier par Ben314 le 09 Juin 2023, 23:05, modifié 1 fois.
Qui n'entend qu'un son n'entend qu'une sonnerie. Signé : Sonfucius

lyceen95
Membre Complexe
Messages: 2255
Enregistré le: 15 Juin 2019, 00:42

Re: Problème de Mathématiques

par lyceen95 » 05 Déc 2021, 00:00

@Phyelec
On va formuler un peu différement.
On a 2021 boules dans une urnes, numérotées entre 1 et 2021.

On repète 2020 fois l'opération suivante :
- retirer 2 boules.
- Regarder les numéros sur ces 2 boules, et calculer leur différence (en valeur absolue)
- Remettre une boule dans l'urne, avec comme numéro le résultat de ce calcul.

A chaque fois, on retire donc 2 boules, et on en ajoute une.

Au bout de 2020 cycles, il reste donc une seule boule dans l'urne. (... ce qui était écrit sous la forme : il reste un seul nombre )
etc etc

Et Ben314 a parfaitement analysé la mécanique... comment transformer cet exercice de programmation en un exercice de maths.

phyelec
Membre Rationnel
Messages: 948
Enregistré le: 06 Mar 2020, 17:47

Re: Problème de Mathématiques

par phyelec » 05 Déc 2021, 13:44

@lyceen95, vous avez raison, pour ma part j'avais compris:

"On a 2021 boules dans une urnes, numérotées entre 1 et 2021.
On répète 2020 fois l'opération suivante :
- retirer 2 boules.
- Regarder les numéros sur ces 2 boules, et calculer leur différence (en valeur absolue)
- Remettre 2 boules dans l'urne, avec comme numéro le résultat de ce calcul."

Donc, il y avait toujours le même nombre de boule à chaque tirage,ce qui est une fausse interprétation de "choisir deux nombres x et y sur le tableau, les effacer, puis écrire la valeur absolue |x −y| de leur différence"

 

Retourner vers ⚔ Défis et énigmes

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 11 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite