trois nombres = 1 nombre unique

(Cliquez-ici pour accéder à la version originale de cette discussion avec couleurs et images)







Posted by: arcanis

Salut!
Pour la réalisation d'un programme, je doit trouver un moyen simple de combiner trois nombre pour en obtenir un quatrième qui ne puisse être obtenu qu'avec cette combinaison de trois. J'ai essayé de trouver une opération, mais je bloque un peu...
Par exemple, si on a 45, 27 et 33, impossible de les mettre côte-à-côte pour obtenir 452733: on obtiendrait le même nombre avec 4, 52 et 733.
Est-ce que mon idée est techniquement possible (en utilisant +*-/ et ^)?
désolé si je ne suis pas très précis...

Merci d'avance!


(si vous trouvez et s'il y a une démonstration je suis partant )



Posted by: Imod

Si ton problème est de retrouver les trois nombres de départ à partir du quatrième , c'est clairement impossible .

Imod



Posted by: _-Gaara-_

Salut Imod,

je crois que son problème serait plutôt de trouver un algorithme en utilisant ces opérateurs (+*-/ et ^) (turbo pascal je suppose ) permettant d'obtenir un nombre unique à partir de 3 autres nombres.

donc si on a n, m, p des nombres, il faut trouver un algo nous donnant un nombre s unique en combinant n, m, p.

donc s = m () n () p ( () : opérateur xD )

mais il ne faut pas par exemple que : s = m-1 () n+1 () p

enfin c'est ce que j'ai compris..



Posted by: ffpower

Citation:
Posté par Imod
Si ton problème est de retrouver les trois nombres de départ à partir du quatrième , c'est clairement impossible .

Imod


Pk ca,N^3 est en bijection avec N non? Apres,c est sur que c est mieux si la bijection(ou l injection,ca suffit) est simple

Une idée:tu convertis tes nombres en base 9,et tu les juxtaposes mais en mettant un 9 entre les nombres



Posted by: Imod

En fait tout c'est beaucoup de bla bla , il faudrait simplement une vraie question

Imod



Posted by: arcanis

En fait, on a trois nombre, A B et C. En effectuant des opérations sur ces nombres, il faut parvenir à un nombre D qui ne puisse être obtenu qu'à partir des trois nombre du départ, si l'on utilise les même opérations.

Par exemple, A + B + C ne marche pas, parce que A + B + C = (A-1) + (B+1) + C
Même chose pour A * B * C

J'ai fini par trouver un autre moyen de contourner ce problème, donc ce n'est plus si important, mais je trouve que c'est un petit problème intéressant...mais je n'ai pas les capacités pour le résoudre, hélas

"turbo pascal, je suppose"
Non, python



Posted by: _-Gaara-_

Aha j'y étais presque



Posted by: Patastronch

Y a des conditions sur tes 3 nombres ?



Posted by: ffpower

Je suppose que les conditions sont que les opérations soient algorithmiquement effectuables(Opérations pas trop complexes et nombre obtenu pas trop grand)



Posted by: arcanis

pour la limite des nombres, même à 3.000.000.000 ça marche donc on peut le considérer comme négligeable. Et vu que ce n'est plus très important (pour moi, en tout cas), je suppose qu'on peut utiliser d'autres fonctions comme sin/cos/tan/racines.
Les nombres du début sont toujours des entiers positifs, au fait.

On dirait vraiment que c'est impossible...bizarre, ça



Posted by: ffpower

T as pas lu mon post précédent ou je propose de convertir les nombres en base 9.Ca marche tres bien je pense et ca ne fait pas beaucoup de calculs.Sinon,de maniere plus théorique,si on a A,B et C on peut associer 2^A*3^B*5^C,mais ca va donner des grand nombres lol



Posted by: Patastronch

Citation:
Posté par arcanis
pour la limite des nombres, même à 3.000.000.000 ça marche donc on peut le considérer comme négligeable. Et vu que ce n'est plus très important (pour moi, en tout cas), je suppose qu'on peut utiliser d'autres fonctions comme sin/cos/tan/racines.
Les nombres du début sont toujours des entiers positifs, au fait.

On dirait vraiment que c'est impossible...bizarre, ça


Dans ce cas si y aun majorant a tes nombres A,B et C ca deviens tres simple :
Ton nombre unique :
XXX...XYYY...YZZZ...Z
Avec M fois X, M fous Y et M fois Z. Où M vérifit 10^M>b avec b ton majorant.
De telle sorte que
A=XXX...X
B=YYY...Y
C=ZZZ...Z

Exemple :
On sait que A, B et C sont forcément plus petit que 39.
Si notre nombre unique est 23013022
on sait alors que A=23, B=013=13, C=022=22


Mai pour que que cela marche il faut l'existence de ce majorant a tes nombres A, B et C.

L'idée de la base 9 de ffpower est pas mal, simple mais j'aime bien ce genre de solution "bidouille" :)



