Misez p'tit Optimisez n°91 : balade du cavalier

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
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6186
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: Misez p'tit Optimisez n°91 : balade du cavalier

Message par Marge »

Bonsoir, Danny : je n'ai pas d'explications, je ne vois pas pourquoi tes engins ont ce comportement ; peut-être le GTO I est-il confondu avec un GTO 1 ? Je ne crois pas aux miracles et je ne pense donc pas que mes deux HP-15C ont trouvé ces résultats par hasard, d'autant que...

Je viens d'adapter grossièrement le programme à la HP-41CX (quelle machine fabuleuse !). J'ai modifié les instructions ainsi :
  • 01 LBL "BCAV"
avec une instruction ASN qui permet de ne pas avoir à tout taper à chaque départ du cavalier ;
  • 02 RUNSW
pour lancer le chronomètre ;
  • nn VIEW.x
à la place du R/S ; en désarmant le drapeau 21 (armé automatiquement à l'initialisation de la machine), on évite que l'instruction VIEW empêche la continuation du programme, ce qui permet de tranquillement noter le coup du cavalier pendant que les instructions suivantes se succèdent. C'est amusant de voir le faisan passer dans le ciel ou de constater le résultat pendant que les drapeaux s'agitent au sol.
  • nn STOPSW
à la place de l'instruction RTN qui suit ISG I, GTO B : ça va planter, mais l'important est de récupérer le temps par xeq RCLSW.

Le registre I a été remplacé par le registre 18. Attention, c'est un peu sioux : GTO I = GTO IND 18, en particulier.

Eh bien, le temps d'écrire ce message et la 41CX est arrivée au coup 60...

Ça y est : 0,203804.

La 41CX boucle le parcours fermé antérieur (1,2 -> 2,4) en 20 minutes 38 secondes et 4 centièmes. C'est beaucoup plus rapide que la 15C d'origine sans pause... (environ 50 minutes) !

Pas dépassée, Milady.
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é.
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3419
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: Misez p'tit Optimisez n°91 : balade du cavalier

Message par C.Ret »

Marge a écrit : 11 sept. 2020 03:05 [...]Je viens d'adapter grossièrement le programme à la HP-41CX (quelle machine fabuleuse !). [...]
Ça y est : 0,203804.

La 41CX boucle le parcours fermé antérieur (1,2 -> 2,4) en 20 minutes 38 secondes et 4 centièmes. C'est beaucoup plus rapide que la 15C d'origine sans pause... (environ 50 minutes) !

Pas dépassée, Milady.
Et ce n'est qu'une adaptation directe et grossière, sur une HP-41C avec au moins un module RAM ou sur les CV et CX, il doit y avoir moyen de faire un Wansdorf plus rapide en utilisant un registre par cafe, voir encore plus rapide par dé-mnémodirection-polaire-rectangle à partir d'un parcours d'Euler !
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
Danny
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1248
Enregistré le : 28 déc. 2013 16:34

Re: Misez p'tit Optimisez n°91 : balade du cavalier

Message par Danny »

Bizarre cette histoire, quand même :|
Juste pour être sûr : tu a utilisé le listing que tu as posté ci-dessus (https://nsm09.casimages.com/img/2020/09 ... 006001.png), pour recopier le prog sur HP-41 ? Car si ça se trouve il y a une petite erreur de recopie sur cette image, ce qui pourrait expliquer que de mon côté j'ai le même comportement sur 2 machines différentes.
Marge a écrit : 11 sept. 2020 03:05 peut-être le GTO I est-il confondu avec un GTO 1 ?
En effet le jaune est un peu difficile à lire, mais oui j'avais bien vu que c'était le registre I et pas un 1 :)
Marge a écrit : 11 sept. 2020 03:05 Le registre I a été remplacé par le registre 18. Attention, c'est un peu sioux : GTO I = GTO IND 18, en particulier.
Yes, de mon côté j'avais remplacé par le registre 20.
? Apple, Atari, Canon, Casio, ????????????, HP, Psion, Sharp, Tandy... même TI.
Avatar du membre
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6186
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: Misez p'tit Optimisez n°91 : balade du cavalier

Message par Marge »

Oui, ça me semble être le même.
Il y a sans doute un problème dans l'armement des drapeaux car on dirait que ton programme ne "voit" pas toutes les cases.

Je posterai dans la journée le listing imprimé de la 41.
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é.
Avatar du membre
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6186
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: Misez p'tit Optimisez n°91 : balade du cavalier

Message par Marge »

Voici le programme tout frais sorti de l'imprimante 82143A. J'ai dû souvent tirer sur le ruban pour éviter l'entassement des lignes et malgré cela, il faut lire aux lignes 005, 006 et 007 : STO10, x<->y, STO09 (mais ce n'est pas l'initialisation qui pose problème, je pense...).

Image

Le temps indiqué sur la machine est celui obtenu quand l'impression est effective ; la différence (+ 50 %) est surprenante.

Sinon, il va de soi que le pas 02 peut être retiré et que le pas 41 doit être remplacé par un RTN de bon aloi pour terminer correctement l'exécution du programme.

Le lien : https://www.casimages.com/i/20091103483 ... 9.jpg.html
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é.
Avatar du membre
Danny
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1248
Enregistré le : 28 déc. 2013 16:34

Re: Misez p'tit Optimisez n°91 : balade du cavalier

Message par Danny »

Je viens de comparer ton listing en taille d'origine sur Casimages avec la version que j'ai saisie sur HP-42S, c'est bien les mêmes instructions.
A part le R18 qui est en R20 chez moi, et aussi les LBL B, LBL C etc. que j'ai renommés en LBL 22, LBL 23 etc. pour ne pas avoir de menus inutiles visibles sur la 42S. Mais de toute façon j'avais aussi saisi sur un émulateur de HP-15C exactement le même code que sur ton listing coloré, avec le même résultat.

C'est dingue ce truc.
? Apple, Atari, Canon, Casio, ????????????, HP, Psion, Sharp, Tandy... même TI.
Avatar du membre
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6186
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: Misez p'tit Optimisez n°91 : balade du cavalier

Message par Marge »

Bon, il faudra que C.Ret nous expérimente cela sur sa 15C et sa 41C...

J'essaierai aussi sur émulateur. Et aussi en plus détaillé sur la vieille 15c qui contient pour l'instant le programme de notre ami auquel je ne comprends pas grand-chose.

De ton côté, il faudrait voir si les drapeaux de la 42 se comportent comme ceux de la 41, et d'une manière générale s'il y a d'autres différences entre ces deux modèles - mais je ne crois pas. C'était quoi, l'émulateur utilisé ?
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é.
Avatar du membre
Danny
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1248
Enregistré le : 28 déc. 2013 16:34

Re: Misez p'tit Optimisez n°91 : balade du cavalier

Message par Danny »

Marge a écrit : 11 sept. 2020 18:05 De ton côté, il faudrait voir si les drapeaux de la 42 se comportent comme ceux de la 41, et d'une manière générale s'il y a d'autres différences entre ces deux modèles - mais je ne crois pas. C'était quoi, l'émulateur utilisé ?
Oui normalement c’est pareil : FC et FS ne font que changer l’état, et FC? et FS? ne font que contrôler l’état.
Il y a FC?C et FS?C qui contrôlent et remettent à zéro un flag ensuite.

L’émulateur est celui-là: https://hp15c.com/
J’ai essayé sur PC et sur Mac.
? Apple, Atari, Canon, Casio, ????????????, HP, Psion, Sharp, Tandy... même TI.
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3419
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: Misez p'tit Optimisez n°91 : balade du cavalier

Message par C.Ret »

Marge a écrit : 11 sept. 2020 15:54 [...]
Le temps indiqué sur la machine est celui obtenu quand l'impression est effective ; la différence (+ 50 %) est surprenante.
[...]
C'est normal qu'il y est un ralentissement, l'impression active tout un tas d'opérations supplémentaires et le temps de transmission sur la boucle HP-IL. Mais l'augmentation de 50% semble assez forte en effet, il y a peut-être quelque chose à optimiser dans la configuration, quelque service inutile qui tourne inutilement ?

Ma version pout HP-41C dopée en RAM (mais compatible pour les HP-41CV et HP-41CX ) imprime aussi, mais à l'aide du module IR sur une imprimante autonome HP-82240A.

J'obtiens la résolution imprimée d'un parcours complet (illustré ci-dessous à partir de la case B3) en 13'12"02. Sans l'imprimante, la même machine met 11'41"03 soit un gain de seulement 11.5% Mais je n'utilise pas de boucle de communication HP-IL et le ralentissement est surtout dû à l'algorithme d'impression qui va lentement, car l'HP-41C n'a aucun moyen de savoir si l'imprimante s'en sort bien.
HP 82240A Ticket parcours résolu depuis B3 (position 26).gif
HP 82240A Ticket parcours résolu depuis B3 (position 26).gif (82.92 Kio) Vu 7371 fois

Le listing du programme est très surprenant, j'ai cherché pendant des heures un moyen subtile, court et efficace pour initialiser l'échiquier au tout début. Finalement, le plus rapide est de saisir les 5 valeurs de la liste ( 2 , 3, 4, 6 et 8 ) et les 64 STO. Utiliser un registre par cafe est effectivement plus rapide pour la résolution de l'algorithme, mais je n'avais pensé à la difficulté d'initialiser autant de registres.
HP-41C Fast to go Wansdorf SIZE 89.gif
HP-41C Fast to go Wansdorf SIZE 89.gif (66.56 Kio) Vu 7368 fois
Cette version est une adaptation d'une version plus ancienne qui n'initialise pas l'échiquier initial mais calcule les degrés de liberté des cafes inconnues au fur et à mesure de leur découverte. Cela donne une programme plus cours, un jeu de sous-procédure plus complexe et un déroulement plus lent. Le calcul des degrés de liberté des case inconnue étant bien évidemment plus lent qu'une simple affectation ddl STO xx.
En imprimant la résolution à partir de la même cafe B3, cette ancienne version mettait 24'13"02 soit 11 min de plus pour imprimer le parcourt complet.
Je croyais que c'était médiocre, mais Maitre Marge ne semble pas imprimer plus vite ?

Utilisation:
Il vous faudra une HP-41C avec au moins un module RAM supplémentaire afin de pouvoir saisir ce programme de 185 pas et pouvoir utilise 79 registres (faire SIZE 079).
La position initiale doit être saisie en saisissant l'indice dans l'échiquier entre 16 et 79 puis lancer le programme par XEQ "MPO91 ou simplement f RTN R/S

Les positions sont affichées alpha numériquement, mais il n'y a pas de sous-programme simple sur une HP-41C pour convertir la saisie Alpha (par ex. B3) et la transformer en indice (ici 26). C'est faisable mais cela ajoute quelques lignes et utilise pas mal de labels. J'ai préféré présenter sans cela, c'est un MPO et les 69 lignes d'affectation initiale sont déjà très longues ...
Un  échiquier de registres.gif
Un échiquier de registres.gif (7.42 Kio) Vu 7368 fois
P.S.: Les plus attentif d'entre vous auront remarqué qu'il y a des instructions et des opération dans le code ci-dessus qui ne servant à rien. c'est juste des bouts du programme avec cases indéterminée qui ont subsistées. J'ai copié scrupuleusement le code qui était dans mon HP-41C, je ne voudrais pas publier un programme diffèrent de celui chronométré.
Il y a donc certainement de quoi l'optimiser, et même (peut-être) de le rendre encore plus rapide.
Modifié en dernier par C.Ret le 12 sept. 2020 21:15, modifié 1 fois.
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.
cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2143
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: Misez p'tit Optimisez n°91 : balade du cavalier

Message par cgh »

C.Ret, Ce n'est pas 2 fois le meme programme ?

Edit: C.Ret a modifie son post entretemps.
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
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3419
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: Misez p'tit Optimisez n°91 : balade du cavalier

Message par C.Ret »

cgh a écrit : 12 sept. 2020 20:19[...]Edit: C.Ret a modifie son post entretemps.
Je n'arrête pas, j'ai beau relire 14 fois avant d'envoyer, modifier et utiliser à outrance la prévisualisation, ce n'est que 7 à 8 minutes après avoir posté que je commence à voir ce qui ne va pas !! Alors, oui, mes posts sont des molécules bien instables dans la première heure.


Image
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.
cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2143
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: Misez p'tit Optimisez n°91 : balade du cavalier

Message par cgh »

C'est comme les amplis ou les synthe analogiques: il faut un temps de chauffe :mrgreen:

Ceci dit, je relis mes posts 3 ou 4 fois avant de poster, et zou, sitot fait, je remarque LA FAUTE d'ortographe, le mot qui manque...

Edit: ca vient de m'arriver ;)
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
Avatar du membre
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6186
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: Misez p'tit Optimisez n°91 : balade du cavalier

Message par Marge »

Bravo, C.Ret, encore un beau programme !
En effet, le mien est plus lent, ce sont les nombreuses sous-routines d'armement des drapeaux qui prennent un temps fou. Pour le chrono avec l'impression, il est possible que l'instruction VIEW ne soit pas la plus rapide...

Si tu as trois minutes, j'aimerais bien que tu testes mon pgm initial sur ta 15c ; les constats de Danny me surprennent.

Bon week-end :)
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é.
Avatar du membre
Danny
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1248
Enregistré le : 28 déc. 2013 16:34

