3329 résultats trouvés

par C.Ret
07 janv. 2024 13:25
Forum : Tous les Pockets
Sujet : Misez p'tit, Optimisez ! n° 125 : Galette des rois
Réponses : 25
Vues : 1284

Re: Misez p'tit, Optimisez ! n° 125 : Galette des rois

Trypilec a écrit : 07 janv. 2024 01:03Un peu de perte de poids, un peu de chirurgie plastique — beauté !
Oui effectivement après ces dernières optimisations, la mise est de toute beauté et il fonctionne très bien.
Malheureusement, il ne respecte plus exactement l'ordre de saisie des paramètres. C'est un détail, mais il n'est plus tout à fait conforme même s'il affiche toujours 0.00 pour les parts non existante.

J'ai bien du mal à battre cette dernière version.
Mais quitte à faire une version non conforme, je change moi aussi l'ordre de saisie, mais surtout je me passe de contrainte d'avoir à afficher un résultat nul lorsque qu'il n'y a pas de petite ou de part normale.
Quitte à être non conforme, je suis sombre directement dans l'illégalité et la clandestinité:

Code : Tout sélectionner

000 85 01 10 55 89 95 35    + 1 E' ÷ ∏ = 1/x    // Sasir N#1part (x⇌t) S#½part (RST)(R/S) 
007 70 37 65 91 65          Rad P→R × R/S ×     // Sasir diamètre D (R/S)
012 76 10                   Lbl E' 
014 32 65 02 95             x⇌t × 2 = 
018 92                      RTN                 // Affiche L_1part et registre t contient L_½part
Utilisation:
Choisir le format d'affichage souhaité et faire un reset du pointeur de programme en pressant sur (2nd)(FIX)( 4 )(RST).
Entrez le nombre N de pars normales dans le registre t en pressant sur la touche (x⇌t)
Entrez le nombre S de demi-parts dans le registre x puis pressez sur la touche (R/S) pour lancer le début du calcul.
Entrez le diamètre D et appuyez sur (R/S) pour finaliser le calcul.
Après l'arrêt du programme, l'écran affiche la taille des parts normale (registre x). Le registre t contient la taille des demi-parts. Utilisez la touche (x⇌t) pour alterner l'affichage de la longueur de corde des deux types de parts.

ATTENTION: ce code n'est pas conforme aux exigences de ce MPO, outre le fait que l'ordre des argument D N S n'est pas respecté, ce code affiche toujours la taille de part normale (registre x) et des demi-parts (registre t) y compris dans les cas où il n'y en a pas.
Le découpeur de galette devra faire attention à ne pas couper les parts qui ne sont pas demandées !

Ainsi, la séquence 3 (x⇌t) 2 (RST) (R/S) 24 (R/S) affiche comme attendu 16.9706 puis (x⇌t) affiche 9.1844 .
De même, la séquence 5 (x⇌t) 1 (RST) (R/S) 22 (R/S) affiche comme attendu 11.8941 puis (x⇌t) affiche 6.1981 comme prévu.

Par contre la séquence 5 (x⇌t) 0 (RST)(R/S) 20 (R/S) affiche comme attendu 11.7557 mais (x⇌t) affiche 6.1803 au lieu de 0. comme demandé explicitement par Scharf.

Par chance, la séquence 0 (x⇌t) 2 (RST)(R/S) 16 (R/S) affiche comme attendu 0.0000 puis (x⇌t) affiche 16.0000 qui est correct, mais fortuit.


