SVM n°18 juin 1985
SVM n°18 juin 1985
  • Prix facial : 16 F

  • Parution : n°18 de juin 1985

  • Périodicité : mensuel

  • Editeur : Excelsior Publications

  • Format : (203 x 280) mm

  • Nombre de pages : 188

  • Taille du fichier PDF : 195 Mo

  • Dans ce numéro : l'amour par Minitel / l'Amstrad CPC 664 enfin un ordinateur à prix réaliste.

  • Prix de vente (PDF) : gratuit

Dans ce numéro...
< Pages précédentes
Pages : 92 - 93  |  Aller à la page   OK
Pages suivantes >
92 93
position de ce tableau indique que le trait correspondant a déjà été tracé, dans le cas contraire on trouvera la valeur zéro. Ce type de codage implique que certaines arètes du quadrillage sont référencées deux fois, aux deux cases qui sont situées de chaque côté du trait correspondant. Cela nécessite de veiller à bien modifier conjointement les deux cases sous peine d'obtenir des résultats ex- LA RÈGLE DE BASE Le joueur qui a le trait peut prendre la case du coin..mais il doit alors rejouer. 1 I• 4 I 1 I 2• s -t-t. 3 LE CODAGE DES CARRÉS Les deux programmes utilisent un tableau AR (n,n, 4) pour coder les traits tracés par les joueurs. Dans cet exemple, qui montre la case située en ligne i et dans la colonne j, le trait placé est codé AR (1,j, 1). Les arétes sont numérotées de 1 à 4. trémement curieux. Notre premier programme• Petits carrés 1• utilise ce codage pour vous permettre de jouer avec un partenaire humain, mais ne joue pas par lui-mème. Il s'agit d'un sous-ensemble du programme Petits carrés 2 » qui, lui, est capable de jouer. Nous vous suggérons de commencer par taper « Petits carrés 1 » et de vérifier qu'il fonctionne de manière satisfaisante. Les lignes 10 000 à 12 030 des deux programmes sont strictement identiques. Pour transformer le programme 1 en programme 2, il suffit de lui rajouter les lignes 20 000 et suivantes, et de remplacer les lignes 10 à 1 030 par les lignes 10 à 1 050 du programme 2. L'algorithme de choix du coup par le programme est assez simple. Il n'y a en particulier pas d'exploration de l'arbre du jeu, ce qui aurait rendu le programme désespérément lent. Pour pallier ceci, le programme évalue en détail la présente position suivant le schéma de décision suivant : - Y-a-t-il une case à prendre ? - Si oui. Y-a-t-il encore des coups jouables sans perdre de case ? - si oui alors prendre la case. - si non entamer la procédure de gain en fin de partie. - Si non. Y-a-t-il encore des coups jouables sans perdre de case ? - si oui en jouer un au hasard. - si non entamer la procédure de perte en fin de partie. Aux petits carrés, les deux joueurs essayent le plus longtemps possible d'éviter de donner des cases à l'adversaire, mais il arrive un moment où il n'est pas possible d'éviter la perte de cases. A partir de ce moment, les cases sont regroupées en chaînes qui seront fermées en cascade. Lorsque le programme détecte cette situation, il entame des procédures spéciales. S'il est en situation de gain, il va s'efforcer de conserver l'avantage et si il est en situation de perte, il concédera à l'adversaire la chaîne de cases la plus courte. Ces deux procédures sont assez complexes, puisqu'elles nécessitent la reconnaissance et l'exploration de ces chaînes sur le quadrillage ; c'est elles qui constituent le coeur du programme. Le programme• Petits carrés 2 » n'est pas un champion, mais constitue un adversaire honorable et assez rapide sur des terrains jusqu'à 8 x 8 cases (ce qui représente 144 coups à jouer). Par défaut, la taille du quadrillage a été fixée à 5 X 5. Si vous voulez la modifier, il suffit de changer la valeur de N en ligne 10. Il est possible d'améliorer les performances de ce programme, en particulier au niveau des coups de milieu de partie qui sont joués au hasard. Il existe des règles d'estimation de position basées sur des considérations de parité, mais une telle étude dépasse le cadre de notre Cahier de programmes. Les fanatiques pourront cependant se reporter à l'ouvrage américain Winning ways for your mathematical plays (volume 2, chapitre 16) de Berlekamp, Conway et Guy, publié chez Academic Press et que l'on peut trouver à la librairie Offilib, 48, rue Gay-Lussac à Paris. Frédéric NEUVILLE Y V À QUI GAGNE PERD En fin de partie chaque coup entraîne la concession à l'adversaire d'un certain nombre de cases. Celles-ci se regroupent en chaînes qui sont prises en cascade. Sur tous les exemples montrés ici, le premier qui joue un trait dans l'une de ces zones hachurées perd toute la chaîne correspondante en faveur de son adversaire. Il importe donc d'évaluer correctement la longueur de ces chaînes pour céder le moins possible de cases à l'adversaire. 92 SCIENCE & VIE MICRO N°18 - JUIN 1985
PETITS CARRÉS le partie 10 N = 2 20 DIM CA(N,N),AR(N,N,4),TT(2) 100 NC = 2 * N t (N + 1) 1000 PRINT : PRINT "PETITS CARRES" : PRINT " " : PRINT 1005 JN = 1 1010 IF NC = 0 THEN 12000 1015 GOSUB 10000 : PRINT "JOUEUR " ; JN : PRINT : GOSUB 10900 : IF FI = 1 GOTO 1010 1020 JN = JN + 1 : IF JN = 3 THEN JN = 1 1030 GOTO 1010 10000 PRINT : FOR J = 0 TO N : PRINT " " ; J NEXT J : PRINT 10003 PRINT "0+" FOR J = 1 TO N 10005 RI = " " 10010 IF AR(1,J,1) 1 THEN RI = "-" 10020 PRINT R$ ; "+" NEXT 10030 FOR I = 1 TO N 10040 PRINT : PRINT " "R$ IF AR(I,1,4) = 1 THEN RI = " ! " 10050 PRINT RI ; 10060 FOR J = 1 TO N:R$ = " " : IF CA(I,J) = 1 THEN RI = "X" 10070 IF CA(I,J) = 2 THEN RI = "0" 10080 PRINT R$R$ " " 10090 IF AR(I,J,2) = 1 THEN RI = " ! " 10100 PRINT RE NEXT J 10110 PRINT : PRINT I ; "+" FOR J = 1 TO N 10120 RI = " " 10130 IF AR(I,J,3) = 1 THEN RI = "-" 10140 PRINT RI ; "+" NEXT J 10150 NEXT I 10160 PRINT : PRINT : RETURN 10900 NC = NC - 1 11000 F1 = 0 : PRINT : INPUT "POINT DE DEPART : "0,Y 11010 IF X < 0 OR X > N THEN 11000 11020 IF Y < 0 OR Y > N THEN 11000 11030 PRINT : INPUT "POINT D'ARRIVEE : " ; XI,Y1 11040 IF X1 < 0 OR XI > N TIEN 11000 11050 IF Yi < 0 OR YI > N THEN 11000 11060 IF X = X1 THEN 11200 11070 IF (X1 - X) < > 1 TIEN 11000 11080 IF Y < > YI THEN 11000 11090 IF Y = N THEN 11150 11095 IF AR(X1,Y + 1,4) = 1 THEN 11000 11100 AR(X1,Y + 1,4) = 1:F2 = 1 : FOR K = 1 TO 4 : IF AR(X1,Y + 1,K) = 0 THEN F2 = 0 11110 NEXT K : IF F2 = 1 TIEN CA(X1,Y + 1) = JN:F1 = 1 11150 IF Y = 0 THEN 11300 11155 IF AR(X1,Y,2) = 1 THEN 11000 11160 AR(X1,Y,2) = 1:F2 = 1 : FOR K = 1 TO 4 : IF AR(X1,Y,K) = 0 THEN F2 = 0 11170 NEXT K : IF F2 = 1 THEN CA(X1,Y) = JN:F1 = 1 11180 GOTO 11300 11200 IF YI - Y < > 1 THEN 11000 11210 IF X = N THEN 11250 11215 IF AR(X + 1,Y1,1) = 1 THEN 11000 11220 AR(X + 1,Y1,1) = 1:F2 = 1 : FOR K = 1 TO 4 : IF AR(X + 1,Y1,K) = 0 THEN F2 = 0 11230 NEXT K : IF F2 = 1 THEN CA(X + 1,Y1) = JN:F1 = 1 11250 IF X = 0 THEN 11300 11255 IF AR(X,Y1,3) = 1 THEN 11000 11260 AR(X,Y1,3) = 1:F2 = 1 : FOR K = 1 TO 4 : IF AR(X,Y1,K) = 0 THEN F2 = 0 11270 NEXT K : IF F2 = 1 THEN CA(X,Y1) = JN:F1 = 1 11300 RETURN 12000 GOSUB 10000 : FOR I = 1 TO N : FOR J = 1 TO N : TT(CA(I,J)) = TT(CA(I,J)) + 1 : NEXT J : NEXT I 12010 IF TT(1) = TT(2) THEN PRINT : PRINT "MATCH NUL" : END 12020 R = 1 : IF TT(2) > TT(1) THEN R = 2 12030 PRINT "LE JOUEUR " ; R ; " GAGNE PAR " ; TT(R) ; " A " ; N t N - TT(R) : END 10 N = 5 15 NC = 2 * N * (N + 1) 2e partie N est le nombre de carrés par coté NC est nombre de coups dans la partie 20 DIM CA(N,N),AR(N,N,4),TT(2),PG(4 t N t N,3), EV(N,N),EX(N,N),PE(2,3) CA() est le tableau des cases déja fermées AR() est la liste des arétes de chaque carré PG() est la liste des coups jouables sans perdre de cases EV() contient le nombre de traits déja tracés autour de chaque case 1000 PRINT : PRINT "PETITS CARRES" : PRINT " " : PRINT 1005 JN = 2 : INPUT "VOULEZ VOUS COMMENCER ? " ; RI : IF LEFT$ (R$,1) = "0" THEN JN = 1 1010 IF NC = 0 THEN 12000 1013 IF JN = 2 THEN 1040 coup du joueur humain 1015 GOSUB 10000 : PRINT "A VOUS DE JOUER " : PRINT : GOSUB 10900 : IF FI = 0 THEN JN = 2 1020 GOTO 1010 coup du programme 1040 GOSUB 10000 : GOSUB 20000:NC = NC - 1 : IF Fl = 0 THEN JN = 1 1050 GOTO 1010 sous-programme d'affichage de la position 10000 PRINT : FOR J = 0 TO N : PRINT " " ; J NEXT J : PRINT 10003 PRINT "0+" FOR J = 1 TO N 10005 RI = " " 10010 IF AR(1,J,I) = 1 THEN RI = "-" 10020 PRINT R$ ; "+" NEXT J 10030 FOR I = 1 TO N 10040 PRINT : PRINT " "R$ IF AR(1,1,4) = 1 THEN RI " ! " 10050 PRINT RI ; Si-and 10060 FOR J = 1 TO N:R$ = " " : IF CA(I,J) = 1 THEN RI = "X" 10070 IF CA(I,J) = 2 THEN RI = "0" 10080 PRINT RIR$ = " " 10090 IF AR(I,J,2) = 1 THEN RI = " ! " 10100 PRINT Ri NEXT J 10110 PRINT : PRINT I ; "+" FOR J = 1 TO N 10120 RI = " " 101301F AR(I,J,3) = 1 THEN RI = - 10140 PRINT RI ; "+" NEXT J 10150 NEXT I 10160 PRINT : PRINT : RETURN sous-programme de saisie et de comtrole du coup du joueur 10900 NC = NC - 1 11000 F1 = 0 : PRINT : INPUT "POINT DE DEPART : " ;X,Y 11010 IF X < 0 OR X > N THEN 11000 11020 IF Y < O OR Y > N THEN 11000 11030 PRINT : INPUT "POINT D'ARRIVEE : " ; X1,Y1 11040 IF X1 < 0 OR X1 > N THEN 11000 11050 IF YI < O OR VI > N THEN 11000 11060 IF X = XI THEN 11200 11070 IF (XI - X) < > 1 TIEN 11000 11080 IF Y < > Yi THEN 11000 11090 IF Y = N THEN 11150 11095 IF AR(X1,Y + 1,4) = 1 THEN 11000 11100 AR(X1,Y + 1,4) = 1:F2 = 1 : FOR K = 1 TO 4:IF AR(X1,Y+1,K) = 0 THEN F2 = 0 11110 NEXT K:IF F2 = 1 THEN CA(X1,Y + 1) = JN:F1 = 1 11150 IF Y = 0 THEN 11300 11155 IF AR(X1,Y,2) = 1 THEN 11000 11160 AR(X1,Y,2) = 1:F2 = 1 : FOR K = 1 TO 4 : IF AR(X1,Y,K) = 0 THEN F2 = 0 Suite page 94 SCIENCE & VIE MICRO re 18 - JUIN 1985 93