Re: Misez p'tit Optimisez n°91 : balade du cavalier

Message par Danny »

Au fait j’ai cru lire dans la doc du HP-41CX que quand le chrono tourne ça pompe plus de jus des piles.
Du coup, au lieu d’utiliser RUNSW et STOPSW pour mesurer le temps, est-ce qu’il ne serait pas plus optimisé (pour les piles en tout cas, pas pour la vitesse d’exécution) de lire l’heure actuelle au départ et à la fin, et faire la soustraction ?
C’est ce que je fais d’habitude dans d’autres langages, mais je ne sais pas si c’est possible ici :geek:
? Apple, Atari, Canon, Casio, ????????????, HP, Psion, Sharp, Tandy... même TI.
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3419
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: Misez p'tit Optimisez n°91 : balade du cavalier

Message par C.Ret »

Danny a écrit : 13 sept. 2020 08:49[...]Du coup, au lieu d’utiliser RUNSW et STOPSW pour mesurer le temps, est-ce qu’il ne serait pas plus optimisé (pour les piles en tout cas, pas pour la vitesse d’exécution) de lire l’heure actuelle au départ et à la fin, et faire la soustraction ?[...]
Moi , j'utilise un chronomètre électronique avec la fonction LAP. Cela me permet de noter les temps intermédiaires et d'arrêter le chronomètre à la fin du programme.
MPO91 - Chronometrage Varification HP-41C avec impression.gif
MPO91 - Chronometrage Varification HP-41C avec impression.gif (37.74 Kio) Vu 7332 fois
Avec le code pour HP-41C, les temps intermédiaires sont faciles à mesurer, je d'éclanche l'affichage de "LAP" dès que j'entend l'imprimante se mettre à crépiter. Et j'ai placé un BEEP à la fin du programme pour être sûr de na pas manquer l'arrêt.

