Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Mer 21 Mar 2012, 15:59
Bonjour,
lors du premier tour du TI-Concours, en basic il a fallut faire un morpion.
J'ai essayé de faire une version avec IA, mais elle bug (ça encore, c'est un peu normal pour un programme non finit), mais surtout j'ai une variable (B) qui prend des valeurs qu'elle ne devrait pas pouvoir (d'après mes prédiction) prendre : quand on lance le mode 1 joueur, puis qu'on fait 1 puis (une fois que l'IA a jouée) 2 et enfin après que l'IA a joué [On] pour quitter, B vaut 3 allors que la seule commende qui devrait affecter B est un "For(B,0,2 " et ce même si au départ je donne une valeur quelconque à B.
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mer 21 Mar 2012, 21:25
Non la solution est celle annoncée par Sangohan38.
B prends successivement les valeur 0,1,2 pendant l'execution de la boucle puis 3 après l'execution car les For effectuent l'incrément avant le test de sortie.
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Mer 21 Mar 2012, 21:26
Merci, j'avais jamais remarqué cet aspect du for ( ).
Sinon, pour les randBin( , en les tilisant de la manière randBin(1,P) , on optient on a une propabilité de P d'optenir 1 et sinon on optient 0. Si on remplace le 1 par n, dans ce cas la TI répète n fois l'opération et affiche la somme des 0 et des 1. On peut rajouter un 3ème argument : le nombre indique la dimmention de la liste à remplir par ce procédé.
Sinon, le princincipe de l'IA est :
1) la TI vérifie si elle peut gagner (C=1) en testant pour chaque ligne, colone ou diagonale s'il ne manque qu'un emplacement à la TI pour avoir la ligne complete (si oui, elle s'y met)
2) elle fait la même chose mais en cherchant des emplacements adverses (pour empecher l'adversaire de gagner.
Merci beaucoup
Sandro
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mer 21 Mar 2012, 21:42
Pourtant nous avons eu l'occasion de discuter des For plusieurs fois sur deux forum et un tchat.
Je m'attendait à une IA avec plus d'options encore sachant comment tu sais parfois me surprendre.
Je suis surpris par l'usage des ranBin(1,...=K²) sachant que la probabilité vaut 0 ou 1.
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Mer 21 Mar 2012, 21:51
javais l'intention d'en mettre plus, mais j'ai essayé de régler le bug avant d'envisager de continuer.
Sinon, la paranthèse du randBin( est refermée AVANT les listes : mon idée était de soumettre le test à une propabilité (dans mon programme de test 100% (1er ligne du programme)) affin de pouvoir régler la difficulté. En plus, au morpion, sauf fautes d'innatention, il est impossible de perdre, il est donc nécessaire de programmer une "faiblesse" de l'IA, mais qui soit variable (pas qu'estion qu'une suite de mouvements mêne sistématiquement à une victoire pour l'humain.
Sandro
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mer 21 Mar 2012, 22:10
Effectivement, j'avais mal lu la parenthèse et donc le randBin sert bien à générer un peu d'aléatoire commandé.
Ta logique d'élaboration d'IA me convient tout-à-fait.
(j'ai fait la même chose pour le jeu des 21 alumettes. Mon IA a trois niveaux.
-dans tous les niveaux, jouer un coup gagnant si possible à la fin
-en niveau facile, jeu aléatoire
-en niveau moyen, jouer soit un coup infaillible (si possible) soit jouer aléatoirement
-en niveau difficile, jouer un coup infaillible si possible sinon aléatoire)
Pense à éditer ton premier post qui dérange la page à cause de la longue ligne de test.
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)