1

Bonjour à tous les Tiphyles,
J'utilise une TI83+
Pour la petite info j'ai remplacé la flèche "Sto=>" sur la calculette 'touche au dessus de 'ON' pour les TI83+' par => et <=pour le signe 'inférieur ou égal'
Je passais sur votre forum par hasard (merci google) et javais quelques petites questions de programmation... ^^

Voici le jeu que j'ai créé qui semble sympa mais redondant ...

: disp "Combien de possibilités"
: input C
: int(randC+1=>N
: Repeat A=N
: S+1=>S
: output(1,14,S)
: Input A
: If A>N: Disp"plus petit"
: If A<N: Disp"Plus grand"
: End
: Disp" Bravo vous avez trouvez",A,"En",S,"Coups."
: Stop
: Clrhome

Le but du jeu étant vous l'aviez compris de trouver le chiffre mystère grâce aux indication "plus petit" et "plus grand".



L'astuce pour gagner le plus rapidement à ce jeu est la suivante ("cryptée" pour ceux qui voudrait trouver par eux même ^^) : plrlelnldlrlel làl lclhlalqlulel lflolilsl lllal lmlolylelnlnlel ldlelsl ldlelulxl lnlolmlblrlelsl lllelsl lplllulsl lplrlolclhlelsl lplrlélcléldlelmlmlelnltl lplrlolplolsléls..

Revenons-en à nos octets..
Je me suis dis donc et pourquoi pas faire jouer la TI toute seule à ce jeu et voir comment elle se débrouille.

J'ai donc remplacer la partie du programme en gras plus haut par :
: Int(randC+1=>A
: Disp A

La Ti arrive très bien à trouver le chiffre mystère (avec le temps qu'il faut ...^^) et ne semble pas se lasser de ce jeu tongue...
Par contre elle repropose souvent un chiffre qu'elle a déjà proposé( normal...). Le but de mon topic ici est donc de vous demander :

1-s'il est possible de ne pas faire random à la calculette au "tirage" Nx un chiffre déja proposé aux tirages Nk (où 0<=k<=x) - et comment ^^

2-S'il est possible de faire random à la calculette des lettres.

Ce serait en gros un générateur de tous les chiffres entre 1 et 100 par exemple une seule fois et dans un ordre au hasard.

3-Est-il possible de faire random un chiffre entre 50 et 100 par exemple?

Je vous remercie par avance de vos réponses, pertinentes je l'espère.

Fritzouille
Nous ne sommes jamais là par hasard.

2

Salut,

Réponse trouvé pour random entre 50 et 100 : RandInt(50,100)

Plus que deux tongue

Fritzouille
Nous ne sommes jamais là par hasard.

3

pas compris la 2

pour la 1 moi je ferais un tableau de N cases et quand j'ai choisi un nombre je mets un "1" dans cette case. Quand je tire le nb suivant, je recommence tant que c'est celui d'une case qui contient déja un "1".

au début le tableau n'a que des zéros

random donne 60 => tu regardes la case 10, elle contient 0, tu mets 1 dans la case 10 (10=60-50)
random donne 75 => tu regardes la case 25, elle contient 0, tu mets 1 dans la case 25
random RE donne 60 => tu regardes la case 10, ah elle contient déja 1, je recommence à faire random, etc.

tu peux utiliser while pour gérer le cas "recommence".

4

Salut,
En ce qui concerne ta réponse Squalyl, je comprend comment faire mais mes connaissances en programmation ne me permettent pas de le réaliser ...Comment faire faire un tableau à la calculette?
Merci de ton aide


Pour le 2 ca serait un truc du style :

RandInt(1,26)=> ð
If ð = 1: Disp "A"
If ð = 2: Disp "B"
If ð = 3: Disp "C"
If ð = 4: Disp "D"
........................
If ð = 26: Disp "Z"
Comme ca la caluculette "random" un chiffre.
Un solution plus simple que de tout tapper ?

Fritzouille
Nous ne sommes jamais là par hasard.

5

dans la ti89 il y a une fonction qui le fait, mais sur une 83+ je sais pas, faudra attendre les zexperts grin

6

squalyl (./3) :
pas compris la 2

pour la 1 moi je ferais un tableau de N cases et quand j'ai choisi un nombre je mets un "1" dans cette case. Quand je tire le nb suivant, je recommence tant que c'est celui d'une case qui contient déja un "1".

au début le tableau n'a que des zéros

random donne 60 => tu regardes la case 10, elle contient 0, tu mets 1 dans la case 10 (10=60-50)
random donne 75 => tu regardes la case 25, elle contient 0, tu mets 1 dans la case 25
random RE donne 60 => tu regardes la case 10, ah elle contient déja 1, je recommence à faire random, etc.

tu peux utiliser while pour gérer le cas "recommence".

c'est super lent. mieux:

t = Tableau(N elements)
for i from 0 to N-1 do
  x[i] = i
done
for i from 0 to N-1 do
  x[i] = x[Random(i,N-1)]
done 

Ensuite tu tires les nombres dans le tableau un par un
avatar
I'm on a boat motherfucker, don't you ever forget

7

Heu, j'ai peut être lu trop vite, mais il ne suffirait pas de stocker les deux bornes ? On convergerait rapidement vers le nombre, et sans doublon, non ? confus
Parce que là, vos solutions considèrent qu'ont sait uniquement si on a gagné ou pas, alors qu'en fait, on sait si on est supérieur ou inférieur au nombre mystère tongue

8

(vous aurez intelligement remplace x par t dans mon post)
avatar
I'm on a boat motherfucker, don't you ever forget

9

Fritzouille (./4) :
Pour le 2 ca serait un truc du style :

RandInt(1,26)=> ð
If ð = 1: Disp "A"
If ð = 2: Disp "B"
If ð = 3: Disp "C"
If ð = 4: Disp "D"
........................
If ð = 26: Disp "Z"
Comme ca la caluculette "random" un chiffre.
Un solution plus simple que de tout tapper ?

Fritzouille

Au pire si l'équivalent de char()/ord() n'est pas disponible sur 83+, tu peux faire un tableau de lettres, ça serait déjà plus élégant ^^

10

Salut à tous,

Merci tout d'abord de votre interêt porté à mon post. N'étant pas autant callé que vous en programmation, on va procéder par ordre.
e re-précise que je suis sur ti83+
" 2-S'il est possible de faire random à la calculette des lettres." ==> char() et ord() n'existe pas sur 83+ alors si le tableau de lettres est plus élégant, comment le réaliser ^^?


"1-s'il est possible de ne pas faire random à la calculette au "tirage" Nx un chiffre déja proposé aux tirages Nk (où 0<=k<=x)"
damnvoid (./6) :

c'est super lent. mieux:

t = Tableau(N elements)
for i from 0 to N-1 do
  t[i] = i
done
for i from 0 to N-1 do
  t[i] = t[Random(i,N-1)]
done 

Ensuite tu tires les nombres dans le tableau un par un

Peux-tu expliquer un peu plus en détail ? car il y a des fonctions que je ne retrouve pas sur TI83+ (from par exemple)...

Merci

Fritzouille
Nous ne sommes jamais là par hasard.

11

c'est pas du langage de ti83 qu'il a écrit, mais juste l'algo. A toi de le comprendre et de le traduire pour ta calculette wink

12

L'algo de dualmoo ne marche pas tel quel (il faut faire un échange, pas un overwrite), mais traduit en français ça donne ça :
Soit N le nombre de parties que tu veux faire, dans ton exemple 100, tu veux donc tirer tous les nombres entre 1 et 100 mais dans un ordre aléatoire.
[ul][li]Tu crées un tableau de taille N et tu le remplis avec une boucle en mettant pour chaque i le nombre i dans la case numéro i (N.B. : si en fait les cases du tableau sont numérotées de 0 à N-1 [je ne sais pas ce qu'il en est sur TI-83] et que tu veux les nombres de 1 à N il faut bien sûr mettre i+1)[/li]
[li]Tu fais une deuxième boucle, où i parcourt de nouveau les numéros de cases du tableau. Pour chaque valeur de i, tu choisis un nombre k au hasard entre i et N (ou N-1), c'est-à-dire entre la case actuelle et la fin du tableau, et tu échanges les contenus des cases n° i et k (pour faire un échange il faudra a priori passer par une variable intermédiaire).[/li]
[li]Tu te retrouves ainsi avec un tableau qui contient tous les nombres de 1 à N mais dans un ordre aléatoire. Il te suffit donc, pour la partie n° n, de faire chercher le nombre qui est dans la case n° n.[/li][/ul]
Si tu ne sais pas comment créer un tableau et faire une boucle, cherche dans le manuel de ta calculatrice, ce sont des fonctions de base donc ça ne devrait pas être compliqué à trouver ^^
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

13

Merci Sally pour la "traduction", je vais m'atteler à la tâche.

Je vous tiens au courant ... si vous avez des tuyaux pour ce programme, hésitez pas à le faire savoir smilesmile


Fritzouille
Nous ne sommes jamais là par hasard.

14

merci d'avoir corrige mon erreur smile
avatar
I'm on a boat motherfucker, don't you ever forget

15

Pour le tableau de lettres, tu peux stocker les lettres dans un tableau, et les sortir directement avec l'indice aléatoire généré par ton RandInt

{"A", "B", ..., "Z"}&#x2014;>maListe
Disp maListe[RandInt(1, 26)]


Je ne sais plus si l'indice des listes commence à 0 ou 1, donc il faudra peut être adapter les bornes du RandInt.
Disp maListe[RandInt(0, 25)]

16

Salut,

Merci Pen^² pour ton tuyau. Semaine de partiel oblige je vais mettre ca un peu de coté (mais juste un peu ^^).


To be continued

Fritzouille

Nous ne sommes jamais là par hasard.

17