Posted by: venousto

jette un nenoeil à reve de phebus et complyx il y a les explication



Posted by: _-Gaara-_

Citation:
Posté par venousto
jette un nenoeil à reve de phebus et complyx il y a les explication


jette un nenoeil aux règlement du forum



Posted by: venousto

sa t'interesse la division par zero ou pas
d'aprés ce que tu m'avais dit ca t'interréssé
peut etre que je me trompe
excuse moi pour le derangement



Posted by: _-Gaara-_

Citation:
Posté par venousto
sa t'interesse la division par zero ou pas
d'aprés ce que tu m'avais dit ca t'interréssé
peut etre que je me trompe
excuse moi pour le derangement


oui çà m'intéresse, mais si cela t'intéresse aussi, tu aurais mieux fait de créer un nouveau sujet à ce propos et non parler dans le sujet de quelqu'un d'autre.. enfin c'est comme çà que je le conçois xD

tu ne me déranges pas



Posted by: Quidam

Citation:
Posté par Patastronch
Dans ce cas si y aun majorant a tes nombres A,B et C ca deviens tres simple :
Ton nombre unique :
XXX...XYYY...YZZZ...Z
Avec M fois X, M fous Y et M fois Z. Où M vérifit 10^M>b avec b ton majorant.
De telle sorte que
A=XXX...X
B=YYY...Y
C=ZZZ...Z

Exemple :
On sait que A, B et C sont forcément plus petit que 39.
Si notre nombre unique est 23013022
on sait alors que A=23, B=013=13, C=022=22


Mai pour que que cela marche il faut l'existence de ce majorant a tes nombres A, B et C.

L'idée de la base 9 de ffpower est pas mal, simple mais j'aime bien ce genre de solution "bidouille" :)


Pourquoi ne pas faire le minimum ? Si 0<=A<P, 0<=B<P, 0<=C<P

Que pensez-vous tout simplement de : A*P²+B*P+C
C'est tout-à-fait le même principe que toi, celui de la numération, mais il n'y a pas lieu de choisir une puissance de 10.



Posted by: Patastronch

Citation:
Posté par Quidam
Pourquoi ne pas faire le minimum ?

Tu as raison, la base P suffit. Disons que c 'est une habitude de programmation, ce que je propose est moins élégant mais ca demande moins de calcul pour retrouver le nombre. En fait au début j'étais meme tenté de prendre la puissance de 2^8 la plus petite qui majore, pour avoir juste à parcourir octet par octet le nombre pour retrouver ses 3 composantes. C'est un réflexe d'informaticien on va dire, la place est généralement moins problématique que le temps de calcul :) Mais bon la j'avoue que ca change pas grand chose !



Posted by: Quidam

Citation:
Posté par Patastronch
Tu as raison, la base P suffit. Dison que que c 'est une habitude de programmation, ce que je propose est moins élégant mais ca demande moins de calcul pour retrouver le nombre. C'est un réflexe d'informaticien on va dire, la place est généralement moins problématique que le temps de calcul :)


Je suis d'accord qu'il est très simple de calculer avec une puissance de 10, si on fait tout cela à la main. En informatique, justement, si on veut éviter les multiplications et les divisions, on prendra alors, de préférence une puissance de 2 qui permet via les masques binaires d'extraire chaque partie avec des "ET" et des "OU" plus rapides que les opérations arithmétiques classiques. D'un autre côté, l'utilisation d'une puissance de 10 permet à un être humain de comprendre du premier coup d'œil la signification de ce grand nombre sur un listing par exemple. Alors, cela dépend donc de l'utilisation que l'on veut en faire !

Nous sommes bien d'accord tous les deux !



Posted by: Patastronch

Citation:
Posté par Quidam
Nous sommes bien d'accord tous les deux !

Oui, tu répondais pendant que j'éditais mon message d'ailleurs, j'ai rajouté la partie par octet qui reviens a dire ce que tu dis. Enfon bon, tout ca pour dire qu'il suffit de prendre n'importe quelle base qui nous arrange plus grande que P.











-