Dots-and-Boxes (Prikk-og-bokser) analyseprogrammer

Original English version: https://wilson.engr.wisc.edu/boxes/program.shtml

Analyseprogrammet er nå ferdig. Dette er den nåværende utgitte versjonen datert 30. april 2002. Send e-postadressen din til [email protected] for å bli varslet om nye utgivelser som fikser feil.

Analysepakken har to programmer: analyse, som gjør analysen, og spill, som viser sammendrag av analyseresultatene. De analyzeL og playL programmene også gjøre sprø trekk analyse, å plassere en  v  suffiks på en score hvis spilleren A må gjøre det neste sprø trekk eller en ^ endelse hvis spiller B må. Versjonen med lunt flytte-analysere kan ikke håndtere poengsummer større enn 31 i absolutt verdi. Den vanlige versjonen kan håndtere poeng opp til 127 i absolutt verdi. Hvis du bruker loony move -analyseprogrammet på et problem der antall bokser (pluss den absolutte verdien av en siste trekkstraff) overstiger 31, bør du sjekke resultatene ved også å kjøre analysen ved hjelp av den normale versjonen.

Inngangen til analyseprogrammet er en tekstfil som beskriver problemet. For eksempel, for det svenske spillet 3×5 er denne filen:

0
+-+-+-+-+-+
|         |
+ + + + + +
|         |
+ + + + + +
|         |
+-+-+-+-+-+

Tallet på den første linjen er enten 0 eller et negativt tall som gir en straff for spilleren som gjør det siste trekket. Dette er nyttig hvis du analyserer deler av et spill, og det er kjent at den som først beveger seg inn i den andre delen av spillet, mister så mange firkanter. Jeg har analysert problem 11.16 med straffer av økende størrelse.

Den første linjen kan ha ytterligere to numre: antall megabyte RAM datamaskinen din og antall gigabyte ledig diskplass tilgjengelig. Standardverdiene er 16 og 1. Du bør bruke verdiene for din egen PC.

De tre tallene kan etterfølges av en A eller B som angir hvilken spiller som er på farten. Dette kan være nødvendig hvis det allerede har vært et tøft trekk i spillet. Bokser som allerede er fanget, bør også fylles ut med A og B.

Filen skal ha en .txt -utvidelse. Jeg kalte denne filen swed.txt3 × 3.txt3 × 5.txt og iceland.txt er andre eksempler på inndatafiler. (3×5.txt har verdier for RAM og ledig diskplass. Sørg for at de er passende før du bruker det.) Begge programmene starter med å be om navnet på problemet, som er navnet på tekstfilen som utelater .txt forlengelse.

Diskplassen som trengs for å lagre en fullstendig analyse er litt større enn 2n byte hvor n er antall linjer som ikke er fylt ut ennå. En kjede teller som en enkelt åpen linje. Dette reduseres for symmetriske posisjoner og posisjoner der hjørnene er tomme. 220 byte er en megabyte, 230 byte er en gigabyte. Analysefilene lagres i en katalog som er oppkalt etter problemet. Dersom fullstendig analyse ikke vil passe inn, det analyze Programmet lagrer den analyse for så mange innledende trekk som vil passe. Den trekk -programmet gjør en analyse i-minne etter at denne åpning boken er oppbrukt for å dekke resten av trekkene.

På min maskin ble swed.txt og 3×3.txt analysert på mindre enn et minutt. iceland.txt tok en halv time. 3×5.txt tok tre dager. (Programmet er skrevet slik at det kan starte der det sluttet etter at det ble avbrutt eller etter en omstart. Dermed kan de tre dagene spres over netter og helger.) Hver ekstra åpne linje dobler tiden, RAM og diskplass som kreves av problemet.

Dette programmet kan ikke analysere 5×5-spillet. Imidlertid har 5×5 -spillet blitt analysert av William Fraser ved hjelp av sitt eget program.

Når analysen er gjort, bruker du play programmet til å vise resultatet. For eksempel for det svenske spillet:

   a  b  c  d  e  f  g  h  i  j  k

a  +-----+-----+-----+-----+-----+
   |                             |
b  |    -1    -1    -1    -1     |
   |                             |
c  + -1  +  3  +  1  +  3  + -1  +
   |                             |
d  |     5     5     5     5     |
   |                             |
e  + -1  +  3  +  1  +  3  + -1  +
   |                             |
f  |    -1    -1    -1    -1     |
   |                             |
g  +-----+-----+-----+-----+-----+

