Transformer le Getkey en nombre
Posté le 06/03/2011 16:29
Je voudrais faire part d'une astuce trouvée par un de mes amis pour transformer le Getkey en nombre (merci Christophe).
La formule
G-82/-10->A
donne le nombre 1, 2 ou 3 dans la variable A si on tape 1, 2 ou 3 (G représente le getkey). Ayant trouvé ceci, il a trouvé une formule qui marche pour les nombres de 1 à 9 :
G/-10+31Frac(G/10)+2->A
ou
(G-31MOD(G,10))/-10+2
ou encore
RndFix(((G-((Int(G/10))*10+1))*3-(Abs(52-G)/10)),0)->A
Ou encore, merci
Drak, dans sa version la plus optimisée à ce jour :
-.1G+2+31Frac (.1G→A
Cette formule a un inconvénient : Le 0 est placé de telle manière qu'on ne peut pas l'intégrer. Avec un booléen, on résout facilement le problème :
(G≠71)(-.1G+2+31Frac (.1G→A
Getkey vers caractères alphabétiques
Merci à Drakalex pour la formule.
Aujourd'hui, pendant une heure peu intéressante de cours je me suis amusé à essayer de créer une formule permettant, grâce à la valeur GetKey pressée, de retourner un chiffre de 1 à 26 correspondant à la lettre pressée.
Et c'est chose réussie !
Voici le code "brut" pour ceux que ça intéresse :
Getkey[b]->[/b]G
(6-Frac (G/10)*10)(5+(Frac (G/10)*10>=[maroon]4[/maroon]))+8-Int G/10[b]->[/b]L
Et le code en plus clair (A correspond aux chiffres des dizaines de Getkey et B aux chiffre des unités)
Getkey[b]->[/b]G
Int G/10[b]->[/b]A
Frac (G/10)*10[b]->[/b]B
(6-B)(5+(B>=[maroon]4[/maroon]))+8-A[b]->[/b]L
Dans les deux cas, L correspond à la position dans l'alphabet de la lettre pressée. Si vous voulez récupérer directement la lettre et non le chiffre, il suffit d'exécuter un code comme ceci :
[gray]"ABCDEFGHIJKLMNOPQRSTUVWXYZ"[/gray][b]->[/b]Str [maroon]1[/maroon]
Getkey[b]->[/b]G
Int G/10[b]->[/b]A
Frac (G/10)*10[b]->[/b]B
(6-B)(5+(B>=[maroon]4[/maroon]))+8-A[b]->[/b]L
[b][brown]Locate[/brown][/b] [maroon]1[/maroon],[maroon]1[/maroon],StrRight(StrLeft(Srt [maroon]1[/maroon],L),[maroon]1[/maroon])
Je ne sais pas si une formule de la sorte existe déjà, mais je suis fier de vous faire partager ma découverte qui peut s'avérer utile pour plusieurs programmes
!
Citer : Posté le 04/07/2018 21:50 | #
Je propose une formule optimisée. C'est la même, mais en moins d'octets :
Pour la suite :
Bouah, pourquoi pondre une usine à gaz juste pour un zéro ? Faites plus simple, les amis ! Un booléen !
Voila. C'est tout !
Citer : Posté le 06/07/2018 18:12 | #
Joli, je mets à jour
Excellent le coup du booléen, dès fois faut savoir revenir aux basiques
Citer : Posté le 06/07/2018 18:27 | #
Merci beaucoup, Dark storm