Pour amateurs de MPO

Ici, on fait dans le petit, le LCD qui déchire sa race, on y cause même calculatrices quand on est en manque !

Modérateur : Politburo

Répondre
Avatar du membre
zpalm
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 2929
Enregistré le : 03 mai 2008 15:33
Localisation : Grenoble

Pour amateurs de MPO

Message par zpalm »

Deux challenges, un en RPN pour HP-41, et un en RPL à partir de la HP-48: HHC 2021 Programming Contests - Surprise !
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3418
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: Pour amateurs de MPO

Message par C.Ret »

Merci zpalm, j'ai découvert ton post à l'instant alors que j'allais moi aussi faire un petit message pour indiquer le lien.

Pour le moment, je m'abstiens de poster toute informations et j'attendrai demain pour poster mes codes.

La première version RPN est si lente sur HP-41C que j'ai ajouté une fonction PSE pour afficher la très lente progression et un BEEP pour avertir de la fin du calcul. Avec le LBL "PAL initial et le END final, mon code fait 37 bytes.

Mais c'est si lent, que j'ai vite fait une version bien plus rapide qui malheureusement ajoute 20 bytes supplémentaires, mais au moins on peut faire des déterminations bien plus intéressantes en un temps raisonnable:

Code : Tout sélectionner

Argument     Palindrome    (37Bytes)  (57Bytes)
       808          818     0'25"49    0'06"28
      2133         2222     4'12"06    0'13"54
      2222         2332       >20'     0'14"48
1867429301   1867447681        ?       0'38"78
1867447600   1867447681        ?       0'12"45
1867447700   1867557681        ?       0'40"28

Je suis actuellement sur le concours RPL avec mon (illicite) HP-28S j'ai un petit code bien sympathique léger et très lent. J'essaye actuellement de tirer parti de notre savoir faire issu des MPO 51 et MPO 75, mais je me heurte actuellement à quelques complications.
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
Avatar du membre
zpalm
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 2929
Enregistré le : 03 mai 2008 15:33
Localisation : Grenoble

Re: Pour amateurs de MPO

Message par zpalm »

C.Ret a écrit : 03 oct. 2021 13:31 La première version RPN est si lente sur HP-41C que j'ai ajouté une fonction PSE pour afficher la très lente progression et un BEEP pour avertir de la fin du calcul. Avec le LBL "PAL initial et le END final, mon code fait 37 bytes.
J'ai aussi un code de 37 octets, très lent, mais comme je teste sur émulateur (je suis loin de mes 41) je peux facilement accélérer la vitesse d'exécution, c'est plus confortable.

À la vitesse d'origine, voici mes temps:

Code : Tout sélectionner

Argument     Palindrome    (37Bytes) 
       808          818     0'27"
      2133         2222     4'02"
      2222         2332     4'55"
Note: l'énoncé précise “For any input number less than 10^7“, donc tes derniers nombres sont hors concours.
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3418
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: Pour amateurs de MPO

Message par C.Ret »

Ah! Ah! Même temps de résolution et même taille mémoire; encore un fois nos codes doivent se ressembler.

Le mien est presque identique à celui de David Hayden, mais j'utilise la pile ce qui donne un code un peu plus court:

Code : Tout sélectionner

01►LBL "PAL
02►  LBL 01  1  +  STO 01  PSE  0  RCL 01                                      // Incrémente n d'une unité et affiche l'avancement  
09►  LBL 02  STO Z  10  ST* Z  ST/ T  MOD  +  X<>Y  INT  X>0?  GTO 02          // Construit le palindrome de n    
20►          X<> 01  X≠Y?  GTO 01  BEEP                                        // Boucle jusqu'à ce que n soit un palindrome
24►END                                                           (( 37 Bytes ))
Sans le label imposé, le END final et les deux instructions optionnelles PSE et BEEP, j'arrive à 25 Bytes de code et 1 registre. Soit, comme compte Marge à 32 octets.

Concernant le gagnant du concours RPN, Didier Lachieze utilise de la programmation synthétique avec des modules sophistiqués et profite que les nombres ne doivent pas être plus grands que 7 chiffres pour utiliser le registre Alpha lors de la détermination du palindrome;


Mon code pour la partie RPL est assez mauvais, en plus d'être prévu pour une HP-28S interdite.
Sinon, il utilise le même algorithme que celui proposé par John Keith mais avec trois fois plus de Bytes!
Il faut dire que je n'ai pas sur une HP-28S le moyen de faire des calcul sur les listes et que je n'ai pas pensé à utiliser la pile pour stocker le liste transitoire des éléments de la suite ; j'ai utilisé un ARRAY avec plein de GET et un PUTI : John utilise une astuce très astucieuse à l'aide d'instruction PICK ; chapeau ! Très bonne idée:

Code : Tout sélectionner

« → a b « 1
          2 b FOR k
               k OVER - PICK PICK 1 +
           NEXT
           b →LIST a b SUB SQ ∑LIST
        »
»
Jusqu'à l'instruction SUB incluse, ce code fonctionne parfaitement sur HP-28S, par contre les deux dernières instructions posent problème; le SQ ne fonctionne pas sur les listes et ∑LIST n'existe pas sur une HP-28C/S :(

C'est du beau MPO, j'ai trop honte de mon code qui suit exactement le même schéma mais bien trop mal foutu :oops:
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
Avatar du membre
zpalm
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 2929
Enregistré le : 03 mai 2008 15:33
Localisation : Grenoble

Re: Pour amateurs de MPO

Message par zpalm »

C.Ret a écrit : 04 oct. 2021 20:33 Ah! Ah! Même temps de résolution et même taille mémoire; encore un fois nos codes doivent se ressembler.
Pas sur, on devrait sans doute plus utiliser la programmation synthétique dans les MPO ;)
Répondre

Retourner vers « Tous les Pockets »