Skriv inn trekk for spiller A (to bokstaver); .=stop; <=back; !=reset: be

   a  b  c  d  e  f  g  h  i  j  k

a  +-----+-----+-----+-----+-----+
   |           |                 |
b  |     5     |     1     1     |
   |           |                 |
c  +  5  +  5  +  1  +  5  +  1  +
   |                             |
d  |     5     5     5     5     |
   |                             |
e  +  1  +  5  +  1  +  5  +  3  +
   |                             |
f  |     1     5    -1     3     |
   |                             |
g  +-----+-----+-----+-----+-----+

Skriv inn trekk for spiller B (two letters); .=stop; <=back; !=reset: fg

   a  b  c  d  e  f  g  h  i  j  k

a  +-----+-----+-----+-----+-----+
   |           |                 |
b  |    -7     |    -1    -5     |
   |           |                 |
c  + -7  + -7  + -1  + -7  + -5  +
   |                             |
d  |    -3    -3    -3    -3     |
   |                             |
e  + -5  + -7  + -1  + -7  + -7  +
   |                 |           |
f  |    -5    -1     |    -7     |
   |                 |           |
g  +-----+-----+-----+-----+-----+

Enter move for player A (to bokstaver); .=stop; <=back; !=reset: .
Ferdig.

Tallene er den resulterende poengsummen med best spill hvis spilleren på farten velger den tilsvarende linjen. Positive tall er gevinster for den første spilleren som beveger seg (spiller A); negative tall er gevinster for den andre spilleren som beveger seg (spiller B). Dermed, med beste spill, vinner den første spilleren med 5. Ovenstående undersøkte analysen for et av de verste spillene for den første spilleren. For å vinne må den andre spilleren gjøre akkurat det riktige trekket. For å holde tapene til et minimum må den første spilleren umiddelbart gi bort en firkant.

Analysen av det islandske spillet tok omtrent en halv time på min PC. Jeg kunne ikke løpe inn på Sun fordi den trengte 230 byte (1 gigabyte) ledig diskplass, og jeg hadde ikke så mye plass på Sun-kontoen min. Den første skjermen fra play programmet er:

   a  b  c  d  e  f  g  h  i  j  k

a  + -3  + -3  + -3  + -3  + -5  +
   |
b  |    -3    -5    -3    -3    -5
   |
c  + -5  + -3  + -3  + -3  + -3  +
   |
d  |    -5    -3    -1    -3    -3
   |
e  + -5  + -5  + -5  + -5  + -3  +
   |
f  |    -5    -3    -1    -3    -5
   |
g  +-----+-----+-----+-----+-----+

Dermed er resultatet med beste spill en seier for den andre spilleren med 1 kvadrat.

For en oversikt over hvordan analysen fungerer, se Prikk-og-bokser-analysemetodikk.

Instruksjoner for Unix
Lag en katalog kalt: boxes ved hjelp av mkdir boxes i Unix-kommandovinduet. Lagre kopier av følgende filer i den katalogen:

For å lagre en kopi av en fil, må du først vise filen ved å klikke på lenken og deretter bruke “Lagre som…” på Fil -menyen i nettleseren din. Bytt til boxes ved hjelp av cd boxes i Unix-kommandovinduet. Deretter skriver du inn kommandoen: make Dette oppretter analyzeanalyzeL, play og playL programmer samt null byte all filer, som du ikke trenger å beholde. Lag deretter inndatafilen ved hjelp av vi eller et annet filredigeringsprogram. (Eller du kan kopiere inndatafilene som er koblet tidligere.) Skriv deretter inn kommandoen: analyze eller analyzeL Når det er gjort, skriver du inn kommandoen play eller playL avhengig av hvilket analyseprogram du kjørte.

Instruksjoner for PCer

Lag en mappe som heter Boxes på den platen som har mest ledig plass. Lagre kopier av følgende programmer i den mappen:

For å lagre en kopi av et program, høyreklikk på koblingen og velg "Lagre lenke som...". Åpne Boxes mappe. Lag deretter inndatafilen ved å bruke: Start -> Programmer -> Tilbehør -> NotePad (Eller du kan kopiere inndatafilene som er koblet tidligere.) Dobbeltklikk deretter på: analyser eller analyserL Når det er gjort, dobbeltklikker du på play eller playL avhengig av hvilket analyseprogram du kjørte.

PHP-programmer for Internett

Spiller med en allerede fullstendig analyse. Inkluderer lure flytte flagg. Dette er stort sett en oversettelse av playL fra C til PHP.

David Wilson / [email protected]