Inscription / Connexion Nouveau Sujet
Niveau énigmes
Partager :

JFF : [pgm] L espace farçeuse...***

Posté par philoux (invité) 11-04-06 à 17:02

Bonjour

Mathilde voulait écrire la multiplication 2 65 = 130, mais l'espace de multiplication a été omise et elle a écrit 265 = 130.
En corrigeant son texte, elle réajouta l'espace au mauvais endroit : 26 5 = 130.
Heureusement pour elle, sa multiplication était toujours exacte.

Mathias voulait écrire la multiplication 1 5 5775 = 28875, mais les espaces de multiplication ont été omises et il a écrit 155775 = 28875.
En corrigeant son texte, il réajouta les espaces aux mauvais endroits : 1 55 7 75 = 28875.
Voyant qu'il s'était trompé, il corrigea une deuxième fois : 15 5 77 5 = 28875.
Heureusement pour lui, ses multiplications étaient toujours exactes.

Quant à Mathias, il était subjugué par les multiplications suivantes :
En effet, il voulait écrire la multiplication 19 75 395 = 562875, mais les espaces de multiplication ayant été omises, il a écrit 1975395 = 562875.
En corrigeant son texte, il réajouta les espaces aux mauvais endroits : 1975 3 95 = 562875.
Il constata, aussi, qu'avec les mêmes nombres, il pouvait obtenir :
1 975 3 95 = 277875, mais les espaces de multiplication ayant été omises, il a écrit 1975395 = 277875.
En corrigeant son texte, il réajouta les espaces aux mauvais endroits : 19 75 39 5 = 277875.
Heureusement pour lui, ses multiplications étaient toujours exactes.

Le grand-père Mathurin leur dit qu'il y a plein de nombres comme ceux-ci :
* avec un série d'infinité : 1999...9 × 5 = 1 × 999...95
* voire même, avec deux séries d'infinité : 666...674000...02 × 4 = 666...67 × 4000...024

Sans aller jusqu'aux infinités, sauriez-vous, avec un peu de programmation, fournir les produits de 2, 3 ou 4 nombres qui ont les propriétés exposées ci-dessus ?

S'il faut, pour certains, se limiter à une valeur pour chaque nombre, on peut prendre 999; bien entendu, les produits nuls sont à exclure.

Bonne réflexion !

Philoux

Posté par
cinnamon
re : JFF : [pgm] L espace farçeuse...*** 11-04-06 à 18:36

Salut philoux.