Autres parutions de ce magazine  voir tous les numéros


Liens vers cette page
Couverture seule :


Couverture avec texte parution au-dessus :


Couverture avec texte parution en dessous :


SVM numéro 18 juin 1985 Page 1SVM numéro 18 juin 1985 Page 2-3SVM numéro 18 juin 1985 Page 4-5SVM numéro 18 juin 1985 Page 6-7SVM numéro 18 juin 1985 Page 8-9SVM numéro 18 juin 1985 Page 10-11SVM numéro 18 juin 1985 Page 12-13SVM numéro 18 juin 1985 Page 14-15SVM numéro 18 juin 1985 Page 16-17SVM numéro 18 juin 1985 Page 18-19SVM numéro 18 juin 1985 Page 20-21SVM numéro 18 juin 1985 Page 22-23SVM numéro 18 juin 1985 Page 24-25SVM numéro 18 juin 1985 Page 26-27SVM numéro 18 juin 1985 Page 28-29SVM numéro 18 juin 1985 Page 30-31SVM numéro 18 juin 1985 Page 32-33SVM numéro 18 juin 1985 Page 34-35SVM numéro 18 juin 1985 Page 36-37SVM numéro 18 juin 1985 Page 38-39SVM numéro 18 juin 1985 Page 40-41SVM numéro 18 juin 1985 Page 42-43SVM numéro 18 juin 1985 Page 44-45SVM numéro 18 juin 1985 Page 46-47SVM numéro 18 juin 1985 Page 48-49SVM numéro 18 juin 1985 Page 50-51SVM numéro 18 juin 1985 Page 52-53SVM numéro 18 juin 1985 Page 54-55SVM numéro 18 juin 1985 Page 56-57SVM numéro 18 juin 1985 Page 58-59SVM numéro 18 juin 1985 Page 60-61SVM numéro 18 juin 1985 Page 62-63SVM numéro 18 juin 1985 Page 64-65SVM numéro 18 juin 1985 Page 66-67SVM numéro 18 juin 1985 Page 68-69SVM numéro 18 juin 1985 Page 70-71SVM numéro 18 juin 1985 Page 72-73SVM numéro 18 juin 1985 Page 74-75SVM numéro 18 juin 1985 Page 76-77SVM numéro 18 juin 1985 Page 78-79SVM numéro 18 juin 1985 Page 80-81SVM numéro 18 juin 1985 Page 82-83SVM numéro 18 juin 1985 Page 84-85SVM numéro 18 juin 1985 Page 86-87SVM numéro 18 juin 1985 Page 88-89SVM numéro 18 juin 1985 Page 90-91SVM numéro 18 juin 1985 Page 92-93SVM numéro 18 juin 1985 Page 94-95SVM numéro 18 juin 1985 Page 96-97SVM numéro 18 juin 1985 Page 98-99SVM numéro 18 juin 1985 Page 100-101SVM numéro 18 juin 1985 Page 102-103SVM numéro 18 juin 1985 Page 104-105SVM numéro 18 juin 1985 Page 106-107SVM numéro 18 juin 1985 Page 108-109SVM numéro 18 juin 1985 Page 110-111SVM numéro 18 juin 1985 Page 112-113SVM numéro 18 juin 1985 Page 114-115SVM numéro 18 juin 1985 Page 116-117SVM numéro 18 juin 1985 Page 118-119SVM numéro 18 juin 1985 Page 120-121SVM numéro 18 juin 1985 Page 122-123SVM numéro 18 juin 1985 Page 124-125SVM numéro 18 juin 1985 Page 126-127SVM numéro 18 juin 1985 Page 128-129SVM numéro 18 juin 1985 Page 130-131SVM numéro 18 juin 1985 Page 132-133SVM numéro 18 juin 1985 Page 134-135SVM numéro 18 juin 1985 Page 136-137SVM numéro 18 juin 1985 Page 138-139SVM numéro 18 juin 1985 Page 140-141SVM numéro 18 juin 1985 Page 142-143SVM numéro 18 juin 1985 Page 144-145SVM numéro 18 juin 1985 Page 146-147SVM numéro 18 juin 1985 Page 148-149SVM numéro 18 juin 1985 Page 150-151SVM numéro 18 juin 1985 Page 152-153SVM numéro 18 juin 1985 Page 154-155SVM numéro 18 juin 1985 Page 156-157SVM numéro 18 juin 1985 Page 158-159SVM numéro 18 juin 1985 Page 160-161SVM numéro 18 juin 1985 Page 162-163SVM numéro 18 juin 1985 Page 164-165SVM numéro 18 juin 1985 Page 166-167SVM numéro 18 juin 1985 Page 168-169SVM numéro 18 juin 1985 Page 170-171SVM numéro 18 juin 1985 Page 172-173SVM numéro 18 juin 1985 Page 174-175SVM numéro 18 juin 1985 Page 176-177SVM numéro 18 juin 1985 Page 178-179SVM numéro 18 juin 1985 Page 180-181SVM numéro 18 juin 1985 Page 182-183SVM numéro 18 juin 1985 Page 184-185SVM numéro 18 juin 1985 Page 186-187SVM numéro 18 juin 1985 Page 188