Etant en déplacement avec mon Sharp PC-1403, mon Casio 730P (merci ledudu !) et le numéro Hors Série n°54bis de l'Ordinateur Individuel, que pouvais-je bien faire ?
Après lecture de l'article des pages 133 et 134, consacré à une méthode de multiplication que je ne connaissais pas et (parait-il) utilisée par les égyptiens, je décidais de sortir mes deux pockets. Pour ceux qui n'ont pas ce bouquin à leur disposition, sachez qu'on peut le télécharger sur le très bon site abandonware-magazine. Sinon, je vous mets la page correspondante (je n'ai pas mis la page 134, avec le listing Basic, vous pourrez aller le chercher sur le site précité si ça vous intéresse) :
Cliquez ici
Tout d'abord, avant de parler pocket, je suis assez surpris que ce type d'algorithme ait été connu par les égyptiens, peuple très avancé s'il est vrai, mais certainement pas au niveau des mathématiques. Le système même de numération égyptien, de nature additive, un peu comme celui des romains plus tard, ne permet pas de "poser" correctement et pratiquement des opérations. Les égyptiens ne connaissaient pas le système de numération positionnel, or l'algorithme décrit dans cet article présuppose une connaissance de cet ordre, car en fait, cela revient à travailler en binaire. (Je vous laisse chercher un peu, je reviendrai là dessus si besoin est). En même temps, je ne prétend pas être un historien accompli. Donc si quelqu'un a des éclaircissements, je suis preneur !
L'algo est simple. Mais j'ai essayé de faire le plus court possible (au détriment de l'efficacité), genre deuligne. Grâce aux spécificités du Basic Sharp, j'ai même pu faire une version "monoligne", totalisant 60 octets :
Code : Tout sélectionner
1 INPUT A,B:P=0:FOR I=0 TO LN A/LN 2:C=A/2:P=P+B*(C<>INT C):A=INT C:B=B*2:NEXT I:PRINT PA cause du fait que les Casio ne connaissent pas les variables booléennes (Honte sur eux !), on est obligé de faire un test, et on se retrouve avec deux lignes, pour une version faisant 59 octets :
Code : Tout sélectionner
1 INPUT A,B:P=0:FOR I=0 TO LN A/LN 2:C=A/2:IF C<>INT C THEN P=P+B
2 A=INT C:B=B*2:NEXT I:PRINT POn voit que les versions Casio et Sharp ne se font pas mal au niveau taille mémoire. Au niveau rapidité, j'ai trouvé qu'étrangement les deux machines allaient pratiquement à la même vitesse (avec une toute petite avance pour le Casio, mais à peine).
A vous de jouer. Pouvez-vous faire plus court, tout modèles confondus (pas seulement Pockets Basic) ? Sauriez-vous faire une version monoligne sur le Casio ?
@+
P.S.: pour ceux qui se poseraient LA question : à quoi ça sert ? La réponse est simple : 42 ! Ceux qui veulent une réponse plus précise, là voilà : "il faut bien s'occuper en attendant la mort", dixit Desproges.














