Pyramide de chiffres

Bonjour et meilleurs vœux à tous.

Il s'agit d'un problème récréatif.

On construit une pyramide de chiffres par addition des deux chiffres du dessous suivit d'un modulo 10.
Un exemple :

. . . . . . 5
. . . . . 3 . 2
. . . . 1 . 2 . 0
. . . 7 . 4 . 8 . 2
. . 1 . 6 . 8 . 0 . 2
. 1 . 0 . 6 . 2 . 8 . 4
2 . 9 . 1 . 5 . 7 . 1 . 3


Est-il possible de remplir une pyramide incomplète (plus grande, la base fait 16 chiffres) sans calculs astronomiques ?
J'ai bien remarqué le triangle de Pascal mais si je connais la valeur de 16 cases un simple $A^{-1}B$ ne fonctionne pas puisque je n'ai que les valeurs de $B$ modulo 10. Je ne sais pas combien de fois 10 a pu être retiré et en vers le haut ça peut monter très loin.

Merci.

Réponses

  • Comment ça « sans calcul astronomique » ?

    Un simple essai sous Excel va très très vite, non ?
    Par exemple en utilisant la fonction « partie entière ».

    Mais je ne sais pas si je comprends bien le problème.
  • Si tous les nombres de la pyramide sont des entiers entre 0 et 9, c'est immédiat dès qu'il y a suffisamment de nombres placés au départ. Les calculs à faire sont monstrueux : il s'agit de soustractions modulo 10.

    Sinon... pour chaque case vide, il y a une infinité de valeurs possibles.

    Bref, c'est trivial ou impossible. Es-tu sûr de nous avoir tout dit ?
  • Merci pour la réponse,

    La base de la pyramide est composée de 16 chiffres et on me donne 16 cases remplies, j'imagine que je suis dans le cas trivial.
    Visiblement je n'ai pas pris le problème dans le bon sens.
    Je vais y réfléchir davantage.
  • Ok. On a 16 cases à la bases.
    Mais on ne révèle que 16 cases dans la pyramide, pas toutes celles de la base mais disons un peu partout.

    Comment remplir la grille sans tâtonner, c’est ça la question ?
  • Oui c'est ça, je ne vois toujours pas comment automatiser ça.
    Dans un premier temps j'ai voulu essayer toutes les permutations, ça fait trop.
    Ensuite j'ai essayé de déterminer un système d'équations mais je n'arrive pas à le résoudre à cause du modulo que je ne sais pas traiter correctement
    J'ai joint la pyramide.94822
  • Ok.
    Naïvement je tâtonne en partant d’une case révélée la plus basse. Ici, le 6.
    Et je regarde s’il y a des contradictions avec le deuxième 6.

    Là je n’ai pas fait de math du tout ni d’algorithmique (enfin, ça c’est en place c’est du « proche en proche »).

    On doit quand même pouvoir trouver des conditions nécessaires sur les sommes des lignes supérieures (on double la somme des cases d’en dessous et on ajoute une seule fois les extrémités, etc. ).
  • bonjour,

    il y a erreur dans le premier triangle de chiffres.

    Bien cordialement.

    kolotoko
  • Effectivement j'ai bien mal recopié, toutes mes excuses.
    Je recommence...
    Il y en avait aussi dans la pyramide jointe.
    Je l'ai modifiée mais je ne suis pas sûr qu'il n'y ait qu'une solution, quand j'ai essayé de résoudre via un système d'équations ma matrice n'était pas inversible.
    Ou alors je me suis encore trompé -_-.
    Mais c'est surtout le principe de résolution que j'aimerai bien assimiler.
  • Bon visiblement il n'y a pas du tout assez de données pour déterminer cette pyramide.
    Le concepteur vient de me dire qu'il n'y avait pas fait attention.
    Cependant s'il y en avait eu une seule, je n'ai toujours pas la moindre idée pour la déterminer automatiquement.
    Désolé.
  • Alors...
    L’étage $0$ contient les $16$ entrées notées $a_i$ en indexant dans $0;15$.
    On compte bien $16$ étages.
    Je note $b_{e,\ell}$ la case de l’étage $e$ à la position $\ell$ (en partant de la gauche).
    Par exemple pour $\ell \in 0;15$, $b_{0,\ell}=a_{\ell}$.

    Toutes les cases des autres étages que la base (étage $0$) sont des sommes de fonctions linéaires en les $a_i$.
    J’obtiens (sauf erreur), les équations suivantes :
    Pour tout $e\in 0;15$, pour tout $j\in 0;15-e$, $\displaystyle b_{e,j}=\sum_{k=0}^e C_e^ka_{j+k}$.

    Dans le problème proposé, on a un système de $16$ équations linéaires (les cases révélées) à $16$ inconnues (les $a_i$).
    On sait que l’ensemble des solutions est soit vide, soit réduit à un seul 16-uplet, soit de cardinal infini...enfin pas dans $\mathbb Z /10\mathbb Z$...(houlala...)

    Remarque : j’ai choisi $C_n^k$ comme notation pour les coefficients binomiaux.

    Qui veut écrire la matrice 16$\times$16 ?
    Elle doit contenir pas mal de zéros...
    Sur mon portable c’est certainement l’enfer et je rouille en ce moment du côté des lignes de codes.

    J’espère ne pas m’être royalement planté comme une couscoussière tombée du troisième étage de la Tour Eiffel.
  • Une chose est sure, si solution il y a, cette solution ne sera pas unique.
    Quand on a une solution, si on ajoute 5 à tous les éléments de la 1ère ligne, on obtient une seconde solution.

    En regardant les zones où on a beaucoup d'informations, on voit que le nombre entre 0 et 9, en ligne 10, ne peut être que 2 ou 7.
    2 lignes plus bas, si on note (a,b,c) les 3 nombres entre 8 et 3, on trouve que a-c = 3 modulo 10.

    Ca va être long !!!
    Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. Benjamin Franklin
  • Ha oui ! Bien vu, « l’ajout de 5 ».
    Je savais que je m’embourbais avec les « zed-sur-n-zed » et les systèmes linéaires.

    Cependant on doit bien pouvoir faire du pivot de Gauss, non ?
  • Avec Excel, ça se résout assez bien.

    En ligne 10, entre le 0 et le 9, on peut mettre 2 ou 7.
    Toujours en ligne 10, à gauche de ce 0, on va mettre un nombre 'au hasard' (donc successivement 10 valeurs pour cette cellule, et 2 valeurs pour la première cellule). On a donc 20 combinaisons à tester.

    Par des formules assez simples, on peut déduire tout le bas de la pyramide, sauf la ligne du bas, et sauf la partie droite (on remonte jusqu'au 5 de la ligne 13, et on redescend jusqu'à la ligne 2).

    Sauf qu'on arrive à une incohérence. En ligne 4, on a 0 et 1. À ces 2 emplacements, si on laisse le 0 comme actuellement, il faudrait avoir (0,4) ou (0,9) pour que ce soit cohérent.
    Je crois qu'on a aussi une incohérence sur la ligne du dessus ; 7 et 1 sont incompatibles.

    Et pour la ligne du bas... il y a en fait pas seulement 2 mais 10 solutions une fois que la 2ème ligne est connue. On met ce qu'on veut dans la 1ère cellule de cette ligne du bas, et le reste de la ligne s'en déduit immédiatement.
    Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. Benjamin Franklin
  • Salut, ça ne me semble pas contraignant, si je choisis n'importe quelle valeur au sommet haut $\to $ au bas ($5$) ? C'est faisable.

    Cordialement.
  • Je ne comprend pas la question.

    Avec les cases données de la ligne 13 à la ligne 4 : (5), (3) ,(rien) , (0,9), (8), (8, 3) , (7), (4), (7, 1) , (0, 1), on arrive à une incohérence.
    Il faut changer au moins 1 voire probablement 2 valeurs dans cette série de données pour qu'il y ait une solution au problème.

    On peut aussi retirer une des cases. Si par exemple on dit que le 5 de la ligne 13, c'est en fait une case qu'il faut deviner, alors c'est un autre exercice. Et peut-être que cet autre exercice a une solution.
    Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. Benjamin Franklin
  • Bonjour,

    On note la 3e ligne $ a/ b /0$.
    On obtient alors en 4e ligne modulo $10$ $a-5/b-a+5/-b+a-5$
    Comme l'a précisé Lourran, dans la 7e ligne entre $0$ et $9$ on a soit $2$ soit $7$. Ainsi selon ces deux cas on obtiendra les valeurs adjacentes au nombre $3$ de la 5e ligne. Il suffira alors de résoudre un système d'équations à deux inconnues et vérifier ensuite en allant vers le bas si on obtient ou non une solution.

    Al-Kashi
  • Bonjour,

    il y a erreur dans ce deuxième triangle de nombres.

    Bien cordialement.

    kolotoko
  • Je passe à côté d'un truc je verrais, parce qu'il me parait, il y a plein de solutions du haut en bas au moins jusqu'à la ligne vide, merci.


    Edit
    Ça peut être impossible vue la figure de lourran.
  • Je corrige ce que j'ai dit plus haut. Il me semble qu'il faut aller jusqu'à la 9e ligne pour obtenir une relation entre $a$ et $b$ et ensuite jusqu'à la 12e ligne pour obtenir la valeur de $a$ .Je n'ai pas trop le temps et le courage d'aller plus bas.

    Ps: retrait du fichier joint car il y avait des coquilles.Voir plus bas.

    Al-Kashi
  • « il est suivit » donne au féminin « elle est suivite »?
  • Reprenons le cheminement d'hier, avec quelques corrections au passage.

    L'image jointe donne le cheminement. On traite d'abord les cases avec des lettres minuscules, selon l'ordre alphabétique, puis les cases avec des lettres majuscules
    On choisit 2 ou 7 arbitrairement dans la 1ère case. Les cases a et b s'en déduisent.
    On choisit ensuite la case c, arbitrairement, et les cases d à p s'en déduisent.
    Mais pour p, on a en fait 2 formules possibles à partir des cases déjà renseignées : p=j-8 ou p=k-o.
    Ces 2 formules coïncident uniquement si on a choisi de mettre 0 ou 5 dans la case c.
    Ensuite, on peut placer les cases q à y, de façon unique.

    Puis on doit choisir z arbitrairement, et on en déduit les cases A à P
    Pour N et pour P on a 2 formules possibles pour N, on a N=E-M ou N=F-1 et pour P on a P=K-O ou P=L-1, il faut que ces 2 formules donnent le même résultat, sinon la grille n'a pas de solution.
    Et parmi les 40 combinaisons possibles (2 ou 7 dans la 1ère case, 0 ou 5 dans la case c, 0 à 9 dans la case z), aucune ne convient.94940
    Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. Benjamin Franklin
  • Après la précieuse remarque « on peut ajouter 5 à chaque case de la base », j’en lance une autre sans savoir si elle a été déjà dite.

    On peut ajouter en alternance $a$ et $b$ tels que $a+b=10$ à chaque case de la base et les étages de la pyramide sont inchangés puisque le premier étage est inchangé.
  • Oui Dom, déjà dit.
    Et pour la ligne du bas... il n'y a en fait pas seulement 2 mais 10 solutions une fois que la 2ème ligne est connue. On met ce qu'on veut dans la 1ère cellule de cette ligne du bas, et le reste de la ligne s'en déduit immédiatement.
    Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. Benjamin Franklin
  • Haha.
    Sorry ;-)
  • Bonjour, et merci pour tous vos essais !

    Avec l"idée de lourran j'ai trouvé ça qui semble fonctionner :

    Je me suis trompé quelque part ?94988
  • Voici la solution de la première ligne de la pyramide que j'ai fini par trouver mais ce ne sont plus des mathématiques :

    0 7 9 9 9 7 7 7 2 6 4 4 4 3 3 3.
  • Quelque chose me dit qu’il existe (au moins) deux classes de solutions.
    Chaque classe en contient dix.
  • Oui mais comme je le disais on n'est plus dans les mathématiques là, c'est une astuce.
  • Ok.
    Enfin, je ne suis pas sûr de bien comprendre, dis-tu que tu ne souhaites pas trouver une méthode pour trouver les solutions mais que juste un tâtonnant suffit ?
  • Bonjour,

    non au contraire je suis toujours à la recherche d'une méthode systématique qui amène aux résultats possibles sans tâtonnement.
    J'ai essayé sagemath qui permet de résoudre un système dans Z/10Z mais je n'ai pas bien saisi son fonctionnement il ne me retourne qu'une seule solution (1 1 0 8 0 6 8 6 3 5 5 3 5 2 4 2) sans aucun message signalant qu'il puisse y en avoir d'autres.
  • En fait, ici, tu privilégies la ligne du bas. Mais c'est une façon restrictive de voir. Les 3 côtés du triangle jouent exactement le même rôle.
    On va du bord bas vers le haut avec la formule a=b+c, mais, de la même façon, on va du bord droit vers le coin en bas à gauche avec la formule a=b-c.

    Si on a un triangle de base 10000 par exemple, il faudra une démarche systématique. Pour ça, il faut identifier les cases qui ont le plus de contraintes : la case où ou avait un 2 ou un 7 dans cette grille a 2 cases-imposées à une distance de 1, et une case imposée à une distance de 2.
    Puis, on cherche à chaque fois, la case qui a le plus de contraintes, en prenant en compte les case retenues. Ca permet de classer toutes les cases, de la plus contrainte à la moins contrainte, et de minimiser la taille de l'arbre qu'on devra parcourir.
    Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. Benjamin Franklin
  • C’est en effet un système linéaire (dans Z/10Z).
    On doit bien pouvoir trouver un programme qui fait ça.

    Le plus chiant devrait être d’entrer les coefficients en fonctions des cases révélées.
    C’est ce que j’ai essayé de faire en proposant mes formules, plus haut.
  • Voici les matrices pour les cases données :

    A = [[0, 0, 1, 3, 8, 6, 5, 7, 6, 6, 7, 5, 6, 8, 3, 1], [1, 2, 6, 0, 5, 2, 4, 2, 5, 0, 6, 2, 1, 0, 0, 0], [0, 0, 1, 1, 5, 5, 0, 2, 2, 0, 5, 5, 1, 1, 0, 0], [0, 0, 1, 9, 6, 4, 6, 6, 4, 6, 9, 1, 0, 0, 0, 0], [0, 0, 0, 0, 1, 9, 6, 4, 6, 6, 4, 6, 9, 1, 0, 0], [1, 8, 8, 6, 0, 6, 8, 8, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 7, 1, 5, 5, 1, 7, 1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 7, 1, 5, 5, 1, 7, 1, 0, 0], [0, 0, 1, 6, 5, 0, 5, 6, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 0, 0, 5, 1, 0], [1, 4, 6, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 1, 4, 6, 4, 1, 0, 0, 0, 0], [0, 0, 1, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0]]

    B = [0, 5, 3, 0, 9, 8, 8, 3, 7, 4, 7, 1, 0, 1, 6, 6]

    J'ai essayé d'adapter le pivot de Gauss pour ne faire que des combinaisons linéaires (pas de division) mais j'ai dû faire une erreur dans mon script j'ai trop de solutions (la plupart étant fausses) mais les bonnes semblent en faire parties.
    Une deuxième vérification me filtre uniquement 20 solutions :

    [0, 2, 9, 9, 9, 7, 7, 7, 2, 6, 4, 4, 4, 3, 3, 3]
    [0, 7, 9, 9, 9, 7, 7, 7, 2, 6, 4, 4, 4, 3, 3, 3]
    [1, 1, 0, 8, 0, 6, 8, 6, 3, 5, 5, 3, 5, 2, 4, 2]
    [1, 6, 0, 8, 0, 6, 8, 6, 3, 5, 5, 3, 5, 2, 4, 2]
    [2, 0, 1, 7, 1, 5, 9, 5, 4, 4, 6, 2, 6, 1, 5, 1]
    [2, 5, 1, 7, 1, 5, 9, 5, 4, 4, 6, 2, 6, 1, 5, 1]
    [3, 4, 2, 6, 2, 4, 0, 4, 5, 3, 7, 1, 7, 0, 6, 0]
    [3, 9, 2, 6, 2, 4, 0, 4, 5, 3, 7, 1, 7, 0, 6, 0]
    [4, 3, 3, 5, 3, 3, 1, 3, 6, 2, 8, 0, 8, 9, 7, 9]
    [4, 8, 3, 5, 3, 3, 1, 3, 6, 2, 8, 0, 8, 9, 7, 9]
    [5, 2, 4, 4, 4, 2, 2, 2, 7, 1, 9, 9, 9, 8, 8, 8]
    [5, 7, 4, 4, 4, 2, 2, 2, 7, 1, 9, 9, 9, 8, 8, 8]
    [6, 1, 5, 3, 5, 1, 3, 1, 8, 0, 0, 8, 0, 7, 9, 7]
    [6, 6, 5, 3, 5, 1, 3, 1, 8, 0, 0, 8, 0, 7, 9, 7]
    [7, 0, 6, 2, 6, 0, 4, 0, 9, 9, 1, 7, 1, 6, 0, 6]
    [7, 5, 6, 2, 6, 0, 4, 0, 9, 9, 1, 7, 1, 6, 0, 6]
    [8, 4, 7, 1, 7, 9, 5, 9, 0, 8, 2, 6, 2, 5, 1, 5]
    [8, 9, 7, 1, 7, 9, 5, 9, 0, 8, 2, 6, 2, 5, 1, 5]
    [9, 3, 8, 0, 8, 8, 6, 8, 1, 7, 3, 5, 3, 4, 2, 4]
    [9, 8, 8, 0, 8, 8, 6, 8, 1, 7, 3, 5, 3, 4, 2, 4]
  • Salut,

    Merci pour l'exercice de programmation, petite contribution, j'espère avoir compris le problème, sinon pas grave !

    1. Exemple d'utilisation :
    sage: P = Pyramide(4)
    sage: P.remplisage()
     Remplissage de la matrice : chiant
     tapper 222222222222222221 pour ne pas remplacer
     Bien sur vous pouvez enter un variable a = 222222222222222221 et tapper a
     Remplacer x11 par : a
    [x11   0   0   0]
    [x12 x22   0   0]
    [x13 x23 x33   0]
    [x14 x24 x34 x44]
     ---------------------------------------
    
     Remplacer x12 par : 1
    [x11   0   0   0]
    [  1 x22   0   0]
    [x13 x23 x33   0]
    [x14 x24 x34 x44]
    ---------------------------------------
    
     Remplacer x13 par : 2
    [x11   0   0   0]
    [  1 x22   0   0]
    [  2 x23 x33   0]
    [x14 x24 x34 x44]
    ---------------------------------------
    
     Remplacer x14 par : a
    [x11   0   0   0]
    [  1 x22   0   0]
    [  2 x23 x33   0]
    [x14 x24 x34 x44]
     ---------------------------------------
    
     Remplacer x22 par : 1
    [x11   0   0   0]
    [  1   1   0   0]
    [  2 x23 x33   0]
    [x14 x24 x34 x44]
    ---------------------------------------
    
     Remplacer x23 par : 9
    [x11   0   0   0]
    [  1   1   0   0]
    [  2   9 x33   0]
    [x14 x24 x34 x44]
    ---------------------------------------
    
     Remplacer x24 par : a
    [x11   0   0   0]
    [  1   1   0   0]
    [  2   9 x33   0]
    [x14 x24 x34 x44]
     ---------------------------------------
    
     Remplacer x33 par : a
    [x11   0   0   0]
    [  1   1   0   0]
    [  2   9 x33   0]
    [x14 x24 x34 x44]
     ---------------------------------------
    
     Remplacer x34 par : a
    [x11   0   0   0]
    [  1   1   0   0]
    [  2   9 x33   0]
    [x14 x24 x34 x44]
     ---------------------------------------
    
     Remplacer x44 par : a
    [x11   0   0   0]
    [  1   1   0   0]
    [  2   9 x33   0]
    [x14 x24 x34 x44]
     ---------------------------------------
    
    [x11   0   0   0]
    [  1   1   0   0]
    [  2   9 x33   0]
    [x14 x24 x34 x44]
    sage: P.A_solution()
    [2 0 0 0]
    [1 1 0 0]
    [2 9 2 0]
    [5 7 2 0]
    [x11   0   0   0]
    [  1   1   0   0]
    [  2   9 x33   0]
    [x14 x24 x34 x44]
    
    



    2. Le code : remarque déclarer une variable $a = 222222222222222221$ :-D
    class Pyramide:
    	def __init__(self,n):
    		self.n			= n 
    		self.star()
    	def star(self):
    		mlist=[];
    		varlist =[]
    		root = "x"
    		n = self.n
    		for i in range(n):
    				for j in range(n):
    					if(i <= j):
    						mlist.append(root+str(i+1)+str(j+1));
    						varlist.append(root+str(i+1)+str(j+1));
    					if (i > j):
    						mlist.append(0)
    		self.Poly_ring 		 = PolynomialRing(ZZ,varlist)
    		self.matrix_space 	 = MatrixSpace(self.Poly_ring,n,n)
    		self.matrix 		 = self.matrix_space(mlist).transpose()
    		self.x  			 = [self.Poly_ring(a) for a in varlist]
    		self.x_temp          = [self.Poly_ring(a) for a in varlist]
    		R = []
    		A = self.matrix
    		for i in range(self.n-1):
    			for j in range(i+1):
    				R.append(A[i,j]-A[i+1,j]-A[i+1,j+1])
    		self.equation = vector(R)
    		self.X  = lambda ij : self.Poly_ring(x[self.x.index(self.Poly_ring("x"+str(ij[0])+str(ij[1])))])
    	def remplisage(self):
    		print " Remplissage de la matrice : chiant \n tapper 222222222222222221 pour ne pas remplacer \n Bien sur vous pouvez enter un variable a = 222222222222222221 et tapper a"
    		X = self.x_temp
    		for xij in X:
    				a_ij = int(input(" Remplacer "+str(xij)+" par : "))
    				if (a_ij != 222222222222222221):
    					self.Substitute(xij,a_ij)
    					print self.matrix
    					print "--------------------------------------- \n"
    				else: 
    					print self.matrix
    					print " --------------------------------------- \n"
    		print self.matrix
    	def Substitute(self,xij,a_ij):
    		self.matrix 		= self.matrix.substitute({xij :a_ij})
    		self.equation       = self.equation.substitute({xij : a_ij})
    		self.x.remove(xij)
    	def Subs(self,i,j,a_ij):
    		self.matrix 		= self.matrix.substitute({self.X([i,j]) :a_ij})
    		self.equation       = self.equation.substitute({self.X([i,j]) : a_ij})
    		self.x.remove(self.X([i,j]))
    	def Solver(self):
    		X = self.x
    		second_membre = -self.equation.substitute({xij : 0 for xij in X})
    		homogene  	  = self.equation+second_membre
    		pre_matrix = [[eq_k.coefficient(xij) for xij in X] for eq_k in homogene]
    		def My_ker(pre_mat,k):
    			return matrix(k,pre_matrix)
    		M5 = My_ker(pre_matrix,GF(5))
    		KER_M5 = M5.right_kernel()
    		Part_solution_5 = M5.solve_right(second_membre)
    		M2 = My_ker(pre_matrix,GF(2))
    		KER_M2 = M2.right_kernel()
    		Part_solution_2 = M2.solve_right(second_membre)
    		return [KER_M5,Part_solution_5,KER_M2,Part_solution_2]
    	def A_solution(self):
    		a,b,c,d = self.Solver()
    		f = lambda u,v : 5*u -4*v
    		sol_part = f(d.lift(),b.lift())%10 
    		A = self.matrix
    		x = self.x
    		print A.substitute({x[k] : sol_part[k] for k in range(len(x))})
    		print A
    
  • Pour ta grosse pyramide je trouve $20$ solutions si je ne me suis pas trompé dans le remplissage (c'est chiant) … une solution normalement
    sage: P.A_solution()
    [6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
    [8 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
    [0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
    [5 5 3 7 0 0 0 0 0 0 0 0 0 0 0 0]
    [3 2 3 0 7 0 0 0 0 0 0 0 0 0 0 0]
    [3 0 2 1 9 8 0 0 0 0 0 0 0 0 0 0]
    [3 0 0 2 9 0 8 0 0 0 0 0 0 0 0 0]
    [8 5 5 5 7 2 8 0 0 0 0 0 0 0 0 0]
    [1 7 8 7 8 9 3 5 5 0 0 0 0 0 0 0]
    [1 0 7 1 6 2 7 6 9 6 0 0 0 0 0 0]
    [7 4 6 1 0 6 6 1 5 4 2 0 0 0 0 0]
    [7 0 4 2 9 1 5 1 0 5 9 3 0 0 0 0]
    [7 0 0 4 8 1 0 5 6 4 1 8 5 0 0 0]
    [3 4 6 4 0 8 3 7 8 8 6 5 3 2 0 0]
    [7 6 8 8 6 4 4 9 8 0 8 8 7 6 6 0]
    [3 4 2 6 2 4 0 4 5 3 7 1 7 0 6 0]
    
  • Bonsoir,

    Comme je l'ai déjà précisé au dessus mais il y avait des coquilles dans ma pyramide, il est possible de tout faire à la main si on a du temps et un peu de courage. On note $a$ et $b$ les deux paramètres dont dépendent toutes la valeurs de la pyramide sauf la première ligne. On remarque qu'entre $9$ et $0$ il ne peut y avoir que $2$ ou $7$. Ensuite on complète la pyramide vers le bas. La ligne sur laquelle je me suis arrêté permet alors de conclure que $a=0$ ou $5$. Je te propose de continuer ainsi. Cela doit être assez simple à programmer avec $2$ inconnues.
    Il est ensuite évident que pour chaque solution obtenue, la première ligne peut être obtenue de $10$ manières différentes.On pourra par exemple fixer la valeur la plus à droite et en déduire toutes les autres.

    Al-Kashi95320
  • Salut Al-Kashi,

    Oui, je suis ok pour les deux paramètres. Mais est-ce que tes deux paramètres sont indépendants ?
  • Bonjour Goleon,

    Oui, les paramètres sont indépendants.

    Al-Kashi
  • Bonsoir,

    Goleon, as-tu essayé de programmer avec la méthode que je t'ai proposée ?

    Al-Kashi
  • Salut,

    Non non je n'ai pas programmé ta démarche.
Connectez-vous ou Inscrivez-vous pour répondre.