Pour l'HP-15C, c'est plus délicat, il faut scruter l'affichage pour voir arriver l'info, la noter, vérifier que la position donnée est correcte. J'ai donc pû confirmer les temps donnés par Marge.

Son code fonctionne très bien sur mon HP-15C, je n'ai noté aucun problème d'arrondi ou d'algorithme. Il lui faut entre 0'38" et 1'13" pour déterminer chaque position. certaines sont obtenues plus rapidement sur le bord de l'échiquier notamment. Les temps sont bien stables, il n'y a pas d'accélération ou de ralentissement vers la fin de l'échiquier.
MPO91 - Chronometrage Varification HP-15C code Maitre Marge.gif
MPO91 - Chronometrage Varification HP-15C code Maitre Marge.gif (21.63 Kio) Vu 7331 fois

Je pense que les problèmes que Danny rencontrent proviennent effectivement d'une mauvaise saisie ou adaptation du code de Maitre Marge sur ses machines, émulateurs (ou de mauvais simulateurs). Il n'y a pas cette fois de fonction y^x qui crée une erreur d'arrondi !

Pour faciliter la saisie de code du Maître, je le donne ci-dessous avec les codes touches ce qui évitera toute ambiguïté :
MPO91 - HP-15C Wansdorf on HP-15C Maitre Marge.gif
MPO91 - HP-15C Wansdorf on HP-15C Maitre Marge.gif (193.32 Kio) Vu 7307 fois

Je suis en train de l'analyser ligne à ligne. Mon idée est de le recopier de gagner une ou deux instructions et de le publier à nouveau en gagnant cet MPO puisque je propose un code plus court et tout aussi optimisé. :tongue:

J'ai déjà une douzaine de points où 1 ou 2 instruction peuvent être économisées !!
Mais bon ,j'ai pas encore vérifier que mes modification ne cassent pas toute l'œuvre.

EDIT: Mise à jour des codes touches - cf. post de Danny plus loin dans le fil
Modifié en dernier par C.Ret le 20 sept. 2020 09:25, modifié 2 fois.
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.
Répondre

Retourner vers « Tous les Pockets »