Voici en blanqué le tout début de mes recherches (ils ne contiennent que deux nombres pour l'instant, l'un à un chiffre l'autre à deux chiffres) :

\white \rm 100 0
\white \rm 111 11
\white \rm 164 64
\white \rm 195 95
\white \rm 200 0
\white \rm 222 44
\white \rm 265 130
\white \rm 300 0
\white \rm 333 99
\white \rm 400 0
\white \rm 444 176
\white \rm 498 392
\white \rm 500 0
\white \rm 555 275
\white \rm 600 0
\white \rm 666 396
\white \rm 700 0
\white \rm 777 539
\white \rm 800 0
\white \rm 888 704
\white \rm 900 0
\white \rm 999 891

à+



Posté par
cinnamon
re : JFF : [pgm] L espace farçeuse...*** 11-04-06 à 20:30

Je viens de me rendre compte que j'ai oublié d'enlever les produits nuls...

Posté par
cinnamon
re : JFF : [pgm] L espace farçeuse...*** 13-04-06 à 12:47

Je vois que cette énigme rencontre un grand succès .

Un p'tit up .

Posté par
cinnamon
re : JFF : [pgm] L espace farçeuse...*** 13-04-06 à 12:48

En fait je pense que le nombre de nombres possibles est trop grand et qu'il faudrait peut-être ajouter quelques contraintes...

à+



Posté par
borneo
re : JFF : [pgm] L espace farçeuse...*** 13-04-06 à 12:59

Bonjour, si on peut chercher avec excel, je veux bien essayer... mais il faut me dire où je me limite

Posté par
cinnamon
re : JFF : [pgm] L espace farçeuse...*** 13-04-06 à 13:21

Je ne sais pas si c'est faisable avec Excel...

Personnellement, je ne jure que par Pascal .

Si ça intéresse quelqu'un, je vais poster la suite de ce que j'ai trouvé...

Posté par
master_och
re : JFF : [pgm] L espace farçeuse...*** 13-04-06 à 13:26

Salut Borneo

Philoux a déjà proposé une limite
"S'il faut, pour certains, se limiter à une valeur pour chaque nombre, on peut prendre 999; bien entendu, les produits nuls sont à exclure."

Bonne réflexion à toi!
En faite je n'ai vu cette énigme que maintenant mais je ne pense pas qu'elle est difficile, en tt cas merci pour ton petit up  cinnamon .

Posté par philoux (invité)re : JFF : [pgm] L espace farçeuse...*** 13-04-06 à 14:04

bonjour

oui,

l'autre contrainte que je n'ai pas mise est celle permettant d'éviter comme soluce les 111*11 par exemple...

Bonne poursuite de réflexion...

Philoux

Posté par
borneo
L espace farceuse * * * 13-04-06 à 15:11

D'accord, je vais regarder ce que je trouve avec excel. Donc, on poste en blanqué.

blanqué on
\rm Philoux, farceuse ne prend pas de cedille...\white
blanqué off

Posté par
cinnamon
re : JFF : [pgm] L espace farçeuse...*** 13-04-06 à 15:25

Re,

J'ai trouvé un programme qui fonctionne pour tous les produits de deux termes, quelle que soit la valeur (je me suis arrêtée à 9999 ).
J'essaie de le faire marcher pour 3 et 4 termes...
Mes résultats arrivent ...

Posté par
cinnamon
re : JFF : [pgm] L espace farçeuse...*** 13-04-06 à 15:28

Cette fois-ci je n'ai pas oublié d'écarter les produits nuls et les produits de la forme 888*8 = 8*888 .

Voilà ce que je trouve :

\rm \white 64=1*64=16*4\\95=1*95=19*5\\130=2*65=26*5\\392=4*98=49*8\\110=1*110=11*10\\325=1*325=13*25\\640=1*640=16*40\\950=1*950=19*50\\440=2*220=22*20\\1300=2*650=26*50\\1512=2*756=27*56\\990=3*330=33*30\\2925=3*975=39*75\\1760=4*440=44*40\\3920=4*980=49*80\\2750=5*550=55*50\\3960=6*660=66*60\\5390=7*770=77*70\\2656=8*332=83*32\\7040=8*880=88*80\\8910=9*990=99*90\\1100=1*1100=11*100\\1110=1*1110=111*10\\3250=1*3250=13*250\\3325=1*3325=133*25\\5134=1*5134=151*34\\6400=1*6400=16*400\\6640=1*6640=166*40\\10624=16*664=166*64\\8145=1*8145=181*45\\9500=1*9500=19*500\\9950=1*9950=199*50\\18905=19*995=199*95\\16275=21*775=217*75\\4400=2*2200=22*200\\4440=2*2220=222*20\\5448=2*2724=227*24\\8470=2*4235=242*35\\23904=24*996=249*96\\13000=2*6500=26*500\\13300=2*6650=266*50\\17290=26*665=266*65\\15120=2*7560=27*560\\15512=2*7756=277*56\\8175=3*2725=327*25\\9900=3*3300=33*300\\9990=3*3330=333*30\\29250=3*9750=39*750\\29925=3*9975=399*75\\17600=4*4400=44*400\\17760=4*4440=444*40\\21792=4*5448=454*48\\33880=4*8470=484*70\\39200=4*9800=49*800\\39920=4*9980=499*80\\48902=49*998=499*98\\27500=5*5500=55*500\\27750=5*5550=555*50\\32700=6*5450=654*50\\39600=6*6600=66*600\\39960=6*6660=666*60\\49032=6*8172=681*72\\29680=7*4240=742*40\\53900=7*7700=77*700\\54390=7*7770=777*70\\69125=7*9875=79*875\\26560=8*3320=83*320\\26656=8*3332=833*32\\70400=8*8800=88*800\\71040=8*8880=888*80\\73575=9*8175=981*75\\89100=9*9900=99*900\\89910=9*9990=999*90\\

Voilà.

à+



Posté par
master_och
re : JFF : [pgm] L espace farçeuse...*** 13-04-06 à 15:38

bravo Cinamon, ca fait déjà combien de solutions

Posté par
master_och
re : JFF : [pgm] L espace farçeuse...*** 13-04-06 à 15:41

En plus je crois qu'il est inutile de blanker dans ce genre d'énigme car les solutions sont trés nombreuses elles n'aideront pas les programmeurs à avancé, c'est juste mon avis .

Posté par
master_och
re : JFF : [pgm] L espace farçeuse...*** 13-04-06 à 15:52

Je ne sais pas si cela t'interesse où non mais en tt cas voicis une énigme [pgm] posté par philoux également et que je trouve trés interessante JFF : [pgm]  Produits de puissances :*::*:, en faite le programme que j'ai réaliser n'a pas pu répondre à la question de philoux (c.a.d pour n=20) car les cas deviennet trés nombreuses même avec tous les essaies que j'ai faites pour minimiser les vérifications, tout ce que j'ai pu faire est de trouver les solutions pour n<=16, donc si tu pourra réaliser un prgramme qui génére toutes les solutions pour n=20 se sera vraiment genial, bon courage .    

Posté par
cinnamon
re : JFF : [pgm] L espace farçeuse...*** 13-04-06 à 15:55

Merci master_och.

Tu n'as pas tort pour le blanquage...

Là il y a 73 solutions mais je peux en trouver autant que j'en veux .



Posté par
cinnamon
re : JFF : [pgm] L espace farçeuse...*** 13-04-06 à 15:58

"Là il y a 73 solutions mais je peux en trouver autant que j'en veux."

En fait j'ai parlé un peu trop vite .
Ma machine n'est pas assez puissante donc au bout d'un moment je ne peux pas toutes les afficher.
J'arrive à en afficher 161 sans trop de problèmes.

Je vais regarder pour l'autre programme.

Posté par
master_och
re : JFF : [pgm] L espace farçeuse...*** 13-04-06 à 16:00

D'acoord et moi je vais essayer de trouver des solutions pour ce probléme à 4 termes .

Posté par
cinnamon
re : JFF : [pgm] L espace farçeuse...*** 13-04-06 à 16:06

Je pense que tu mets la charrue avant les boeufs... Essaie d'abord avec 2 termes puis vois ce que ça donne (ce n'est qu'un conseil).





Posté par
master_och
re : JFF : [pgm] L espace farçeuse...*** 13-04-06 à 16:08

On faite j'ai un bon plan pour réaliser ce programme donc ne t'inquiéte pour moi ... .

Posté par
cinnamon
re : JFF : [pgm] L espace farçeuse...*** 13-04-06 à 16:10

ok

Donne-moi ton algo quand tu auras terminé, histoire qu'on puisse comparer.

Posté par
master_och
re : JFF : [pgm] L espace farçeuse...*** 13-04-06 à 16:11

D'accord, c'est quoi le language que tu utilise déjà??

Posté par
cinnamon
re : JFF : [pgm] L espace farçeuse...*** 13-04-06 à 16:16

J'utilise Pascal. J'ai jeté un oeil au programme que tu as concocté pour l'autre énigme et j'avoue ne pas avoir tout compris.
Ce serait pas mal si tu pouvais mettre un peu plus d'indentations et de commentaires .

Posté par
master_och
re : JFF : [pgm] L espace farçeuse...*** 13-04-06 à 16:21

D'accord je vais expliquer mon programme un peu mais aprés que je termine ce programme...

Posté par
master_och
re : JFF : [pgm] L espace farçeuse...*** 14-04-06 à 02:24

Voici un programme qui generera toutes les solutions en fonctions des données qu'il prenne, en faite si un nombre donne une solution avec un produit p, et s'il y a d'autres solutions avec un autre produit pour ce même nombre le programme n'affichera qu'une seule solution par nombre.
Pour mieux expliquer je vous donne un exemple:
si on par exemple on prend le nombre n=abcdef
si ce nombre donne une solution s1 :ab . cdef= ab . cd . ef = p1
et que ce même nombre donne une deuxiéme solution s2 abc . def = abcd .ef = a. bcdef = p2
on obtient donc 2 solutions pour un seul nombre abcdef, dans ce cas le programme n'affichera qu'une seule solution.

Voici le programme:

uses wincrt;
type tab=array[0..260] of longint;vect=array[1..9] of integer;

procedure calcul(ch:string;pos1:vect;n:integer;var res:longint);var x:real;e,i,j,k:integer;m:longint;t:vect;
          begin j:=0;repeat inc(j);if j<n then val(copy(ch,pos1[j ],(pos1[j+1]-pos1[j ])),t[j ],e)
          else val(copy(ch,pos1[j ],(length(ch)-pos1[j ]+1)),t[j ],e);until(j=n);val(copy(ch,1,pos1[1]-1),t[n+1],e);
          x:=0;k:=1;for j:=1 to n+1 do begin x:=t[j ]*x;if (x/1000000000)> 2.147 then begin k:=0;j:=n+1;end;end;
          if k=0 then res:=0 else begin res:=1;for j:=1 to n+1 do res:=res*t[j];end;end;

function po(res:tab;n:integer):integer;var i,j:integer;begin if n=1 then po:=0
else begin i:=0;repeat inc(i);until(res[i ]=res[n])or(i=n-1);if res[i ]=res[n] then po:=i else po:=0;end;end;

var nbr,b,q,c,d,k,i,m,p,j,e,l,lim3,lim4:integer;a,lim1,lim2:longint;ch1:string;res:tab;posi:vect;
ch:array[1..260]of string[11];

begin
nbr:=0;writeln('donnez les limites de l''interval dans lequel vous voulez chercher les solutions');
write('donner la première limite: ');readln(lim1);write('donnez la dexième limite: ');readln(lim2);
if lim1<=lim2 then begin writeln('donner les limites des nombres de termes des solutions: :');
write('donner la premiére limite : ');readln(lim3);write('donner la 2éme limite : ');readln(lim4);
if (lim3>1)and(lim4>=lim3)then begin
write('donnez le nombre de solutions que vous voulez afficher pour ce coup: ');readln(m);if m>0 then begin p:=nbr;
for a:=lim1 to lim2 do begin str(a,ch1);l:=0;
for i:=1 to length(ch1)-1 do if ch1[i ]<>ch1[i+1]then begin l:=1;i:=length(ch1)-1;end;
if l=1 then begin k:=0;q:=0;b:=0;for j:=lim3 to lim4 do begin i:=0;posi[1 ]:=1;d:=0;
repeat inc(i);if posi[i ]<(length(ch1)+i-j)then begin inc(posi[i ]);c:=1;
if i>1 then begin val(copy(ch1,posi[i-1],posi[i ]-posi[i-1]),c,e);if c=0 then dec(i);end;
if c>0 then begin if i<j then begin posi[i+1]:=posi[i ];end
else begin calcul(ch1,posi,j,res[k+1]);if res[k+1]>0 then begin ch[k+1]:=copy(ch1,1,posi[1]-1);
     for i:=1 to j do if(i<j)then ch[k+1]:=ch[k+1]+' '+copy(ch1,posi[i ],(posi[i+1]-posi[i ]))
                      else ch[k+1]:=ch[k+1]+' '+copy(ch1,posi[i ],(length(ch1)-posi[i ]+1));
     if po(res,k+1)=0 then inc(k)
     else if((b=0)or(res[k+1]=res[q ])) then
     begin inc(b);q:=po(res,k+1);if b=1 then write(ch[q ],' = ');write(ch[k+1],' = ');end;end;
     dec(i);end;end;end
else if i>1 then i:=i-2
else d:=1;until(d=1);end;end;
if(b>0)then begin inc(nbr);writeln(res[q],'    (',nbr,')          ');
if((nbr-m)=p)then begin write('donnez le nombre de solutions que vous voulez afficher pour ce coup: ');readln(m);
if m<1 then a:=lim2;p:=nbr;end;end;end;end;end;end;end.


Maintenant j'explique un peu le fonctionnement du programme pour ceux qui veulent le tester:
¤¤ Vous devez au début donner au programme les limites du nombre
n (dans l'exemple n est abcdef mais le nombre de chiffre n'est pas respecté biensure ).
la deuxiéme limite doit être superieur ou égale à la premiére limite.

¤¤ en suite le programme demandera les limites de nombre e termes(c.a.d le nombre d'espaces à inserer +1), le prmiére limite doit être superieur ou égale 2, la deuxiéme limite doit être >= 1ére limite.

¤¤ enfin le programme vous demandera le nombre de solutions que vous voulez voir.Supposant que vous avez donné un nombre n aprés avoir générer n solutions"s'ils existent n solutions biensûre", le programme vous demandera à nouveau de le nombre de solutions que vous voulez afficher pour le prochain coup et ainsi de suite...

Et je dirai enfin merci à philoux pour cette jolie énigme .  

édit Océane : balises italiques remplacées

Posté par
master_och
re : JFF : [pgm] L espace farçeuse...*** 14-04-06 à 04:03

Voici une améloratin du programme:


uses wincrt;
type tab=array[0..260] of longint;vect=array[1..9] of integer;
procedure calcul(ch:string;pos1:vect;n:integer;var res:longint);var x:real;e,i,j,k:integer;m:longint;t:vect;
          begin j:=0;repeat inc(j);if j<n then val(copy(ch,pos1[j ],(pos1[j+1]-pos1[j ])),t[j ],e)
          else val(copy(ch,pos1[j ],(length(ch)-pos1[j ]+1)),t[j ],e);until(j=n);val(copy(ch,1,pos1[1]-1),t[n+1],e);
          x:=0;k:=1;for j:=1 to n+1 do begin x:=t[j ]*x;if (x/1000000000)> 2.147 then begin k:=0;j:=n+1;end;end;
          if k=0 then res:=0 else begin res:=1;for j:=1 to n+1 do res:=res*t[j];end;end;
function po(res:tab;n:integer):integer;var i,j:integer;begin if n=1 then po:=0
else begin i:=0;repeat inc(i);until(res[i ]=res[n])or(i=n-1);if res[i ]=res[n] then po:=i else po:=0;end;end;
function dif(ch1,ch2:string):boolean;var i,j,n,p,n1,n2:integer;t1,t2:array[1..10]of integer;begin
         j:=0;i:=0;n:=1;repeat inc(j);if(ch1[j]=' ')then begin inc(i);val(copy(ch1,n,j-n),t1[i ],p);n:=j+1;end;
         until(j=length(ch1));n1:=i+1;val(copy(ch1,n,j-n+1),t1[n1],p);
         j:=0;i:=0;n:=1;repeat inc(j);if(ch2[j]=' ')then begin inc(i);val(copy(ch2,n,j-n),t2[i ],p);n:=j+1;end;
         until(j=length(ch2));n2:=i+1;val(copy(ch2,n,j-n+1),t2[n2],p);p:=1;
         for j:=1 to n1 do if t1[j ]>1 then begin p:=0;for i:=1 to n2 do if(t2[i ]=t1[j ])then begin p:=1;i:=n2;end;
         if p=0 then j:=n1;end;
         if p=1 then for j:=1 to n2 do if t2[j ]>1 then begin p:=0;for i:=1 to n1 do
         if(t2[j ]=t1[i ])then begin p:=1;i:=n1;end;if p=0 then j:=n2;end;
         if p=0 then dif:=true else dif:=false;end;

var nbr,b,q,c,d,k,i,m,p,j,e,l,lim3,lim4:integer;a,lim1,lim2:longint;ch1:string;res:tab;posi:vect;
ch:array[1..260]of string[11];

begin
nbr:=0;writeln('donnez les limites de l''interval dans lequel vous voulez chercher les solutions');
write('donner la première limite: ');readln(lim1);write('donnez la dexième limite: ');readln(lim2);
if lim1<=lim2 then begin writeln('donner les limites des nombres de termes des solutions: :');
write('donner la premiére limite : ');readln(lim3);write('donner la 2éme limite : ');readln(lim4);
if (lim3>1)and(lim4>=lim3)then begin
write('donnez le nombre de solutions que vous voulez afficher pour ce coup: ');readln(m);if m>0 then begin p:=nbr;
for a:=lim1 to lim2 do begin str(a,ch1);l:=0;
for i:=1 to length(ch1)-1 do if ch1[i ]<>ch1[i+1]then begin l:=1;i:=length(ch1)-1;end;
if l=1 then begin k:=0;q:=0;b:=0;for j:=lim3-1 to lim4-1 do begin i:=0;posi[1 ]:=1;d:=0;
repeat inc(i);if posi[i ]<(length(ch1)+i-j)then begin inc(posi[i ]);c:=1;
if i>1 then begin val(copy(ch1,posi[i-1],posi[i ]-posi[i-1]),c,e);if c=0 then dec(i);end;
if c>0 then begin if i<j then begin posi[i+1]:=posi[i ];end
else begin calcul(ch1,posi,j,res[k+1]);if res[k+1]>0 then begin ch[k+1]:=copy(ch1,1,posi[1]-1);
     for i:=1 to j do if(i<j)then ch[k+1]:=ch[k+1]+' '+copy(ch1,posi[i ],(posi[i+1]-posi[i ]))
                      else ch[k+1]:=ch[k+1]+' '+copy(ch1,posi[i ],(length(ch1)-posi[i ]+1));
     if po(res,k+1)=0 then inc(k)
     else if((b=0)and dif(ch[k+1],ch[po(res,k+1)]))or(res[k+1]=res[q ]) then
     begin inc(b);q:=po(res,k+1);if b=1 then write(ch[q ],' = ');write( ch[k+1],' = ');end;end;
     dec(i);end;end;end
else if i>1 then i:=i-2
else d:=1;until(d=1);end;end;
if(b>0)then begin inc(nbr);writeln(res[q],'    (',nbr,')          ');
if((nbr-m)=p)then begin write('donnez le nombre de solutions que vous voulez afficher pour ce coup: ');readln(m);
if m<1 then a:=lim2;p:=nbr;end;end;end;end;end;end;end.


J'ai ajouté une fonction dif, qui illimine les solutions tels que: 11 001 1 = 1 1 0011 en faite c'est une fonction qui vérifie s'il existe au moin un terme dans l'un des 2 produits qui est différent de tous les termes de l'autre produit.
par exemple dans la solution 1 001 95 = 1 0019 5
le terme 95 du premier produit est différent de tous les termes de l'autre produit qui sont 1,19 et 5 (et biensûre ce terme different doit être >1).  

édit océane : balises italiques modifiées

Posté par
borneo
re : JFF : [pgm] L espace farçeuse...*** 14-04-06 à 08:29

Bonjour, avec excel, on ne va pas très loin
blanqué on

\rm en plus de ceux donnes par l'enonce, je trouve \\ 1x64 2x65 4x98 1x640 1x325 2x650 2x756 3x975 4x980 8x332 \white

blanqué off



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 !