Maintenant, que Trypilec et C.Ret ont bien progressé à démontrer l'efficacité et les performances en MPO des PROGRAMMABLE 57/58/59 de Texas Instruments, je me demande s'il n'est pas plus efficace d'utiliser une Hewlett-Packard ? En fait nous nous posons tous cette question depuis plus de quarante ans (et certains d'entre nous depuis plus de cinquante ans).
par C.Ret
06 janv. 2024 11:12
Forum : Tous les Pockets
Sujet : Misez p'tit, Optimisez ! n° 125 : Galette des rois
Réponses : 25
Vues : 1284

Re: Misez p'tit, Optimisez ! n° 125 : Galette des rois

Trypilec a écrit : 06 janv. 2024 09:04Quatre, ce n'est pas assez... Six — et rien de moins !

Code : Tout sélectionner

 [ ... code un tout petit peu trop long ... 
Woaww ! Félicitations Trypilec ! L'idée d'utiliser la touche (x⇌t) pour échanger entre nombre ou taille des demi-parts et parts entières est excellente ! Cela fait économiser 6 pas !

Mai, il reste toujours à débusquer les deux octets provenant de ma première version dont le calcul final peut être mieux posé: je donne un tours de carrousel supplémentaire; au moins 8 octets peuvent être gagnés maintenant.

Comme je suis sûr que Trypilec va très vite les trouver, je donne ci-dessous le résultat après un petit tour de manège supplémentaire:

Code : Tout sélectionner

000 42 00                STO 00                 X: D diam                   R00← D diam
002 89 55 53             ∏ ÷ (                  X← PI radians
005 91                   R/S                    X: S#½part    T: N#1parts  
006 85 32 42 02          + x⇌t STO 02           X← N#1part    T← S#½part    R02← N#1part
010 65 02 95 42 03       × 2 = STO 03           X← angle θ                  R03← angle θ
015 02 65 43 02          2 × RCL 02             X← N#1part                  R02→ N#1part
019 19 32                D' x⇌t                 X← S#½part    T← L_1part    
021 76 19                Lbl D'                 X: k×#part                  R00: D diam
023 69 10                  OP 10                X← sign(X)    
025 65 43 03 95 70 38      × RCL 03 = Rad sin   X← sin(kθ)                  R03→ angle θ         k= 0 1 ou 2 
031 65 43 00 95            × RCL 00 =           X← D.sin(kθ)                R00→ D diam              
035 92                   RTN                    X→ L_½part    T→ L_1part  
Utilisation:
Choisir le format d'affichage souhaité et faire un reset du pointeur de programme en pressant sur (2nd)(FIX)( 2 )(RST).
Entrez le diamètre D et appuyez sur (R/S).
Entrez le nombre N de pars normales dans le registre t en pressant sur la touche (x⇌t)
Entrez le nombre S de demi-parts dans le registre x puis pressez sur la touche (R/S) pour lancer le calcul.
Après l'arrêt du programme, l'écran affiche la taille des demi-parts (registre x). Le registre t contient la taille des parts normales.
Utilisez la touche (x⇌t) pour alterner l'affichage de la longueur de corde des deux types de parts.
par C.Ret
05 janv. 2024 20:32
Forum : Tous les Pockets
Sujet : Misez p'tit, Optimisez ! n° 125 : Galette des rois
Réponses : 25
Vues : 1284

Re: Misez p'tit, Optimisez ! n° 125 : Galette des rois

Trypilec a écrit : 05 janv. 2024 05:08
C.Ret a écrit : 04 janv. 2024 21:38En relisant mon post, je me rends compte qu'il y a moyen d'économiser très facilement au moins deux pas dans le code ci-dessus.
Bien sûr. Je le pensais aussi - dans le programme lui-même, mettez le 2ème RAD, puis le 2ème Pi, qui est 2 pas de moins que 1+- inv cos.
Oui excellent, je n'avait pas pensé à changer la séquence 1 ± arc cos et la remplacer par rad PI
Mais il y a encore deux octets à gagner ailleurs dans le code. En fait, on peut économiser jusqu'à 4 octets.
Trypilec a écrit : 05 janv. 2024 05:08P.S. Je vois, vous avez écrit RTN de manière non standard RTS, et je l'ai confondu avec RST!
Oui, désolé, j'ai utilisé le mnémonique RTS qui ne provient pas de ceux que l'on trouve dans la documentation ou sur les listings des programmes pour Ti58/59. Ce qui a induit la confusion entre RTN et RST.
Je suis confus pour le désagrément occasionné. Je corrige immédiatement mon post précèdent.
par C.Ret
04 janv. 2024 21:38
Forum : Tous les Pockets
Sujet : Misez p'tit, Optimisez ! n° 125 : Galette des rois
Réponses : 25
Vues : 1284

Re: Misez p'tit, Optimisez ! n° 125 : Galette des rois

Trypilec a écrit : 03 janv. 2024 20:04 66 pas, c'est beaucoup, mais il n'y a pas d'autres programmes, donc au moins je vais donner quelque chose. TI58/59

Code : Tout sélectionner

...
012 29  CP
013 67 x⇌t
014 00  00
015 19  19
...
2nd RAD RST d-->X R/S N->X R/S n->X R/S X=L x⇌t X=l
C'est ça qui est bien quand on est le premier à poster une version, c'est pendant un certain temps, le meilleur programme pour cette nouvelle machine.

Je comprends qu'il s'agit en fait de x=0? GTO 019x=t? GTO 019 avec t=0 (obtenu au pas précèdent avec CP (c'est à dire Cl.t).

Je note aussi qu'il faut se mettre en mode RADIAN. J'aime bien l'usage de OP 10 c'est à dire SIGN(x) pour afficher 0 lorsqu'il n'y a pas de part de cette taille. Mes premières versions utilisaient des tests et des labels qui consomment ainsi beaucoup de pas.

Tous ces petits détails me permettent de fignoler ma version et en utilisant quelques astuces de mon cru dont l'utilisation d'un sous-programme, finir chaque calcul par un signe =, utiliser OP 10, et les registre R00 R01 et R02 pour mémoriser respectivement D, N et S ainsi que le registre R03 pour mémoriser l'angle θ définissant la taille d'une demi-part. Cet angle θ permet de calculer la taille de la corde à utiliser pour découper chaque type de part. Ce faisant, je mets la barre bien plus haut puisque tout cela ne pèse que 43 octets.

Je voulais laisser Trypilec à la tête des versions pour Ti-58/59, mais l'épiphanie approchant à grands pas, je voudrais que tous les mangeurs de Ti PROGRAMMABLES soient prêts pour utiliser leur galette samedi prochain. Je me résigne donc, un peu à contrecœur à publier ma solution pour ces machines. Solution qui fonctionne indépendamment du mode trigonométrique en cours (et ne le change donc pas) pour des galettes succulentes en radians, degrés ou grades.

Code : Tout sélectionner

000 42 00           STO 00             // Saisir diamètre D puis [RST][R/S]
002 01 94 22 39     1 ± arc cos        //    renvoi 180, PI ou 200 g selon mode trigo.
006 55 53 02 65 91  ÷ ( 2 ×     R/S    // Saisir nombre parts N puis [R/S]
011 42 02 85 91     STO 02 +    R/S    // Saisir nombre demi-parts S puis [R/S]
015 42 01 95 42 03  STO 01 = STO 03    //    calcul angle demi-part θ
020 53 43 01 19 32  ( RCL 01 D' x⇌t    //    calcul longueur corde petite part t = D*sin(θ) 
025 53 02 65 43 02  ( 2 × RCL 02       //    calcul longueur corde grande part x = D*sin(2θ)  
030 76 19           Lbl D'
032 69 10 65         OP 10 ×           // multiplie par SIGN(x) pour mettre à zéro les parts non utilisées 
035 43 03 54 38 65   RCL 03 ) sin ×    
040 43 00 95 92      RCL 00 =          // Corde = D * sin(θ)  
043 92              RTN                // Presser sur [x⇌t] pour afficher taille petite/grande part.
EDIT 05/01/2024: Suite à la pertinente remarque de Trypilec, je retire mon RTS maladroit et le remplace par un RTN plus canonique. Désolé pour la confusion occasionnée surtout que ce RTS mal à propos ressemble énormément à RST.
En relisant mon post, je me rends compte qu'il y a moyen d'économiser très facilement au moins quatre pas dans le code ci-dessus. N'hésitez pas à poster vos découvertes !!

Utilisation:
Choisir le format d'affichage souhaité et faire un reset du pointeur de programme en pressant sur RST
Saisir dans l'ordre diamètre D, nombre de parts normales N, nombre de demi-parts S. Séparer chaque saisie d'une pression sur la touche R/S.
La calculatrice affiche la taille à utiliser pour découper les parts normales. Une pression sur la touche [x⇌t] permet d'alterner entre affichage de la taille des parts normales et des demi-parts.

Pour découper une autre galette, presser sur RST et saisir à nouveau, dans l'ordre les trois paramètres.
Evitez de découper trop de galettes à l'avance, prenez le temps de les réchauffer, ne vous brulez-pas, éviter de vous couper les doigt en coupant les parts.

Penser à écrire votre propre version de ce programme pour la machine que vous utiliserez samedi prochain. Vérifiez vos calculs, ce MPO permet de consommer toute la galette ce qui peut être important si celle-ci contient une ou plusieurs fèves. Il peut être dramatique que personne n'ai trouvé la fève dans sa part. Surtout si l'on découvre à postériori que celle-ci est dans la seule part non distribuée de la galette. Découper toute la galette est la raison d'être de ce MPO.
par C.Ret
04 janv. 2024 18:14
Forum : A quoi t'as joué hier ?
Sujet : A jouer aux reines avec une calculette de presque 40 ans !
Réponses : 23
Vues : 8673

Re: A jouer aux reines avec une calculette de presque 40 ans !

Trypilec a écrit : 04 janv. 2024 17:49Passer en revue toutes les options prend beaucoup de temps.
cela est très vrai ! Surtout sur une Ti-58C qui n'est pas une machine supersonique.

Par contre, passer ne revue toutes les options de cette façon a le mérite de n'utiliser que très peu (un minimum ?) de registres mémoires.

Et je suis d'accord, il a certainement suffisamment de registres dans une Ti-58 (et certainement dans une Ti-59) pour envisager une stratégie plus efficace et utilisant un peu plus de registres.

Mais, même un échiquier de petite taille utilise n² cases. Pour aller vite, il faut que le codage des positions possibles se fasse facilement (en un minimum d'instructions). Avec cette contrainte, même un l'échiquier faisant 8x8 cases nécessite 64 registres (ou cases) et cela ne tient plus dans une ti-58. Et je ne parle que des registres nécessaires pour coder l'état des case, il faut certainement ajouter autant de registre pour code les HEAP qui per met de trouver sans avoir à parcourir inlassablement en long et en large tout l'échiquier pour trouver la solution la plus proche suivante !

N'oublions pas que le code utilisé permet d'étudier des solutions sur des échiquiers plus ou moins grands. Etre limité à un échiquier 4x4 pour avoir une recherche rapide n'est pas très intéressant.

Mais, je suis preneur d'un meilleurs algorithme, comme celui indiqué par Trypilec, mais je ne sais pas comment l'implanter efficacement dans le ventre tout petit d'une Ti-58c. Surtout sans perdre un temps presque infini à coder ou compresser l'information par des calculs longs ou complexes à chaque changement de l'état binaire d'une case.

Par contre, sur d'autres machines, comme par exemple un SHARP PC-1360 ou un HP-28S, qui ont une arithmétique binaire et des instructions logiques pouvant traiter l'état de plusieurs cases simultanément; alors là oui, je sais comment implémenter quelque algorithme plus astucieux. Malheureusement, ces algorithmes deviennent lents et poussifs sur une machine AOS de 1977.

Peut-être Trypilec sait comment faire ?
par C.Ret
04 janv. 2024 17:54
Forum : Tous les Pockets
Sujet : Misez p'tit, Optimisez ! n° 124 : Distance entre les entiers
Réponses : 65
Vues : 2787

Re: Misez p'tit, Optimisez ! n° 124 : Distance entre les entiers

FLISZT a écrit : 02 janv. 2024 20:29
C.Ret a écrit : 02 janv. 2024 14:16
FLISZT a écrit : 02 janv. 2024 11:36Questions ⇒ Quelle est la version la plus rapide ? Quelle est la version la plus lente ?
Voilà FLISZT qui commence la nouvelle année avec d'excellentes questions !
Je ne sais pas, je vais tester. Mais s'agit-il de deux questions distinctes ? La plus lente ne serait elle pas simplement la moins rapide ?
S'il n'y avait que deux versions, effectivement déterminer la plus rapide désignerait la plus lente.
Mais là, le nombre de programmes est supérieur à deux.
Ah! Je n'avais pas compris. mais je suis embêté pour tester, il s'agit de trois versions certes, MAIS sur trois machines différentes. Comment je fais pour tester ??
FLISZT a écrit : 02 janv. 2024 20:29Je précise que j'ai testé ta version pour 28S avec le code suivant

Code : Tout sélectionner

« 2. →LIST  "." 0. 11. FOR k    OVER k ALOG / IP 10. MOD R→I ΔLIST HEAD ABS +    NEXT OBJ→ + »
au lieu de

Code : Tout sélectionner

« 2. →LIST  "." 0. 11. FOR k    OVER k ALOG / IP 10. MOD ΔLIST HEAD ABS +    NEXT OBJ→ + »
La différence, c'est l'ajout nécessaire de R→I.
En lisant la suite qui explique fort bien l'ajout nécessaire de R→I., qu'il s'agit d'une HP-50g et non d'une HP-28C ou HP-28S.

Sinon, si c'est la rapidité du calcul qui compte, ma fâcheuse résolution d'aller jusqu'à l'infini, et parfois au-delà, va me jouer des tours. Perdre quelques octets pour tester la fin du calcul devient alors pertinente.

Bon, il n'y a que pour ma version SHARP PC-1211 où la rapidité du calcul et l'économie des octets conduisent conjointement au même code concis:

Code : Tout sélectionner

1:INPUT A,B:C=1,D=0
2:A=INT A/10,B=INT B/10,D=D+ABS(A-INT A-B+INT B)/C,C=10C:IF A+B>0 GOTO 2
3:PRINT D:END
L'économie de temps de calcul provient du fait que la somme s'arrêt dès que l'on a consommé tous les chiffres de A et de B.
par C.Ret
02 janv. 2024 17:04
Forum : Tous les Pockets
Sujet : Misez p'tit, Optimisez ! n° 125 : Galette des rois
Réponses : 25
Vues : 1284

Re: Misez p'tit, Optimisez ! n° 125 : Galette des rois

Le programme est très simple, mais pour être efficace et afficher immédiatement la galette, il y a quatre lignes de DATA bien denses.
L'avantage et que l'entièreté de la galette est dessinée en quatre coups de cuillère à pot par une instruction GPRINT en une fraction de seconde.

Code : Tout sélectionner

  1:DATA "00000080C0E0F0F8","FCFCFCFEFEFEFE","FEFEFEFEFEFCFCFC","F8F0E0C080000000"  
  2:DATA "00F8FEFFFFFFFFFF","FFFFFFFFFFFFFF","FFFFFFFFFFFFFFFF","FFFFFFFFFFFEF800"  
  3:DATA "001FFFFFFFFFFFFF","FFFFFFFFFFFFFF","FFFFFFFFFFFFFFFF","FFFFFFFFFFFF1F00"  
  4:DATA "0000000103070F1F","3F3F3F7F7F7F7F","7F7F7F7F7F3F3F3F","1F0F070301000000"  
 10:R=15: CLS : WAIT 0: REST0RE             
 20:F0R L=1 T0 4: READ G1$,G2$,G3$,G4$: GCURS0R (0,7*L): GPRINT G1$+G2$+G3$+G4$: NEXT L
 30:CURS0R 8: INPUT "D=";D: CURS0R 32: INPUT "N=";N: CURS0R 56: INPUT "S=";S       
 ...
 
MPO 125 - SHARP PC-1360 pockemul (32 4 0).gif
MPO 125 - SHARP PC-1360 pockemul (32 4 0).gif (53.73 Kio) Vu 682 fois
Pour que cela rende bien, les longueurs à mesurer sont indiquées en pointillés et une ligne continue coupe les parts de la galette.
Pour cela j'utilise simplement les attributs de deux l'instructions LINE dans l'unique sous-programme du code:

Code : Tout sélectionner

...
 90:LINE (15,14)-(15+15* C0S A,14+15* SIN A),R:             REM 'R' pour reset - afface les pixels
    LINE -(15+15* C0S B,14+15* SIN B),R,&5555 :             REM &5555: un point sur deux #0101 0101 0101 0101b
    A=B: RETURN                                             REM A et B étant les angles définissant la part :)
par C.Ret
02 janv. 2024 14:19
Forum : Tous les Pockets
Sujet : Misez p'tit, Optimisez ! n° 125 : Galette des rois
Réponses : 25
Vues : 1284

Re: Misez p'tit, Optimisez ! n° 125 : Galette des rois

Bon, jusqu'ici je ne me suis attaqué qu'aux machines non graphiques.
Entamant cette nouvelle année avec d'avantage de confiance et d'allégresse, je compose maintenant les versions graphiques:
MPO 125 - SHARP PC-1360 pockemul (ex1 ex 2 ex 3 ex 4).gif
MPO 125 - SHARP PC-1360 pockemul (ex1 ex 2 ex 3 ex 4).gif (27.08 Kio) Vu 706 fois
par C.Ret
02 janv. 2024 14:16
Forum : Tous les Pockets
Sujet : Misez p'tit, Optimisez ! n° 124 : Distance entre les entiers
Réponses : 65
Vues : 2787

Re: Misez p'tit, Optimisez ! n° 124 : Distance entre les entiers

FLISZT a écrit : 02 janv. 2024 11:36Questions ⇒ Quelle est la version la plus rapide ? Quelle est la version la plus lente ?
Voilà FLISZT qui commence la nouvelle année avec d'excellentes questions !
Je ne sais pas, je vais tester. Mais s'agit-il de deux questions distinctes ? La plus lente ne serait elle pas simplement la moins rapide ?
par C.Ret
01 janv. 2024 17:27
Forum : Tous les Pockets
Sujet : Misez p'tit, Optimisez ! n° 125 : Galette des rois
Réponses : 25
Vues : 1284

Re: Misez p'tit, Optimisez ! n° 125 : Galette des rois

Votre galette fait 24 cm de diamètre, 3 personnes veulent une part normale et 2 une petite part
Votre galette fait 20 cm de diamètre, 5 personnes veulent une part normale.
Votre galette fait 22 cm de diamètre, 5 personnes veulent une part normale et 1 veut une part petite.
Votre galette fait 16 cm de diamètre, 2 personnes veulent une part grande.
MPO 125 - HP-48GX pokemul (ex1 ex 2 ex 3 ex 4).gif
MPO 125 - HP-48GX pokemul (ex1 ex 2 ex 3 ex 4).gif (23.88 Kio) Vu 741 fois
Votre galette fait 24 cm de diamètre, 3 personnes veulent une part normale et 2 une petite part
Votre galette fait 20 cm de diamètre, 5 personnes veulent une part petite.
MPO 125 - SHARP EL-5150 (ex1 ex 2).gif
MPO 125 - SHARP EL-5150 (ex1 ex 2).gif (15.62 Kio) Vu 741 fois
Votre galette fait 22 cm de diamètre, 5 personnes veulent une part normale et 1 veut une part petite.
MPO125 PC-1211 ex3.gif
MPO125 PC-1211 ex3.gif (9.45 Kio) Vu 734 fois
Le programme de ce dernier pocket peut être télécharger depuis ma page Google Drive puis il vous reste à brancher votre CE-121 ou CE-122 sur la sortie audio de votre PC avec le volume à fond et charger le code par CLOAD "MPO125" puis RUN ou Shift-Z en mode DEF.
par C.Ret
31 déc. 2023 09:45
Forum : Tous les Pockets
Sujet : Misez p'tit, Optimisez ! n° 124 : Distance entre les entiers
Réponses : 65
Vues : 2787

Re: Misez p'tit, Optimisez ! n° 124 : Distance entre les entiers

FLISZT a écrit : 31 déc. 2023 00:52
C.Ret a écrit : 30 déc. 2023 16:09
Schraf a écrit : 30 déc. 2023 11:40@C.Ret : T'es sûr de ton "ADD" à la fin, ce ne serait pas plutôt un "+" pour concaténer le résultat aux 2 nombres ? Ou alors c'était "ADD" sur les HP 28S et il y a eu inversion avec les 48G, je ne sais plus...
Non, je ne suis pas sûr, il n'y a pas de ADD sur HP-28, c'est l'opérateur + qui concatène les chaines et objets :
{ a b c ] { 1 2 3 } + renvoi { a b c 1 2 3 }
{ 1 2 3 } { 30 20 10 } + renvoi { 1 2 3 30 20 10 }
{ 1 2 3 } 100 + ou 100 { 1 2 3 } + renvoi { 1 2 3 100 } ou { 100 1 2 3 }
{ 1 2 3 } {30 20 10 } + renvoie { 1 2 3 30 20 10 }
{ 1 2 3 } { 30 20 10 } ADD renvoie { 31 22 13 }
+ sert aux concaténations
ADD est apparu avec les 48 en versions G/GX/G+
Merci FLISZT, je me suis donc bien trompé dans mon code la dernière instruction doit être un + au lieu du ADD qui retourne {2024.3522 271.3522 }
au lieu du { 2024 271 .3522 } attendu.

Code : Tout sélectionner

« 2. →LIST  "." 0. 11. FOR k    OVER k ALOG / IP 10. MOD ΔLIST HEAD ABS +    NEXT OBJ→ + »
(100 bytes)
MPO 124 - HP48GX pockemul.gif
MPO 124 - HP48GX pockemul.gif (27.72 Kio) Vu 720 fois
par C.Ret
30 déc. 2023 22:42
Forum : Tous les Pockets
Sujet : Misez p'tit, Optimisez ! n° 124 : Distance entre les entiers
Réponses : 65
Vues : 2787

Re: Misez p'tit, Optimisez ! n° 124 : Distance entre les entiers

Trypilec a écrit : 30 déc. 2023 22:18En fait 48. Adresse de la dernière pas 047.
A oui, je ne sais compter que sur mes doigts. Chaque fois que l'on compte à partir de zéro, je me trompe !! :)
Trypilec a écrit : 30 déc. 2023 22:18Car quelle différence cela fait-il pour l'utilisateur du programme d'appuyer sur x<->y ou SST? Mais alors vous n'avez pas besoin de la pas 002 x<->y car SST traitera le code 000 STO 001 01 et s'arrêtera avant 002 x<->y qui est désormais redondant.
Oui, utiliser SST pour saisir les deux valeurs fonctionnera sur les HP les plus récentes. A voir sur les Classic et les plus anciennes, car pas sûr que la pression sur SST interrompe la saisie du premier nombre.

Sur TI-58/59, l'astuce peut aussi fonctionner, mais il faudra appuyer deux fois sur SST car l'instruction STO 01 fait deux pas. Cette remarque est valable aussi pour les HP-65 je crois.
par C.Ret
30 déc. 2023 20:55
Forum : Tous les Pockets
Sujet : Misez p'tit, Optimisez ! n° 125 : Galette des rois
Réponses : 25
Vues : 1284

Re: Misez p'tit, Optimisez ! n° 125 : Galette des rois

Ah! Voilà une idée qu'elle est bonne...

Enfin une méthode pour couper équitablement la galette des rois tout en réalisant des parts pour les petits et les grands gourmands. Bien, bien, bien,...

Je vais m'entrainer un peu avant d'avoir à couper la galette devant toute la famille et les invités. Ce ne doit pas être évident, le jour J il faudra savoir utiliser le programme sur la calculatrice, savoir mesurer avec justesse (je prévois d'utiliser un mètre à ruban ou un double décimètre) et enfin couper les parts sans tomber sur la fève…

Ne tardez pas à donner vos solutions, je voudrai être au point pour l'épiphanie qui sera samedi prochain !!!
Image
Image <-- galette environ 4.5 cm d'épaisseur
galette ou tarte environ 2.5 cm d'épaisseur --> Image

P.S.: 35 octets SHARP PC-1211
17 octets HP-41C (27 avec le LBL"MPO125 et END final)
45.5 pour HP-28S
20 pas (et 20 bytes) sur HP-15C avec LBL A et RTN.
Un bugg vient d'être découvert, il va falloir un peu plus d'octets pour ces quatre machines :(

59 octets HP-71B - non graphique et code conforme, simultané des deux résultats
39 octets SHARP-PC1211 - non graphique et code conforme, affichage simultané des deux résultats
70.5 bytes sur HP-28S - non graphique, conforme, affichage simultané
31 bytes sur SHARP EL-5150 - non graphique, conforme, affiches successifs avec labels
65.5 bytes HP-48GX - non graphique, conforme, affichage simultané
par C.Ret
30 déc. 2023 16:09
Forum : Tous les Pockets
Sujet : Misez p'tit, Optimisez ! n° 124 : Distance entre les entiers
Réponses : 65
Vues : 2787

Re: Misez p'tit, Optimisez ! n° 124 : Distance entre les entiers

Schraf a écrit : 30 déc. 2023 11:40 @C.Ret : T'es sûr de ton "ADD" à la fin, ce ne serait pas plutôt un "+" pour concaténer le résultat aux 2 nombres ? Ou alors c'était "ADD" sur les HP 28S et il y a eu inversion avec les 48G, je ne sais plus...
Non, je ne suis pas sûr, il n'y a pas de ADD sur HP-28, c'est l'opérateur + qui concatène les chaines et objets :
{ a b c ] { 1 2 3 } + renvoi { a b c 1 2 3 }
{ 1 2 3 } { 30 20 10 } + renvoi { 1 2 3 30 20 10 }
{ 1 2 3 } 100 + ou 100 { 1 2 3 } + renvoi { 1 2 3 100 } ou { 100 1 2 3 }

J'avais cru comprendre que sur HP-48 et suivantes:
{ 1 2 3 } {30 20 10 } + renvoi { 31 22 13 } et qu'il fallait utiliser { 1 2 3 } { 30 20 10 } ADD pour obtenir { 1 2 3 30 20 10 }
et donc { 2024 271 } .3522 ADD pour avoir { 2024 271 .3522 } alors que { 2024 271 } .3522 + va donner { 2024.3522 271.3522 }

Enfin, c'est ce que j'avais cru comprendre, mais je n'ai jamais vérifié.
par C.Ret
30 déc. 2023 11:33
Forum : Tous les Pockets
Sujet : Misez p'tit, Optimisez ! n° 124 : Distance entre les entiers
Réponses : 65
Vues : 2787

Re: Misez p'tit, Optimisez ! n° 124 : Distance entre les entiers

Schraf a écrit : 30 déc. 2023 10:12

Code : Tout sélectionner

...    ROT SWAP +			On ajoute 3 à droite de "0." ce qui donne "0.3"
...  OBJ→			Permet de transformer le "0.3522" en 0.3522
»
Merci Schraf pour ces explications, c'est justement ça que je n'avais pas compris ! Construire la réponse sous forme d'une chaine de caractères afin de ne pas avoir à faire la division des termes de la somme. Du coup, je peux moi aussi faire un peu plus court :

Code : Tout sélectionner

« 2. →LIST  "." 0. 11. FOR k    OVER k ALOG / IP 10. MOD ΔLIST HEAD ABS +    NEXT OBJ→ ADD »

Aller à la recherche avancée