3345 résultats trouvés

par C.Ret
28 févr. 2013 08:35
Forum : Tous les Pockets
Sujet : [Tous les Pockets] Sondage sur vos pockets
Réponses : 100
Vues : 47107

Re: [Tous les Pockets] Sondage sur vos pockets

De même,

A ce jour uniquement mon SHARP PC-1211 a de l'huile noire. A la maison, d'autres écrans LCD monochrome ont aussi des défauts, mais il ne s'agit pas de ce type d'huile; uniquement des défauts de gravure lors de la fabrication ou une anomalie apparue après un choc ou une chute.
cretpc1211.jpg
cretpc1211.jpg (60.31 Kio) Vu 2420 fois
Mon SHARP m'a bien servir sur les paillasses du du laboratoire de chimie analytique (ambiance solvants, acides, base, organomagnésiens et courants d'airs ...), sur les consoles de la salle machines d'analyse microscope électronique, chromatographies, spectrométrie photoélectronique, à rayons X et de masse, résonnance magnétique nucléaire, sondes moléculaires, cyclotrons, ... et le reste du temps dans son étuis au fond de ma pochette avec mes document à me suivre dans chacun de mes déplacements (piéton, automobiles, trains et parfois même avion pour des voyages trans-atlantiques et à vers l'Océan Indien).

L'huile noire n'a commencé à apparaitre qu'à partir de 2003/4 alors que cela faisait quelque temps qu'il reposait sans piles, au calme dans le fond d'un tiroir dans la buanderie.
J'ai longtemps pensé que cette huile noire était le fruit de l'abandon, une sorte de larme que versait ce pocket en souvenir du temps de son activité soutenue et quotidienne.
par C.Ret
27 févr. 2013 21:24
Forum : Tous les Pockets
Sujet : Les triplés
Réponses : 37
Vues : 15578

Re: Les triplés

Hobiecat a écrit :[...]
Un peu dispensable comme accessoire, non ? :wink:
Ca dépend, mais pour les MPO qui se préparent ces temps ci, mieux vaut avoir de l'autonomie !! :lol:

Je me rends compte en vous lisant que j'ai la chance d'avoir une HP-41C avec 'Tall Key' et les deux connecteurs dorés présents. Je savais que c'était une vieille. Mais je pensais pas à ce point. Par contre, la 'trappe' manque.

