Misez p'tit Optimisez n°58 : somme des cubes des chiffres
Modérateur : Politburo
- gege
- Fonctionne à 14400 bauds
- Messages : 7141
- Enregistré le : 31 janv. 2008 14:24
- Localisation : Banlieue Paârisienne
- Contact :
Misez p'tit Optimisez n°58 : somme des cubes des chiffres
Bonjour,
Voici un petit MPO de rentrée :
"Trouver les nombres entiers égaux à la somme des cubes de leurs chiffres"
Pour faciliter la tâche, sachez qu'on peut montrer qu'aucun nombre supérieur à 3000 ne convient (en fait aucun tel nombre n'est supérieur à 1000...).
Je trouve 5 nombres (dont 1 ), à vous de jouer !
Après, on peut imaginer itérer le calcul (nombre -> somme des cubes de ses chiffres), et regarder si ça converge, si ça fait des boucles...
Je proposerai un article sur ce thème pour la Gazette.
A vos machines !
G.E.
Voici un petit MPO de rentrée :
"Trouver les nombres entiers égaux à la somme des cubes de leurs chiffres"
Pour faciliter la tâche, sachez qu'on peut montrer qu'aucun nombre supérieur à 3000 ne convient (en fait aucun tel nombre n'est supérieur à 1000...).
Je trouve 5 nombres (dont 1 ), à vous de jouer !
Après, on peut imaginer itérer le calcul (nombre -> somme des cubes de ses chiffres), et regarder si ça converge, si ça fait des boucles...
Je proposerai un article sur ce thème pour la Gazette.
A vos machines !
G.E.
- zpalm
- Fonctionne à 9600 bauds
- Messages : 2918
- Enregistré le : 03 mai 2008 15:33
- Localisation : Grenoble
Re: Misez p'tit Optimisez n°58 : somme des cubes des chiffre
Voilà qui va faire plaisir au red'chefgege a écrit :Je proposerai un article sur ce thème pour la Gazette.
- zpalm
- Fonctionne à 9600 bauds
- Messages : 2918
- Enregistré le : 03 mai 2008 15:33
- Localisation : Grenoble
Re: Misez p'tit Optimisez n°58 : somme des cubes des chiffre
Sur WP 34S:
Entrer le nombre de départ puis appuyer sur [A], par exemple: 1 [A]
Le programme s'arrête à chaque nombre trouvé, on relance par [R/S].
Le programme s'arrête lorsqu'il atteint 1000.
J'ai aussi trouvé 5 nombres à partir de 1 (sans compter 0).
Code : Tout sélectionner
001 LBL A
002 0
003 RCL Y
004 SDR 001
005 FP
006 RCL L
007 IP
008 RDN
009 SDL 001
010 x^3
011 +
012 RCL Z
013 x#0?
014 BACK 010
015 x<> Z
016 x=? Y
017 STOP
018 INC X
019 EEX
020 3
021 x<> Y
022 x#? Y
023 GTO A
024 RTN
Le programme s'arrête à chaque nombre trouvé, on relance par [R/S].
Le programme s'arrête lorsqu'il atteint 1000.
J'ai aussi trouvé 5 nombres à partir de 1 (sans compter 0).
Modifié en dernier par zpalm le 30 août 2014 21:44, modifié 1 fois.
- babaorhum
- Fonctionne à 1200 bauds
- Messages : 454
- Enregistré le : 13 janv. 2013 19:44
- Localisation : Marseille-est
Re: Misez p'tit Optimisez n°58 : somme des cubes des chiffre
Chouette la rentrée, un MPO !
Merci Gege
donc en sharp-basic "bête", sans algorithme astucieux qui pourrait faire gagner beaucoup beaucoup de temps ...
a priori on peut arrêter la boucle à 500 non ?
A optimiser maintenant ...
Merci Gege
donc en sharp-basic "bête", sans algorithme astucieux qui pourrait faire gagner beaucoup beaucoup de temps ...
Code : Tout sélectionner
10 WAIT 0:FOR N=1 TO 1000:V=0
20 A$=STR$ N:FOR I=1 TO LEN A$:V=V+VAL MID$(A$,I,1)^3:NEXT I
30 IF V=N THEN PRINT N
40 NEXT N
A optimiser maintenant ...
Modifié en dernier par babaorhum le 30 août 2014 15:20, modifié 1 fois.
BaBaoRhum
HP J728,200LX,1000CX,75C,71B,48GX,42s,41CX,32E,32Sii,28S,22s,21,16C,11C
Sharp PC- E500,1600,1500,1350,1261,1245
Casio FX-502P,602p,850P,3900P,4000P
TI-74,92,95 ; Canon X-07 ; TANDY EC-4026 ; Wp34S
HP J728,200LX,1000CX,75C,71B,48GX,42s,41CX,32E,32Sii,28S,22s,21,16C,11C
Sharp PC- E500,1600,1500,1350,1261,1245
Casio FX-502P,602p,850P,3900P,4000P
TI-74,92,95 ; Canon X-07 ; TANDY EC-4026 ; Wp34S
-
- Fonctionne à 2400 bauds
- Messages : 2142
- Enregistré le : 30 août 2011 12:23
- Localisation : Vous êtes ici -> .
Re: Misez p'tit Optimisez n°58 : somme des cubes des chiffre
Un autre moyen, faire 3 boucles, 1 pour les unites, 1 pour les dizaines et 1 pour les centaines, mais dans ce cas ne doit verra pas 1000.
J'utilise x*x*x au lieu de x^3 car certaines machines BASIC ont une facheuse tendance a faire des erreurs de calcul sur les puissances (Oui, oui: essayez 96^2 sur un PC-1500 ou PC-1251 de premiere generation... etonnant )
Ensuite, je me souviens que les multiplications sont souvent plus rapides que les puissances. De meme, comme on ne manipule que des entiers, certains BASIC possedent des variables ENTIERES (% je crois) et dans ce cas pas de INT ou FRAC (enfin sur les SHARP...)
Merci gege pour ce devoir de rentree.
PS: J'ai tape le programme directement dans le fil. Je ne l'ai pas teste !
Code : Tout sélectionner
10 FOR C=0 TO 9
20 FOR D=0 TO 9
30 FOR U=0 TO 9
40 T=C*100+D*10+U
50 Z=C*C*C+D*D*D+U*U*U
60 IF T=Z THEN PRINT "Nombre: ";T
70 NEXT U
80 NEXT D
90 NEXT C
Ensuite, je me souviens que les multiplications sont souvent plus rapides que les puissances. De meme, comme on ne manipule que des entiers, certains BASIC possedent des variables ENTIERES (% je crois) et dans ce cas pas de INT ou FRAC (enfin sur les SHARP...)
Merci gege pour ce devoir de rentree.
PS: J'ai tape le programme directement dans le fil. Je ne l'ai pas teste !
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque
-
- Fonctionne à 2400 bauds
- Messages : 2142
- Enregistré le : 30 août 2011 12:23
- Localisation : Vous êtes ici -> .
Re: Misez p'tit Optimisez n°58 : somme des cubes des chiffre
Ca fonctionne en C (par consequent aussi sur PB2000C).
Cela me donne 5 nombres et 0.
Code : Tout sélectionner
#include <stdio.h>
int main( int argc, char **argv )
{
int c,d,u,t;
for( c = 0; c < 10; c++ )
for( d = 0; d < 10; d++ )
for( u = 0; u < 10; u++ )
if( (t = (u*u*u+d*d*d+c*c*c)) == (c*100+d*10+u) )
printf( "Trouve: %d\n", t );
return( 0 );
}
Modifié en dernier par cgh le 30 août 2014 19:12, modifié 1 fois.
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque
- Marge
- Fonctionne à 14400 bauds
- Messages : 6172
- Enregistré le : 01 oct. 2008 14:39
- Localisation : En bas, tout au fond à gauche.
Re: Misez p'tit Optimisez n°58 : somme des cubes des chiffre
Un MPO, bonne idée, ça manquait.
3 hommes, 3 demis, un 3a... Magnéto, Serge !
Quelques-uns de mes petits programmes pour machines Hewlett-Packard :
15C : Knight's Tour ;
29C : (k-)Permutations, Combinations, Linear Regression and Pseudo-random number ;
34C : Hanoi Towers - Automatic & Manual resolutions ;
67__: A L I E N .
♣ ♦ « Boris », c'était juste Maurice enrhumé. ♥ ♠
Quelques-uns de mes petits programmes pour machines Hewlett-Packard :
15C : Knight's Tour ;
29C : (k-)Permutations, Combinations, Linear Regression and Pseudo-random number ;
34C : Hanoi Towers - Automatic & Manual resolutions ;
67__: A L I E N .
♣ ♦ « Boris », c'était juste Maurice enrhumé. ♥ ♠
- babaorhum
- Fonctionne à 1200 bauds
- Messages : 454
- Enregistré le : 13 janv. 2013 19:44
- Localisation : Marseille-est
Re: Misez p'tit Optimisez n°58 : somme des cubes des chiffre
pas mal pas mal ...
EDIT : euh j'avais dit une bétise ... je retire ...
la version cgh est beaucoup plus rapide que la mienne, a creuser peut être !
pour donner un ordre de grandeur, mon PC-E500 trouves les 6 chiffres en 15s (on compte le 0) et balaye les 1000 en 36s avec l'algo de cgh.
Vous êtes à quels temps ?
EDIT : euh j'avais dit une bétise ... je retire ...
la version cgh est beaucoup plus rapide que la mienne, a creuser peut être !
pour donner un ordre de grandeur, mon PC-E500 trouves les 6 chiffres en 15s (on compte le 0) et balaye les 1000 en 36s avec l'algo de cgh.
Vous êtes à quels temps ?
BaBaoRhum
HP J728,200LX,1000CX,75C,71B,48GX,42s,41CX,32E,32Sii,28S,22s,21,16C,11C
Sharp PC- E500,1600,1500,1350,1261,1245
Casio FX-502P,602p,850P,3900P,4000P
TI-74,92,95 ; Canon X-07 ; TANDY EC-4026 ; Wp34S
HP J728,200LX,1000CX,75C,71B,48GX,42s,41CX,32E,32Sii,28S,22s,21,16C,11C
Sharp PC- E500,1600,1500,1350,1261,1245
Casio FX-502P,602p,850P,3900P,4000P
TI-74,92,95 ; Canon X-07 ; TANDY EC-4026 ; Wp34S
- gege
- Fonctionne à 14400 bauds
- Messages : 7141
- Enregistré le : 31 janv. 2008 14:24
- Localisation : Banlieue Paârisienne
- Contact :
Re: Misez p'tit Optimisez n°58 : somme des cubes des chiffre
Bonjour,
1 minute 46 sur PB-700 avec optimisations.... (2 minutes 12 sans)
Bon, il faut tenir compte du matériel.
Oulà le programme WP34S semble compliqué... je vais le taper.
G.E.
Edit : correction des temps
1 minute 46 sur PB-700 avec optimisations.... (2 minutes 12 sans)
Bon, il faut tenir compte du matériel.
Oulà le programme WP34S semble compliqué... je vais le taper.
G.E.
Edit : correction des temps
Modifié en dernier par gege le 30 août 2014 19:36, modifié 1 fois.
-
- Fonctionne à 2400 bauds
- Messages : 2142
- Enregistré le : 30 août 2011 12:23
- Localisation : Vous êtes ici -> .
Re: Misez p'tit Optimisez n°58 : somme des cubes des chiffre
Comme mon algo n'utilise que des entiers, il faudra que j'ecrive le programme en assembleur pour PC-1500...
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque
- zpalm
- Fonctionne à 9600 bauds
- Messages : 2918
- Enregistré le : 03 mai 2008 15:33
- Localisation : Grenoble
Re: Misez p'tit Optimisez n°58 : somme des cubes des chiffre
C'est un premier jet où tout se fait dans la pile. Il y a sûrement plus optimisé...gege a écrit :Oulà le programme WP34S semble compliqué... je vais le taper.
G.E.
- gege
- Fonctionne à 14400 bauds
- Messages : 7141
- Enregistré le : 31 janv. 2008 14:24
- Localisation : Banlieue Paârisienne
- Contact :
Re: Misez p'tit Optimisez n°58 : somme des cubes des chiffre
Oui, j'ai fini par comprendre.
Quels temps pour tous ces beaux programmes ?
G.E.
Quels temps pour tous ces beaux programmes ?
G.E.
- zpalm
- Fonctionne à 9600 bauds
- Messages : 2918
- Enregistré le : 03 mai 2008 15:33
- Localisation : Grenoble
Re: Misez p'tit Optimisez n°58 : somme des cubes des chiffre
Mon programme WP 34S trouve les 5 nombres en 7 secondes et balaye tous les nombres jusqu'à 1000 en 16 secondes.
Il pourrait aller plus vite mais j'ai du mettre ma 34S en mode SLOW car les piles sont basses et en mode FAST la machine se met en veille avant la fin du programme ( le CPU tire trop de courant et les pauvres CR 2032 ne peuvent pas suivre).
Il pourrait aller plus vite mais j'ai du mettre ma 34S en mode SLOW car les piles sont basses et en mode FAST la machine se met en veille avant la fin du programme ( le CPU tire trop de courant et les pauvres CR 2032 ne peuvent pas suivre).
- babaorhum
- Fonctionne à 1200 bauds
- Messages : 454
- Enregistré le : 13 janv. 2013 19:44
- Localisation : Marseille-est
Re: Misez p'tit Optimisez n°58 : somme des cubes des chiffre
j'arrive pas a bien comprendre le RPN du WP34S mais c'est redoutablement efficace ...
on a pas encore de version RPL ? (pas mon truc le RPL)
En attendant j'ai fais tourner le basic-cgh sur mon Panasonic HHC de 1983 qui trouve fièrement les 6 valeurs en 12s et balaye les 1000 en 16,5s ... pas mal le papi-pocket !
on a pas encore de version RPL ? (pas mon truc le RPL)
En attendant j'ai fais tourner le basic-cgh sur mon Panasonic HHC de 1983 qui trouve fièrement les 6 valeurs en 12s et balaye les 1000 en 16,5s ... pas mal le papi-pocket !
BaBaoRhum
HP J728,200LX,1000CX,75C,71B,48GX,42s,41CX,32E,32Sii,28S,22s,21,16C,11C
Sharp PC- E500,1600,1500,1350,1261,1245
Casio FX-502P,602p,850P,3900P,4000P
TI-74,92,95 ; Canon X-07 ; TANDY EC-4026 ; Wp34S
HP J728,200LX,1000CX,75C,71B,48GX,42s,41CX,32E,32Sii,28S,22s,21,16C,11C
Sharp PC- E500,1600,1500,1350,1261,1245
Casio FX-502P,602p,850P,3900P,4000P
TI-74,92,95 ; Canon X-07 ; TANDY EC-4026 ; Wp34S
Re: Misez p'tit Optimisez n°58 : somme des cubes des chiffre
Hello
1 min 30 sur ma fx-8500G avec le code suivant (qui peut peut-être être optimisé en utilisant la fonction Isz, j'ai pas testé)
1 min 30 sur ma fx-8500G avec le code suivant (qui peut peut-être être optimisé en utilisant la fonction Isz, j'ai pas testé)
Code : Tout sélectionner
Mcl
Lbl 1
C*100+D*10+U->N
C^3+D^3+U^3->S
N=S=>N◄
U=9=>Goto 2:U+1->U:Goto 1
Lbl 2
0->U
D=9=>Goto 3:D+1->D:Goto 1
Lbl 3
0->D
C=9=>Goto 4:C+1->C:Goto 1
Lbl 4