1

Et hop ! Pour transformer le getkey d'une touche à lettre en une valeur entre 1 et 27 (thêta), afin de faire un sub, suffit de faire ça :

K-22-5int(.1K)+2(K<44

2

'connaissais déjà mais pas mal comme astuce smile
programmeur sur TI ^^

mon blog sur les TI => clic

mon (p'tit) fofo sur les TI => clic

3

Tu réfléchi trop Baruch...

Entre les grêves et les vacances qui arrivent, mon pauv' cerveau chauffe un truc de malade en lisant ton post... :s

Masi sinon, GG quand même pour cette petite fonction wink
avatar
loclamor
Mondo Photo
Le voyage en photo et en 1 clic

4

...mouais smile
Moi j'avais fait une grande chaine de 105 caractères, avec des espaces, si vous voyez se que je veux dire...
avatar
- TI-Editor ! Éditez vos programmes On-line !
- WikiSquare Le wiki des jeux Square Enix !

5

Euh ça prend quand même plus de place non ? ^^

6

Oui...
avatar
- TI-Editor ! Éditez vos programmes On-line !
- WikiSquare Le wiki des jeux Square Enix !

7

Baruch > tu devrais pt faire une explication de texte (pour que ça serve la compréhension, et pas juste sembler "tombé du ciel" ) ?

Je me livre à un commentaire libre:
K-22-5int(.1K)+2(K<44


bon d'abord: touches.jpg

Remarques: +10 à chaque ligne, +1 de gauche à droite, 5 touches sur une ligne: ce qui donne pour deux lignes: 31, 32, 33, 34, 35, 41, 42, 43, 44, 45. Y'a 5 nombres sautés à chaque fois. Les unités donnent la place de la touche sur une ligne, le nombre de dizaines donnent la ligne..

ensuite: clavier de la Ti, repérer les touches qui servent pour les lettres. Remarque: ça se suit en permanence, sauf les touches [var] et [clear]. ça commence en A = 41
donc:
-ramener 41 à 1, genre par une simple soustraction
-trouver un moyen pour 'retirer' le décalage introduit par les '+5' à chaque ligne. Si il n'existait pas ce décalage, les lettres dans l'ordre auraient des numéros qui se suivent (genre de 41 à 57), et donc simplement soustraire 40 permettrait de se ramener aux nombres de 1 à 27...
-bidouiller pour niquer le déclage des deux touches sur la première ligne.

Solution:
. retirer 40, K -40
. la ligne de la touche est donnée par le nombre de dizaines, donc int(0.1*K). (on dégage les unités en multipliant par 0.1, et on coupe ce qu'il y a après la virgule) On compte le nombre de '+5' introduits: on introduit +5 quand on passe à la seconde ligne (celle après A B, C qui est la première ligne "alphabétique" ), +5 de plus quand on passe à la troisième, etc...
donc: total du décalage: 5 * (numéro_ligne - numéro_ligne_début ) = 5 * ( int(0.1*K) - 4 ) = -20 + 5int(.1K)
. si on est sur la ligne du début (A, B, C ), on s'en fout des deux touches supplémentaires. Sinon, ça rajoute 2 dans le comptage.. Donc: si ligne>4, retirer 2. En ti: -2*(K>44 (si la ligne>4, le numéro est >44 )

Bilan:
K - 40 - (-20 + 5int(0.1k)) -2*(k>44
= K-20-5int(0.1K)-2(K>44

remarque: légère différence avec Baruch mais résultat identique. (on peut faire -22 et +2(K<44: cela revient à considérer comme 'exceptionnels' les touches 'A', 'B', 'C', de rajouter 2 pour ces touches là, pour les autres c'st déjà dans le '22' )

conclusion: avec un peu d'habitude et de logique, ce genre de formule très efficaces peut se déduire relativement facilement. Quelques idées de base reviennent toujours:
-utiliser des tests ( X>42 .. ) pour 'coder' un if: (X>42)*5 renvoie 5 si X est plus grand que 42, 0 sinon. Cela revient à faire:
if x>42
x+5 -> ..
-utiliser int( et multiplication/divisions par des puissance de 10 pour sélectionner une partie d'un nombre.
«Les gens exigent la liberté d’expression pour compenser la liberté de pensée qu’ils préfèrent éviter.» - Sören Kierkegaard

La République, c’est comme la syphilis : quand on l’a attrapée, soit on se fait sauter le caisson, soit on essaie de vivre avec.

8

Cool merci pour cette excellente explication. Ok j'ai pas pensé à en faire une, mais bon comme il n'y a jamais de questions, c'est décourageant.

9

Oui mais l'aspect "tombé du ciel" incite peut-être justement à ne pas trop poser de question (ça décourage... )

D'ailleurs on devrait peut-être penser à faire un tuto, un peu plus structuré et avec divers exemples plus ou moins compliqués.

Comme t'es assurément un expert de ce genre de bidouilles (bien plus que moi hehe ), ce serait peut-être sympa de faire ça à plusieurs si ça te tente. (si y'a d'autres motivés ... )
«Les gens exigent la liberté d’expression pour compenser la liberté de pensée qu’ils préfèrent éviter.» - Sören Kierkegaard

La République, c’est comme la syphilis : quand on l’a attrapée, soit on se fait sauter le caisson, soit on essaie de vivre avec.

10

Euh un tuto sur quoi ?

11

L'utilisation de ce genre de 'formule' (plutôt que de faire 15 if... )
«Les gens exigent la liberté d’expression pour compenser la liberté de pensée qu’ils préfèrent éviter.» - Sören Kierkegaard

La République, c’est comme la syphilis : quand on l’a attrapée, soit on se fait sauter le caisson, soit on essaie de vivre avec.

12

Ah, je vais y réflèchir (à ce dont on pourrait parler).

13

Bon ben j'ai rien trouvé en fait. Tu veux faire quoi ?