Personne ne sait où et comment je pourrais récupérer une telle trapette ?
par C.Ret
27 févr. 2013 10:56
Forum : Tous les Pockets
Sujet : Mon PC-1211 se meurt :(
Réponses : 27
Vues : 6461

Re: Mon PC-1211 se meurt :(

En plus, cela expliquerait aussi pourquoi les LCD des pocket suivants n'attrapent pas aussi facilement l'huile noire: les conceptions suivantes utilisent certainement un hachage du courant (à défaut d'un réel courant alternatif peu économique). Cela se voit sur certaines vidéos ou photos numériques, l'affichage LCD est faiblement contrasté ou clignote.

Ce qui fait qu'il attraperont l'huile noire dans 300 ou 3000 ans au lieu de 30 ans sur les écrans dépourvus de cet artifice électronique de nos machine d'avant-garde.

Pour réparer, il faudrait être sûr que l'électronique de pilotage de l'écran des PC-1211 soit capable de suporter une alternance de polarité ou un "hachage". J'en suis pas sûr !? Ou alors il faut déconnecter l'écran de son driver lors des cures de "vidange de l'huile noire". Mais après autant d'années, le dépôt n'est-il pas irréversible et le polymère irrémédiablement dégradé ??

Une autre solution serait de commander en masse de nouveaux écrans à une usine et de les échanger.

Mais en précisant bien que cette fois, il ne faut pas utiliser des poils cochons chinois, mais des cochons rose aux soies blondes.

https://www.youtube.com/watch?v=838j7iXZbjA

En 1980, dans la précipitation et sous la pression économique, SHARP avait certainement utilisé des crins épais et noirs ! Et sans alternance des anodes/cathodes, le noir s'installe :

Image Image
par C.Ret
27 févr. 2013 10:37
Forum : Tous les Pockets
Sujet : C'est moi.
Réponses : 6
Vues : 2498

Re: C'est moi.

hp41cx a écrit :C'est moi.
So, you are at serious works !

At least 5 powerful pockets calculators are needed to make your job !
That too heavy stuff !

How many pounds per ko ?

Please upgrade..

Image
par C.Ret
27 févr. 2013 09:52
Forum : Tous les Pockets
Sujet : 96² = ?
Réponses : 30
Vues : 15895

Re: 96² = ?

Qu'il y ait une petite erreur d'arrondi en utilisant la fonction ^ sur une calculette ou un ordi ne me gène pas. Après tout, leur fonction n'est pas de faire des calculs justes, uniquement de les répéter à l'infini sans se fatiguer.

Rappelons-nous qu'avant d'utiliser une calculette scientifique, les carrés, logarithmes, sinus ou cosinus, tangente était obtenus dans des abaques. Ceux que j'ai à ma disposition ne donnent en général que 4 ou 5 décimales. Mes calculettes et pockets sont donc suffisants car ils divergent bien au-delà de ces 4 ou 5 décimales. Mais surtout sont bien plus pratique à l'usage. Plus besoin d'ouvrir le hand-book et parcourir les colonnes et lignes des abaques pour trouver les valeurs.

Et avec 10 ou 12 décimales presque justes, l'erreur d'arrondi arrive deux fois moins vite qu'avec les 4 (ou parfois 5) décimale des valeurs tabulée des abaques.

Image

Image

Image

Dans cette table, je trouve que tan 20°30’ fait 0,3739, mon SHARP PC-1211 me donne 3.738846795€-01 alors je lui pardonne d’afficher 96^2 avec un petit (très petit) écart.

Par contre, j’oublie à chaque fois que (-96)^2 renvois l’erreur 1………………………………. Ca ce n’est pas fair-play, dans les programmes c’est souvent une source d’ennuis quand des valeurs négatives sont manipulées !
par C.Ret
27 févr. 2013 09:20
Forum : Tous les Pockets
Sujet : Mon PC-1211 se meurt :(
Réponses : 27
Vues : 6461

Re: Mon PC-1211 se meurt :(

Paul Tergeist a écrit :Oui mais regardez le PC-1211 de Woodstock, l'huile noire n'envahit pas tout
et son PC-1211 est toujours exploitable.
C'est le chemin que prend le mien; l'huile noire n'envahit pas les carrés de laffichage ni les indicateurs.
Si elle a pu être bloquée, elle pourra être chassée. (Loi de l'Oeuf)
Peut-être ...
par C.Ret
26 févr. 2013 23:42
Forum : Tous les Pockets
Sujet : Misez p'tit, Optimisez - N°39 (Nombres de Keith)
Réponses : 73
Vues : 55205

Re: Misez p'tit, Optimisez - N°39 (Nombres de Keith)

Surtout ne fait pas l'erreur de créer ta propre codifition des instruction, utilise celle qui existe déjà, c'est à dire celle utilisée dans les Hp-41, comme cela ton simulateur pourra servir à créer de vrais fichiers *.v41 échangeable avec les autres fans de l'HP-41 et qui donc seront plus facile à transmettre vers une vraie !?!

Image

Bon, d'accord c'est quand même très tordu comme code. Utiliser des listes contenant des chaines de caractères n'est peut-être pas si mal que cela en fait .
par C.Ret
26 févr. 2013 23:21
Forum : Tous les Pockets
Sujet : Misez p'tit, Optimisez - N°39 (Nombres de Keith)
Réponses : 73
Vues : 55205

Re: Misez p'tit, Optimisez - N°39 (Nombres de Keith)

Paul Tergeist a écrit :[...]
Et donc là d'après ce que tu me dis je dois attendre la prochaine ROM... snif...
Ou coder différemment le simulateur.

Par exemple en utilisant une matrice ou un vecteur. Les programmes de l'HP-41c ne sont-il pas codés byte par byte dans sa mémoire ? Utiliser les codes token fera que ton simulateur s'approche un peu plus d'un émulateur et en plus prêt à permettre la Programmation Synthétique!!

Par exemple, GTO "TEST" se code dans la mémoire des HP-41 par les codes hexa 1D, F4, 54, 45, 53, 54.
Où :
1D est le Token pour GTO
F4 est le préfixe pour 4 caractères alpha
54 45 et 53 sont donc ici les codes caractères respectifs des T E S

Pourquoi ne pas utiliser un simulateur conforme qui mémorise cette séquence dans un vecteur [ 29 244 84 69 83 84 ]

Code : Tout sélectionner

LBL "ESSAI       CF F5 45 53 53 41 49    [ 207 245 69 83 83 65 73
  LBL 00         01                          1
    1            11                         17
    +            40                         64
    STOP         84                        132
  GTO 00         B1 C6°                    177 198°              ° ou zero si encore jamais exécuté
.END.            C? ?? ??                    ?   ?  ? ?  ]
Voilà, si j'avais l'idée de faire un simulateur d'HP-41, pour représenter le programme ESSAI, j'utiliserais un vecteur (tableau de nombres) qui serait : [ 207 245 69 83 83 65 73 1 17 64 132 177 00 ? ? ? ]

Image

Source: http://www.hpmuseum.org/prog/synth41.htm#ins
par C.Ret
26 févr. 2013 14:26
Forum : Tous les Pockets
Sujet : Misez p'tit, Optimisez - N°39 (Nombres de Keith)
Réponses : 73
Vues : 55205

Re: Misez p'tit, Optimisez - N°39 (Nombres de Keith)

Gilles59 a écrit :[...]Nouvelle version, plus rapide :[...]

Oui, cette dernière version correspond grosso-modo au brouillon de ce que j'étais en train d'échafauder pour cette machine. En fait surtout l'utilisation de ΣLIST.

Par contre, je ne connaissais pas MAKELIST ou MAKEMAT et donc je construisais à l'aide d'une boucle FOR/NEXT.

Par contre, j'évite (autant que possible) de sortir d'une boucle WHILE/UNTIL avec ce qui correspond à EXIT(ici si j'ai bien compris c'est BREAK) et le RETURN ne fonctionne pas. C'est peut-être lié à la ROM, mais peut-être aussi à la logique interne: comment sortir de la procèdure ou fonction alors que l'on est encore dans une (ou plusieurs) niveau de boucle ? Situation pas facile à gérer si l'on veut que son language permette la récurrence.

Code : Tout sélectionner

EXPORT NKEITH(n)
BEGIN
   LOCAL d,s,k;
   REPEAT
      d:=SIZE(string(n)); k:=d;
      L1:=MAKELIST(FLOOR(n/10^(I-1)) MOD 10,I,1,d); 
      REPEAT
         s:=ΣLIST(L1);  k:=(k MOD d)+1;  L1(k):=s;
      UNTIL s>=n END;
      n:=n+1;
   UNTIL n=1+s END;
  RETURN s;
END;
Pss sûr que ce soit plus rapide ni plus léger d'aileurs,....
par C.Ret
25 févr. 2013 22:18
Forum : Tous les Pockets
Sujet : Misez p'tit, Optimisez - N°39 (Nombres de Keith)
Réponses : 73
Vues : 55205

Re: Misez p'tit, Optimisez - N°39 (Nombres de Keith)

Hobiecat a écrit :
zpalm a écrit :Après le slow food, le slow computing: Non à la dictature de la vitesse !!

Prenons le temps de vivre, d'apprécier le calcul d'une racine carrée sur une calculatrice 4 opérations de 1973 en dégustant une potée longuement mijotée:

Square roots - The forgotten way!
Très chouette cette petite vidéo ! Finalement, tu as raison, lançons le slow computing ! :wink:
J'ai trouvé mieux pour expliquer comment extraire une racine carrée sans calculette : après les slow computing, le paper and pencil computing ! :D
par C.Ret
25 févr. 2013 17:13
Forum : Tous les Pockets
Sujet : Misez p'tit, Optimisez - N°39 (Nombres de Keith)
Réponses : 73
Vues : 55205

Re: Misez p'tit, Optimisez - N°39 (Nombres de Keith)

Ah! Ah! Le plan d'un prochain MPO se dessinerait-il à l'horizon ?
par C.Ret
25 févr. 2013 16:31
Forum : Tous les Pockets
Sujet : Misez p'tit, Optimisez - N°39 (Nombres de Keith)
Réponses : 73
Vues : 55205

Re: Misez p'tit, Optimisez - N°39 (Nombres de Keith)

Merci tyan

C'est bien sympa cette logique 'objets' qui déclanche le calcul en surveillant une variable. En tout cas très novateur dans le monde des Pockets (et malin, tous les logiciels sur ordi fonctionnent de cette façon :).

Le programme de Babaorhum me plaisait bien, surtout parce qu'il affiche clairement les résultats;
Je voulais l'optimiser, mais je ne sais pas si sur un PC-1500 les tableaux commencent à T(0) ou T(1) ??

Donc voilà une version partiellement optimisée; J'ai utilisé à peu près les mêmes variables que Babaorhum mais en changeant le nom du tableau afin d'éviter d'avoir à utiliser la varaible N1 qui devient N. Mon idée et de préparer une adaptation pour PC-1211.

L'essentiel de l'optimisation vient du regroupement des deux sous-programmes en un seul (ils étaient toujours appelés l'un après l'autre) et surtout en retirant une partie des boucles FOR /TO/NEXT inutiles en utilisant l'astuce de la multiplication du dernier élément par deux.

Dernière astuce, le résultat binaire R est une bonne idée, mais pas mal d'octets et tests sont utilisés pour afficher le résultat.
En modifiant directement le texte contenu par R$, on garde l'aspect binaire/booléen de la chose mais on simplie énormément son exploitation, car il n'y a plus de test. Tout ce passe comme si la valeur booléenne était direcement affichable.
J'ai utilisé l'anglais, plus court que le français car je ne suit pas sûr que les registre d'un PC-1500 supportent plus de 7 caractère ("n'est pas" fait 8 caractères !!); Là aussi je prépare une version SHARP PC-121x

Code : Tout sélectionner

   REM - CALCUL KEITH - MPO 39 - PC1500 - D'APRES VERSION INITIALE DE BABAORHUM 
10 DIM T(10) : WAIT 0
20 "K" INPUT "Number ? ";N : IF N<10 OR N>9E9 THEN END             :REM - SASIE et Vérifications
30 GOSUB 100 : PRINT N ; R$ ;" a Keith number"                     :REM - TEST si N est un Keith
40 N=N+1 : GOSUB 100 : IF R$<>"is" THEN 40                         :REM - Boucle recherche suivant
50 PRINT "Next keith is"; N : GOTO 20

100 S=0 : L=INT(LOG(N)): M=N/10^L : R$="isn't"                     :REM - Décompose et somme                                
110 FOR I=1+L TO 1 STEP -1
120 : C=INT(M) : T(I)=C : S=S+C : M=10*(M-C)                       :REM - en une boucle (qui tient dans une ligne)
130 NEXT I 

150 I=I-1:IF I<1 THEN I=1+L                                        :REM - Calculs termes suivants
160 M=2*S-T(I) : T(I)=S : S=M :  IF S<N THEN 150                   :REM - sans décalage du tableau T()
170 IF S=N THEN R$="is"                                            :REM - Test si Keith ?
180 RETURN
Sur l'écran multiligne d'un PC 1350/1360/1600 on devrait obtenir après avoir entrant 27 on obtient l'affichage :

Code : Tout sélectionner

Number ? 27
 27 isn't a Keith number
Next Keith is 28
Number ? _

Voici la version PC-1211:

Code : Tout sélectionner

1 "K" AREAD N:USING :GOSUB 4:PRINT N;R$;" A KEITH NUMB"
2 N=N+1:GOSUB 4:IF R$<>"IS"GOTO 2
3 PRINT "NEXT KEITH IS";N:END
4 S=0,L=INT LOG N,M=N/10^L,R="ISN,T",O=27
5 FOR I=LTO 0STEP -1:C=INT M,A(I+O)=C,S=S+C,M=10*(M-C):NEXT I
6 I=I-1:IF I<0LET I=L
7 M=2S-A(I+O),A(I+O)=S,S=M:IF S<NGOTO 6
8 IF S=NLET R$="IS"
9 RETURN
par C.Ret
25 févr. 2013 14:58
Forum : Tous les Pockets
Sujet : Misez p'tit, Optimisez - N°39 (Nombres de Keith)
Réponses : 73
Vues : 55205

Re: Misez p'tit, Optimisez - N°39 (Nombres de Keith)

Très juste, les Benchs passent souvent à côté du point principal; l'ergonomie d'utilisation et l'adéquation entre l'utilisateur et la machine.

A la rigueur, l'ergonomie pourrait être prise en compte en comptant le nombre de touches et en quantifiant les déplacements des doigts au-dessus du clavier.

Par contre, pour le filling et l'adéquation, c'est une autre paires de manches, bien plus subjectif et dépent tellement des préfèrences et de l'histoire de chaque utilisateur ...

Par exemple, les HP48 et HP50 sont des RPL bien plus puissantes que mon viel HP-28S. Pourtant, il reste mon outil de prédilection. J'ai trop de mal à me faire aux claviers surchargés et aux multiples touches préfixes. Le clavier double et simple de la 28 me permet de taper programmes et formules sans constamment chercher s'il faut un préfixe f ou g , flèche droite ou gauche ou un ou deux appuis sur la touche alpha, etc...

Pareil pour le SHARP PC-1211, j'utilise trop rarement ma Ti-74 BASICAL à cause du clavier mais surtout car on ne peut pas méler utilisation calculatrice et programmes BASIC. Ce que le PC-1211 bien qu'infiniment plus lent et moins puissant fait à merveille...

C'est ce qui m'avait fait remarquer la HP-39gii, la possibilité d'exécuter des APPS ou des programmes personnels qui viennent modifier et transformer des variables globales typées dont on dispose en permanence pour les calculs manuels et donc l'utilisation quotidienne.
babaorhum a écrit :Quel coquin ce C.ret !!!
... mais le précédent MPO nous avait mis sur la piste de "l'autre façon de voir les choses" !!
On se doutait un peu quand même vu les perfs annoncées sur 28S ...
Oui, et en plus j'ai volontairement écrit un énoncé qui décortique la définition et donne la façon de faire "bourrin" afin d'induire un maximum les lecteurs vers une approche "mécanique".
on a fait tous a peu près la même chose dans la version "calcul bourrin".
En fait, il n'y a pas pour ces Nombres de Keith d'approche analytique possible ou de formule magique. Mon idée était de proposer un MPO qui soit un simple excercice de programmation, réalisable sans analyse poussée ou pré-requis d'un savoir mathématique quelconque.

Ce dernier week-end, je me fesais la même réflexion à propos de l'excercie de mathématique qui était bien compliqué et envisageait tout un tas de suites et de théorèmes pour finalemment ne proposer aucune méthode simple et efficace pour déterminer ces nombres.

Voici une autre version pour HP-41 qui trouve n'importe quel Nombre de Keith en moins de 7s:

Code : Tout sélectionner

001 LBL "DKEITH
002 14 XEQ 00 19 XEQ 00 28 XEQ 00 47 XEQ 00 61 XEQ 00 75 XEQ 00  
014 197 XEQ 00 742 XEQ 00 
018 1104 XEQ 00 1537 XEQ 00 2208 XEQ 00 2580 XEQ 00 3684 XEQ 00 4788 
    XEQ 00 7385 XEQ 00 7647 XEQ 00 7909 XEQ 00  
036 31331 XEQ 00 34285 XEQ 00 34348 XEQ 00 55604 XEQ 00 62662 XEQ 00 86935 XEQ 00 93993 XEQ 00 
050 120284 XEQ 00 129106 XEQ 00 147640 XEQ 00 156146 XEQ 00 174680 XEQ 00 183186 XEQ 00 298320
    XEQ 00 355419 XEQ 00 694280 XEQ 00 925993 
070 1084051 XEQ 00 7913837 XEQ 00 
074 11436171 XEQ 00 33445755 XEQ 00 44121607 
080 129572008 XEQ 00 251133297
083 LBL 00
084 X<>Y
085 X>Y?
086 RTN
087 X<>Y
088 STOP
089 RTN
par C.Ret
25 févr. 2013 12:29
Forum : Tous les Pockets
Sujet : Misez p'tit, Optimisez - N°39 (Nombres de Keith)
Réponses : 73
Vues : 55205

Re: Misez p'tit, Optimisez - N°39 (Nombres de Keith)

bernouilli92 a écrit :
C.Ret a écrit :Pour le SHARP PC-1211, pas de DATA il faut affecter les variables une à une ce qui prend plein d'octets (chaque chiffre fait 1 octet) et ensuite chaque nombre prend les 8 octet du registres. Seule solution viable, utiliser l'interface cassette :
Il n'y a pas moyen d'utiliser un tableau de nombres et d'affecter chacun des éléments ?
Quelque chose du genre :

Code : Tout sélectionner

10 DIM A(47)
20 A(1)=14:A(2)=19:A(3)=28:A(4)=47:A(5)=61:A(6)=75
30 A(7)=197:A(8)=742
etc..
C'est possible, mais il y a 43 valeurs à saisir donc on peut faire le total des octets:
':A(xx)=' fait 7 octets x43 donne 301 octet (en réalité ~292 car il y quelque indice à un seul chiffre et des : inutiles en début de ligne).
Les 43 nombres se répartissent de la façon suivante :
6 nombres à 2 chiffres 12 octets
2 nombres à 3 chiffres 6 octets
9 nombres à 4 chiffres 36 octets
7 nombres à 5 chiffres 35 octets
10 nombres à 6 chiffres 70 octets
2 nombres à 7 chiffres 14 octets
3 nombres à 8 chiffres 24 octets
2 nombres à 9 chiffres 18 octets

Ce qui donne un total de 516 octets de données qu'il faut répartir par ligne de 80 caractères max.

Ce qui fait, au mieux, 7 lignes soit 21 octets de plus (deux pour le n° de ligne et un pour le CRet de fin de ligne)

Le programme pèse donc environ 600 octets programmes (si on se débrouille bien) et utilise donc 44 variables soit en tout 952 octets Donc cela effectivement entre dans le SHARP PC-1211.

C'est vrai que j'ai décidé d'utiliser l'interface cassette en considérant les 71 nombres que j'ai trouvé sur Internet, et qu'alors cela n'entre pas (à cause des nombre à beaucoup de chiffre). En faisant mon estimation, je n'avais pas réalisé qu'il en fallait moins pour un SHARP limité à 10 chiffres ! :evil:


Paul Tergeist a écrit :Je pense que Charo est tombé dans une embuscade de machines Casio et qu'il ne s'en est pas sorti cette fois.
YES : 1664
YES YES YES YES
Espèrons que Charo ne s'est pas fait mal !
Gilles59 a écrit :
C.Ret a écrit :Bo, je crois qu'il est temps de donner un aperçu de mon code explosif :

En fait c'est très simple, et si charo était là il dirait, c'est de la gruge !
Et il n'aurait peut-être pas tout à fait tord :wink:

[.. excellent code ...]

Une version en 431.5 octect (mode Exact) , qui utilise le traitement de listes (49/50 et peut etre 48G ?)
Pour gagner des octets, on peut aussi ne pas saisir le tableau de nombre, mais le compressé.
Une première façon de faire est de faire par différentiel.

On sait que le premier Nombre de Keith est 14, au lieu de mémoriser les nombre (ce qui prend de plus en plus de place avec l'ugmentation progressive du nombre de chiffre) on se limite à donner les écarts entre les nombres succéssifs. Leur nombre de chiffre augmente aussi, mais moins vite.

Dans un second temps, on peut aussi réduire ces valeur diffèrentielle à l'aide d'une fonction de croissance (par exemple valeur moyenne linéaire ou autre). On indique alors pour chaque rang l'écart à cette valeur moyenne. Si la fonction de croissance est bien foutue, et que tout est à peu près juste à +/-99 ou +/-999, alors les écarts ne font que deux ou trois chiffres.

Mais l'extraction des nombre de keith devient alors bien plus compliquée. Tout dépend de la fonction de croissance.
Il faut donc trouver un compromis pour miser petit !!
par C.Ret
25 févr. 2013 09:05
Forum : Tous les Pockets
Sujet : Misez p'tit, Optimisez - N°39 (Nombres de Keith)
Réponses : 73
Vues : 55205

Re: Misez p'tit, Optimisez - N°39 (Nombres de Keith)

Bo, je crois qu'il est temps de donner un aperçu de mon code explosif :

En fait c'est très simple, et si charo était là il dirait, c'est de la gruge !

Code : Tout sélectionner

«  -> n
  « 
    { 14 19 28 47 61 75 
      197 742 
      1104 1537 2208 2580 3684 4788 7385 7647 7909 
      31331 34285 34348 55604 62662 86935 93993 
      120284 129106 147640 156146 174680 183186 298320 355419 694280 925993 
      1084051 7913837 
      11436171 33445755 44121607 
      129572008 251133297 
      24769286411 96189170155 
      171570159070 202366307758 239143607789 296658839738 }
    1
    DO
       GETI
    UNTIL n >= END
    GET
  »
»
Voilà, le principe est très simple, les Nombres de Keith sont mémorisés et une boucle parcourt cette liste jusqu'à trouver le premier Nombre de Keith supérieur (ou égal) à l'entier demandé.
Notons au passage l'utilisation de GETI qui prend un élément de la liste (comme GET) et qui de plus met à jour l'indice pour préparer le terrain au prochain GETI, ou GET qui lui consomme liste et indice.


En BASIC pour Pocket et 8 bits, cela donnerait quelque chose comme cela :

Code : Tout sélectionner

10 DATA 14,19,28,47,61,75
20 DATA 197,742
30 DATA 1104,1537,2208,2580,3684,4788,7385,7647,7909
40 DATA 31331,34285,34348,55604,62662,86935,93993
50 DATA 120284,129106,147640,156146,174680,183186,298320,355419,694280,925993
60 DATA 1084051,7913837
70 DATA 11436171,33445755,44121607
80 DATA 129572008,251133297

100 DO
110 :INPUT "N=";N
120 :IF N<10 THEN EXIT
130 :RESTORE
140 :DO:READ K:LOOP UNTIL K>=N
150 :PRINT "   ";K
160 :PRINT
170 LOOP
180 END

Pour le SHARP PC-1211, pas de DATA il faut affecter les variables une à une ce qui prend plein d'octets (chaque chiffre fait 1 octet) et ensuite chaque nombre prend les 8 octet du registres. Seule solution viable, utiliser l'interface cassette :

Code : Tout sélectionner

1:INPUT #"KEITHNB";C                 // Charge les Nombre Keith depuis la cassette (ou le fichier wav)
2:"K"INPUT "N=";A:B=2                // Demande saise d'un entier
3:B=B+1:IF A(B)<A GOTO 3             // boucle tant que le nombre de keith est trop petit
4:PRINT A,A(B):B=B+1:A=A(B):GOTO 2   // Affiche l'entier et le nombre de keith immédiatement suivant
                                     // (ou eventuellement deux fois l'entier si c'est un Nombre de Keith)
Octets: 76 programmes + 43 registres (de A=A(1) à A(43)) = 76 + 344 = 420 octets.
Vitesse:les résultats mettent moins de 35 secondes à apparaitre, une fois le fichier de données récupéré depuis l'interface.

Mise en place / Première utilisation:
-----------------------------------------------

Installer le SHARP PC-1211 sur son berceau CE-121 ou CE-122.
Positionner la cassette au début de la bande (ou lancer la lectuere du fichier wav en boucle).
Connecter l'interface à son lecteur de cassette sans oublier de brancher le jack 'remote controle'.
Sur la CE-122 ne pas oublier de positionner le commutateur REMONTE sur la position ON.
Charger le programme : CLOAD "KEITH" depuis la cassette (ou le fichier wav)
Ajuster le niveau sonnore.
A la fin du chargement, la bande s'arrête et on lance l'initialisation :
RUN le SHARP PC-1211 charge les données depuis la cassette (ou le fichier WAV).

Utilisations ultérieure:
----------------------------
Pour déterminer le Nombre de Keith suivant ou vérifier qu'un entier est un nombre de Keith, en mode DEF faire [shift]+[ K ] et saisir l'entier.
Le résultat s'affiche rapidement ou s'imprime. LE SHARP peut être utiliser sans son interface cassette.

Pour lister les Nombres de Keith, entrer un premier entier comme ci-dessus puis appuyer sur [ENTER] pour faire apparitre l'écran de saisie suivant et valider par [ENTER] sans saisir d'entier, les Nombres de Keith seront listés deux par deux à chaque tours de roue.
Si l'on rentre un entier trop grand, le SHARP boucle lontemps, deux minutes environ et s'arrête sur un message d'erreur 4 à la ligne 3.

Génération du fichier et programme:
------------------------------------------------
Le fichier "KEITHNB" contient les 41 premiers nombres de Keith:

La ligne 1 du programme la charge à partir du registre C

Pour générer ce fichier, le programme suivant peut être utilisé :
10:"L" INPUT "ENTER 1,PRESS PLAY";A:IF A INPUT #"KEITHNB";C
20:"=" FOR B=130 TO 173:IF A(B)=0 INPUT "K.N.=";A(B)
30:PRINT A(B):NEXT B
40:"S" INPUT "PRESS REC+PLAY,ENTER 1";A:IF A PRINT #"KEITHNB";A(130)

P.S.:
Je n'ai pas réussit à mettre mon fichier WAV (en fait un WMA) en ligne - je ne suis pas à la maison mais en déplacement - . Il est disponible en pièce jointe par MP si quelqu'un a un site où l'on peut le mettre en libre téléchargement.

Aller à la recherche avancée