Ce petit problème aura finalement suscité pas mal de solutions, toutes adaptées à des calculatrices HP, l'énoncé ayant pu influencer les programmeurs partipants. Des solutions uniquement adaptées aux machines de chez HP ?
Non ! Il faut noter, en effet, quelques exceptions, comme la proposition de
Pocket en BASIC, celle de
Marge très philosophique ou encore celles de
C.Ret et de
badaze sur CASIO fx-602p.
Bravo donc à tous les participants !
Voici la suite et la fin de l'article de Bill Kolb ( "PPC Journal", V5 N8 P31, sept. / oct. 1978).
NOW SEE WHAT KIND OF PROGRAMMER YOU ARE:
Category 1: JOB SECURITY MINDED.
This is a true work of art. It is also incomprehensible to anyone else.
Category 2: ENGINEER.
This type insists on making the problem more complicated than it really is.
Engineers hang onto an idea tenaciously until they find a way to make it work.
Category 3: MATHEMATICIAN.
This is a concise algorithmic solution to the problem that completely avoids any tests.
Category 4: SURVEYOR.
Surveyors begin every problem by first converting to a bearing or azimuth.
The worst part is that even a mathematician can't understand their documentation.
Category 5: COMPUTER SCIENTIST.
These are likely to be the most sophisticated solutions to the problem.
One can only hope that the documentation will be good enough to follow what he's doing.
Category 6: SYSTEMS PROGRAMMER.
This is actually a very good program. Every conceivable error trap has been included in case the user makes a mistake.
This type will probably end up selling his calculator.
Category 7: PROGRAMMING INSTRUCTOR.
You will notice a number of key points demonstrated by this program.
Unfortunately it doesn't always work. Chances are he's never produced a working program of any importance.
Category 8: HP APPLICATIONS ENGINEER.
These people really give us some good programs but somehow they always seem to fall a little short of the ideal.
Category 9: OLD-LINE HP-65 PROGRAMMER.
This type still needs two steps after every test.
Odds are that he bought the HP-67 because he needed more steps and found out that 224 wasn't enough either.
Category 10: HP-25 OWNER.
This is a very short and efficient routine. Most HP-25 owners can reduce a problem to its simplest terms.
Category 11: BEGINNER.
This type knows a little about programming but doesn't make any distinction between "equals" and "not equals".
He hasn't yet figured out why HP put so many different comparisons on its calculators.
Category 12: RECENT FOUR-FUNCTION CONVERT.
It's apparent that this programmer is about halfway through the owner's manual
and has a good grasp of the basics. He still spends most of his waking hours trying to find uses for his calculator.
Category 13: NORMALLY USES A TI CALCULATOR.
His own calculator is in Lubbock, Texas, for the third time.
Notice the steadfast refusal to use the stack.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[Postscript: In the next issue of the PPC Journal (V5 N9 P5), Richard Nelson wrote the following. -jkh-]
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
A number of 'programmers' at HP also took the test... and as luck would have it, one produced number 13! Another HP programmer's
solution was a three-step goodie listed below (a). The "best" has to be Mike Richter's program in (b) below. It is the shortest (will someone
come up with a two-step program?), doesn't use any compares, labels, flags, registers, or even the stack!
[Note: this was very important on 4-level stack machines! -jkh-]
This only proves once again that no matter how "good" a given program is, most likely someone else can improve it or provide some insight
that facilitates an improvement. It is the exchange of programming technique that PPC strives to provide.
Traduction
Voyons maintenant quel genre de programmeur vous êtes :
Catégorie 1 :
Le Soucieux de la Sécurité.
Voici une véritable œuvre d'art ! Mais elle est également incompréhensible pour tout le monde.
Catégorie 2 :
L'Ingénieur.
Ce gars insiste pour rendre le problème plus compliqué qu'il ne l'est en réalité.
Les ingénieurs s'accrochent généralement à une idée jusqu'à ce qu'ils trouvent un moyen de la faire fonctionner.
Code : Tout sélectionner
ENTER x^2 X≠Y 1 X=Y 2
ou
Sqrt FRAC X≠0 1 x=0 2
ou
X^2 5 - CHS Sqrt
Catégorie 3 :
Le Mathématicien.
Il s'agit d'une solution algorithmique concise au problème qui évite complètement les tests.
Catégorie 4 :
Le Géomètre.
Les géomètres commencent chaque problème en le convertissant en un relèvement ou un azimut.
Le pire, c'est que même un mathématicien ne peut pas comprendre leur documentation.
Catégorie 5 :
L'Informaticien.
Ce sont probablement les solutions au problème les plus sophistiquées.
On ne peut qu'espérer que la documentation soit assez bonne pour suivre ce qu'il a fait.
Code : Tout sélectionner
STO_I 1 STO_2 2 STO_1 RCL(i)
ou
STO_I CLx DSZ RCL_I x=0 2 + @ NDLR - erreur :
@ dans le texte d'origine on a « 11 + » au lieu de « 2 + »
ou
STO_I CLx GTO(i) LBL_1 1 LBL_2 1 +
Catégorie 6 :
Le Programmeur Système.
Il s'agit en fait d'un très bon programme. La gestion des exceptions traite toutes les possibilités au cas où l'utilisateur ferait une erreur.
Ce type de programmeur finira probablement par vendre sa calculatrice.
Code : Tout sélectionner
RND ABS INT 1 - LSTx X<>Y X=0 GTO_2 X=Y GTO_1 R/S LBL_2 + LBL_1 RTN
Catégorie 7 :
L'Enseignant en Programmation.
Vous remarquerez un certain nombre de points clés démontrés par ce programme. Malheureusement, il ne fonctionne pas toujours. Il y a de fortes chances que cette personnne n'ait jamais produit un programme fonctionnel de quelque d'importance.
Catégorie 8 :
L'Ingénieur d'Application HP.
Ces personnes nous donnent vraiment de bons programmes, mais pour une raison ou une autre, ils manquent toujours la perfection de peu.
Catégorie 9 :
Le Programmeur d'une Ancienne HP-65.
Ce gars a toujours besoin de deux pas de plus après chaque essai. Il y a de fortes chances qu'il ait acheté la HP-67 parce qu'il avait besoin de plus de pas et puis qu'il ait découvert que 224 pas n'étaient pas suffisants non plus.
Code : Tout sélectionner
1 - X≠0 1 X=0 2
ou
1 X=Y SF2 TF2 2 @ TF2 → teste si le drapeau 2 est armé (sur HP-65)
ou
1 X=Y + NOP
Catégorie 10 :
Le Propriétaire d'une HP-25.
Il s'agit de routines très courtes et efficaces. La plupart des propriétaires de HP-25 peuvent réduire un problème à sa plus simple expression.
Catégorie 11 :
Le Débutant.
Ce type connaît un peu la programmation mais ne fait pas de distinction entre le signe "=" et le signe "≠".
Il n'a pas encore compris pourquoi HP a mis tant de tests de comparaison différents sur ses calculatrices.
Catégorie 12 :
Le Fraîchement Converti à la Calculatrice 4 Opérations.
Il est évident que ce programmeur n'a parcouru que la moitié du manuel d'utilisation mais il maîtrise bien les bases.
Il passe encore la plupart de ses heures de veille à essayer de trouver des utilisations pour sa calculatrice.
Catégorie 13 :
Habituellement, il utilise une calculatrice TI…. (The AOS Guy
)
mais sa calculatrice personnelle se trouve à Lubbock, Texas, pour la troisième fois !
Notez le refus catégorique d'utiliser la pile.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[Post-scriptum : Dans le numéro suivant de PPC Journal (V5 N9 P5), Richard Nelson a écrit ce qui suit. -jkh-]
(NDLR : jkh sont les initiales de Joseph (Joe) K. Horn)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Un certain nombre de "programmeurs" de chez HP ont également fait le test... et, par chance, l'un d'eux a produit le numéro 13 !
(NDLR : je ne sais pas à quoi il est fait allusion ci-dessus)
La solution d'un autre programmeur de chez HP fut la solution en trois pas ci-dessous (a). La "meilleure" doit être être le programme de
Mike Richter en (b) ci-dessous.
C'est la plus courte (quelqu'un va-t-il proposer un programme en deux pas ? ) et sans aucuns tests de comparaison, labels,
drapeaux, registres, ni même usage de la pile !
(Note : ceci était très important important sur les machines avec pile à 4 niveaux ! -jkh-]
Tout ceci prouve, une fois de plus, qu'aussi "bon" puisse être un programme donné, il est probable que quelqu'un d'autre puisse
l'améliorer ou fournir des informations qui en facilite l'amélioration.
C'est l'échange de techniques de programmation que le PPC s'efforce de fournir.
Source :
https://holyjoe.net/hp/flash07.txt