[GPC] laatste opgave

Pagina: 1 2 Laatste
Acties:
  • 282 views sinds 30-01-2008
  • Reageer

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Topicstarter
Dit is de laatste opdracht:
deze is ingestuurd door dUSTY en hij zal dan ook alle vragen beantwoorden :)

Deze opgave loopt tot 12 januari.
oplossingen naar gotcoders@gdries.com
<hr>

Opdracht 4: -Het AI Spel-

Dit spel heeft geen aansprekende naam, echter wel een aantal regels :P .
Er wordt gespeeld met een speelvak onderverdeeld in vakken. ( bijvoorbeeld 10x10 )

Er zijn een x aantal spelers ( 2 tot 9 spelers ).

Elke speler heeft zijn eigen "kleur" die hier wordt voorgesteld door een getal ( 1 t/m 9)

Bij de eerste ronde mag elke speler 1 zet doen. Hierbij geven ze aan welke vak ze willen hebben.

Voor het kiezen van een vak, geld dat deze altijd leeg moet zijn of al de kleur hebben van de speler.
Betekent ook dat je vakken kunt kiezen die compleet uit elkaar liggen, je vakken hoeven namelijk niet tegen elkaar aan te liggen.

Als een vak leeg is is het aantal punten van de vak 0.

Als de speler een vak kiest (die uiteraard geldig is) krijgt die vak de kleur van de speler.

Ook geldt dat de waarde van die vak met 1 punt wordt verhoogd. Dus als er 2 punten op staan en men kiest dat vak wordt het aantal punten 2+1=3 punten.

Uiteraard om het moeilijker te maken geldt dat als het vak het aantal punten ( of meer ) van het aantal aanliggende beschikbare vakken heeft dat deze wordt verminderd met het aantal aanliggende vlakken, de aanliggende vlakken krijgen de kleur van de speler en bij al die vakken wordt dus 1 punt opgeteld.
Als een vlak 0 punten heeft is het vak weer vrij en kan het bezet worden door elke speler (dus kleur van het vak wordt gewist).

Beschikbare vakken zijn de vakken die een speler aan het begin van het spel zou kunnen kiezen (dus waar geen muren staan).

Muren zijn vakken die compleet bezet zijn en nooit gekozen kunnen worden door de speler, het gehele vak van 10x10 is dus omgeven met een muur.
Er kunnen ook muren in het speelveld zelf staan (waardoor het aantal beschikbare vakken in het veld dus minder wordt).

Wat dus leuk wordt is dat als het vak die een waarde erbij heeft gekregen door die "explosie" ook het aantal (of meer) van zijn aanliggende vakken heeft dat deze zich ook weer gaat opdelen.

Wat voorbeeldjes (dat zal wel nodig zijn inmiddels ;) ):

We gaan naar de hoek kijken.
code:
1
2
3
4
5
XXXXX
X123X
X456X
X789X
XXXXX

We hebben even elk vak een nummer gegeven.

De muren zijn X.

als je naar vak 1 kijkt zie je dat er maar 2 aanliggende vakken zijn.
We zetten er 1 punt op.
code:
1
2
3
4
5
XXXXX
X1  X
X   X
X   X
XXXXX

Als we er nu nog een punt op zetten zou je krijgen
code:
1
2
3
4
5
XXXXX
X2  X
X   X
X   X
XXXXX

Echter is dit het aantal van aanliggende vakken. dus wordt deze opgedeeld daarover.
code:
1
2
3
4
5
XXXXX
X 1 X
X1  X
X   X
XXXXX

Ander voorbeeldje:
code:
1
2
3
4
5
XXXXX
X12 X
X   X
X   X
XXXXX

We zetten nu 1 punt erbij op vak 2.
code:
1
2
3
4
5
XXXXX
X13 X
X   X
X   X
XXXXX

3 is toevallig het aantal aanliggende vakken. dus verdelen we deze daaronder.
code:
1
2
3
4
5
XXXXX
X2 1X
X 1 X
X   X
XXXXX

Je ziet nu ook dat het aantal in vak 1 het aantal heeft van zijn aanliggende vakken dus gaan we die ook weer opdelen.
code:
1
2
3
4
5
XXXXX
X 11X
X11 X
X   X
XXXXX

Zo zie je dus dat er een kettingreactie kan ontstaan.


Na de eerste ronde heeft een speler (a) ALTIJD minimaal EEN vak nodig om verder te kunnen spelen, betekent dus als deze speler (a) zijn vakken verliest doordat een tegenstander alle resterende vakken van deze speler veroverd dat speler (a) is uitgespeeld en heeft verloren.

De winnaar van het spel is dus de kleur die als laatste overblijft.

De rondes gaan altijd in dezelfde volgorde.

Invoer:

De invoer is opgebouwd als volgt:

Eerste regel heeft slechts EEN nummer dit nummer is het nummer van de speler.

Eerst komt het speelveld met de eigenaren. een spatie betekent dat het veld onbezet is.
Een X betekent dat er een muur staat.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
1
XXXXXXXXXXXX
X1   2     X
X     4 X
X  2  1    X
X    3  X
X  1     X
X       X
X   3   X
X 2 4 X
X   3   X
X   4   X
XXXXXXXXXXXX

Hierna komt een witregel (een lege regel) Daarna komt hetzelfde veld overnieuw maar dan met het aantal punten dat op elk veld staat.
code:
1
2
3
4
5
6
7
8
9
10
11
12
XXXXXXXXXXXX
X1000100000X
X0000000010X
X0010010000X
X0000000100X
X0010000000X
X0000000000X
X0000001000X
X0100000010X
X0001000000X
X0000001000X
XXXXXXXXXXXX

Dit is alle invoer die je elke keer krijgt.

let op
Je programma mag per zet maximaal maar 1 of 2 minuten lopen.

Er is ALTIJD een aanliggend vak, er zijn geen afzonderlijke gedeelten.
(dus het hele speelveld is compleet met elkaar verboden)
Dus niet zoiets als:
code:
1
2
3
4
XXXXXXX
X  X  X
X  X  X
XXXXXXX

Alles heeft EEN doorgang.
De uitvoer moet slechts bestaan uit 2 regels. Deze 2 regels moet eerst de X coordinaat zijn.
De volgende regel zal de Y coordinaat zijn waar je een punt wilt neerzetten.

In dit voorbeeld is de linksbovenste BESCHIKBARE veld (die dus door speler 1 is bezet) de coordinaat 1,1 .

Indien de coordinaat teruggegeven een illegale zet is ( veld is bezet door een andere speler, of er staat een muur, of het is buiten het speelveld ) wordt de zet als illegaal gekenmerkt.
En de beurt van de speler is voorbij (dus een soort pass).
Als men express een pass wilt doen *MOET* men een (0,0) teruggeven en dat wordt dan aangemerkt als een "pass".


tot slot:
Als men hun eigen logaritme goed documenteerd zal dusty alle uiteindelijke logaritmen vertalen naar delphi (indien men er niets tegen heeft) en het verwerken in het spel zelf en men kan dat spel dan gratis (uiteraard) downloaden, en spelen ( als mens tegen computer of tegen meerdere computers).

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

zo de grote klapper >:)

veel plezier ermee


snel inzenden heeft dit keer geen nut
jullie komen tegen elkaar te spelen

Doet iets met Cloud (MS/IBM)


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

test invoer is dus:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
1
XXXXXXXXXXXX
X1   2     X
X     4 X
X  2  1    X
X    3  X
X  1     X
X       X
X   3   X
X 2 4 X
X   3   X
X   4   X
XXXXXXXXXXXX

XXXXXXXXXXXX
X1000100000X
X0000000010X
X0010010000X
X0000000100X
X0010000000X
X0000000000X
X0000001000X
X0100000010X
X0001000000X
X0000001000X
XXXXXXXXXXXX

:P

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op vrijdag 28 december 2001 11:32 schreef D2k het volgende:
[..]
snel inzenden heeft dit keer geen nut
jullie komen tegen elkaar te spelen
Hoe slimmer de AI hoe meer kans op de punten >:)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • RickN
  • Registratie: December 2001
  • Laatst online: 14-06-2025
Vragen:

-Hoe krijg je de zetten van andere spelers?
-Bij meer dan 2 spelers, hoe weet je dan wanneer je aan de beurt bent?
edit:
Mmm, deze twee vragen kan ik nu denk ik zelf wel beantwoorden. Het lijkt me dat ik elke keer als er een zet van mij wordt verwacht gewoon het hele speelveld weer als input krijg, toch? Dan heb je automatisch weer de nieuwe situatie waar de zetten van alle overige spelers in zijn verwerkt.


-Is het speelveld altijd vierkant?
-Wat zijn de maximale afmetingen van het speelveld?
-Ik heb er zelf nog niet naar gekeken, maar hebben jullie er rekening mee gehouden dat er in bepaalde gevallen geen einde aan dit spel zou kunnen komen? Zo kan het spel LIFE ook in een oneindige loop terecht komen.

Waarschijnlijk komen er meer...

He who knows only his own side of the case knows little of that.


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op vrijdag 28 december 2001 12:03 schreef RickN het volgende:
Vragen:

-Hoe krijg je de zetten van andere spelers?
Krijg je niet :+
-Bij meer dan 2 spelers, hoe weet je dan wanneer je aan de beurt bent?
edit:
Mmm, deze twee vragen kan ik nu denk ik zelf wel beantwoorden. Het lijkt me dat ik elke keer als er een zet van mij wordt verwacht gewoon het hele speelveld weer als input krijg, toch? Dan heb je automatisch weer de nieuwe situatie waar de zetten van alle overige spelers in zijn verwerkt.
Correct.
-Is het speelveld altijd vierkant?
Nee
-Wat zijn de maximale afmetingen van het speelveld?
Hou een maximale breedte en hoogte aan van 42. (dus het eigenlijke speelveld is maar 40*40) (omringd door muren)
-Ik heb er zelf nog niet naar gekeken, maar hebben jullie er rekening mee gehouden dat er in bepaalde gevallen geen einde aan dit spel zou kunnen komen? Zo kan het spel LIFE ook in een oneindige loop terecht komen.
Onmogelijk, aangezien er elke keer een nieuwe punt bij komt, hierdoor raakt het veld vol en wordt de ketting reacties die komen steeds heftiger ( Waardoor de kans dat een speler weggevaagd wordt steeds groter wordt. )
Waarschijnlijk komen er meer...
Kom maar op :P

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

snap ik het nou goed dat een programma per run één zet doet?

Localhost, sweet localhost


  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 31-08 22:49
snap ik goed dat 1 of 2 minuten uitgelegd mag worden als maximaal 2 minuten? Als niet, wat is dan het criterium?

Leuke/lastige opgave btw dusty!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op vrijdag 28 december 2001 16:58 schreef Dash2in1 het volgende:
snap ik goed dat 1 of 2 minuten uitgelegd mag worden als maximaal 2 minuten? Als niet, wat is dan het criterium?
deze beantwoord ik wel ff
JA
Leuke/lastige opgave btw dusty!
wacht maar tot je hem gaat maken
dan ga je hem haten >:)

Doet iets met Cloud (MS/IBM)


  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 31-08 22:49
Op vrijdag 28 december 2001 17:00 schreef D2k het volgende:
wacht maar tot je hem gaat maken
dan ga je hem haten >:)
Hehe, ach, testen lijkt me ook niet echt geweldig om je vrije tijd aan te besteden :P ;)

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op vrijdag 28 december 2001 11:29 schreef wasigh het volgende:
Dit is de laatste opdracht:
deze is ingestuurd door dUSTY en hij zal dan ook alle vragen beantwoorden :)
* Nielsz loopt snel weg nu hij ziet dat het door Dusty gemaakt is *

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Dusty:
waneer wordt de 'ownership' opgeheven? aan het eind van de kettingreacties of ook tijdens de ketting reactie?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Aan het einde van de move:
###### ######
#....# #....#
#.78.# #.11.#
#....# #....#
###### ######

Stap 1 van de kettingreactie:
###### ######
#.111# #....#
#.8.1# #.1?.#
#.111# #....#
###### ######

Stap 2 van de kettingreactie:
###### ######
#1221# #....#
#1.11# #..?.#
#1221# #....#
###### ######

Heeft speler 1 nu nul of een punten op het bord?

[edit]Voordat er gezeur over komt: het eerste plaatje is steeds de waarde van de velden, het tweede plaatje is steeds de eigenaar van de velden.[/edit]
[edit id=2]Telfoutje weggewerkt. Ik weet dat de bovenstaande codes niet helemaal correct zijn, maar het is meer een proof-of-concept. :-)[/edit]

Localhost, sweet localhost


  • Munters
  • Registratie: September 2000
  • Laatst online: 17-08 13:56
Dit spel heeft geen aansprekende naam...
Volgens mij is dit "Atlantis.
Het hoogste doel is een nooit stoppende kettingreactie te veroorzaken.

Of ben ik nu abuis? (meer dan 15 jaar geleden eens gezien op een introductieavond van Fanaat dacht ik).

Uit een heldere opzet met begrijpelijke algoritmes volgt logischerwijs een correct programma. Testen daarentegen kan enkel gebruikt worden om fouten aan te tonen.


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

nooit stoppende kettingreactie:
code:
1
2
3
####    ####    ####    ####    ####    ####    ####
# 1# -> #1 # -> # 1# -> #1 # -> # 1# -> #1 # -> # 1# -> etc.
####    ####    ####    ####    ####    ####    ####

Localhost, sweet localhost


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op vrijdag 28 december 2001 17:44 schreef kvdveer het volgende:
nooit stoppende kettingreactie:
[code]
uhm dat lijkt me niet
je bent hier al winnaar volgens mij :)
<edit>
en 1 explodeerd niet

Doet iets met Cloud (MS/IBM)


  • RickN
  • Registratie: December 2001
  • Laatst online: 14-06-2025
Op vrijdag 28 december 2001 17:34 schreef kvdveer het volgende:
Dusty:
waneer wordt de 'ownership' opgeheven? aan het eind van de kettingreacties of ook tijdens de ketting reactie?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Aan het einde van de move:
###### ######
#....# #....#
#.89.# #.11.#
#....# #....#
###### ######

Stap 1 van de kettingreactie:
###### ######
#.111# #....#
#.9.1# #.1?.#
#.111# #....#
###### ######

Stap 2 van de kettingreactie:
###### ######
#1221# #....#
#1.11# #..?.#
#1221# #....#
###### ######

Heeft speler 1 nu nul of een punten op het bord?

[edit]Voordat er gezeur over komt: het eerste plaatje is steeds de waarde van de velden, het tweede plaatje is steeds de eigenaar van de velden.[/edit]
Ervan afgezien dat onder buren volgens mij alleen horizontale en verticale buren worden verstaan kloppen je plaatjes niet. Er kunnen namelijk geen punten van de speler zelf verdwijnen bij een ketting reactie (wel van de andere spelers dus.) Volgens mij moeten je plaatjes er zo uit zien:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Aan het einde van de move:
###### ######
#....# #....#
#.89.# #.11.#
#....# #....#
###### ######

Stap 1 van de kettingreactie:
###### ######
#.111# #.111#
#.911# #.111#
#.111# #.111#
###### ######

Stap 2 van de kettingreactie:
###### ######
#1221# #1111#
#1121# #1111#
#1221# #1111#
###### ######

Alle locaties die je dus bij een kettingreactie veroverd zijn daarna van jouw. Op deze manier kun je dus locaties van andere spelers jatten >:)
Op vrijdag 28 december 2001 17:44 schreef kvdveer het volgende:
nooit stoppende kettingreactie:
code:
1
2
3
####    ####    ####    ####    ####    ####    ####
# 1# -> #1 # -> # 1# -> #1 # -> # 1# -> #1 # -> # 1# -> etc.
####    ####    ####    ####    ####    ####    ####
Op vrijdag 28 december 2001 17:58 schreef D2k het volgende:

[..]

uhm dat lijkt me niet
je bent hier al winnaar volgens mij :)
<edit>
en 1 explodeerd niet
Ik vind dit op zich toch wel verontrustend. Dusty's verklaring waarom er nooit een oneindige kettingreactie kan ontstaan vind ik nl. niet geheel overtuigend. Het aantal punten op het bord is nl. niet strikt stijgend omdat er bij een kettingreactie ook punten kunnen verdwijnen (nl. van de overige spelers). Zodra de situatie op het bord dus gelijk is aan een eerdere situatie en dezelfde speler is aan de beurt als bij die eerdere situatie ben je genaaid, ervan uitgaande dat de meeste een deterministisch algoritme zullen maken.
Ik zeg niet dat er WEL kettingreacties kunnen ontstaan (dat kan ik nl. niet zo snel overzien) ik ben er alleen niet van overtuigd dat het niet zo is.

He who knows only his own side of the case knows little of that.


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Volgens mij kunnen er geen punten verdwijnen... Althans, ik kan voor nu geen voorbeelden voorzien...

weer een twijfelachtig voorbeeld:
code:
1
2
3
4
5
waarde  Eigenaar
####    ####
#2 #    #1 #
# 2#    # 2#
####    ####

Wat komt hier uit?

Het is ook niet geheel duidelijk hoe de beurten worden afgehandeld. Mogelijheden:
1. Allemaal tegelijk De situatie wordt aan de spelers voorgelegd. De spelers leveren allemaal hun zet in en vervolgens wordt de vervolgsituatie berekend.
Is de meest eerlijke methode, maar kan de bovenstaande race-conditie veroorzaken, die alleen maar oneerlijke en onvoorspelbare oplossingen kan leveren.

2. Een voor een Speler 1 krijgt de situatie voorgelegd en mag een zet doen. De gevolgen van deze zet worden berekend, en speler 2 krijgt de vervolgsituatie van speler 1 voorgelegd.
Deze methode voorkomt race-condities, maar is best oneerlijk, aangezien een andere speler altijd een beurt voorloopt.

Localhost, sweet localhost


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op vrijdag 28 december 2001 17:34 schreef kvdveer het volgende:
Dusty:
waneer wordt de 'ownership' opgeheven? aan het eind van de kettingreacties of ook tijdens de ketting reactie?
Zodra een veld zich split worden de omliggende velden METEEN van de spelende speler.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op vrijdag 28 december 2001 17:39 schreef Munters het volgende:
Volgens mij is dit "Atlantis.
Het hoogste doel is een nooit stoppende kettingreactie te veroorzaken.
Ketting reactie stopt altijd op den duur.

Voor de speler te hopen dat hij de speler is die de grootste ketting reactie heeft zodat hij als enige over is (= winnen)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op vrijdag 28 december 2001 18:10 schreef RickN het volgende:

[..]

Ervan afgezien dat onder buren volgens mij alleen horizontale en verticale buren worden verstaan kloppen je plaatjes niet. Er kunnen namelijk geen punten van de speler zelf verdwijnen bij een ketting reactie (wel van de andere spelers dus.) Volgens mij moeten je plaatjes er zo uit zien:
De aanliggende buren zijn inderdaad alleen horizontaal en verticaal.
Ik vind dit op zich toch wel verontrustend. Dusty's verklaring waarom er nooit een oneindige kettingreactie kan ontstaan vind ik nl. niet geheel overtuigend. Het aantal punten op het bord is nl. niet strikt stijgend omdat er bij een kettingreactie ook punten kunnen verdwijnen (nl. van de overige spelers).
Nee, want punten van de andere speler verdwijnen niet, Staan er 2 punten en jij veroorzaakt een "ontploffing" en wordt dat gebied van jou wordt er 1 punt opgeteld bij de HUIDIGE aantal punten. (Dus die punten van de tegenstander worden opeens JOUW punten!)

Betekent dat NOOIT punten verloren zullen gaan, betekent ook dat je nooit in exact dezelfde situatie KAN komen.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
####
#21#
#1 #
####


####
# 2#
#2 #
####

####
#2 #
# 2#
####

####
# 2#
#2 #
####

etc...

Beweer nog eens dat kettingreacties altijd wel eindigen?

Localhost, sweet localhost


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op vrijdag 28 december 2001 19:46 schreef kvdveer het volgende:
Volgens mij kunnen er geen punten verdwijnen... Althans, ik kan voor nu geen voorbeelden voorzien...

weer een twijfelachtig voorbeeld:
code:
1
2
3
4
5
waarde  Eigenaar
####    ####
#2 #    #1 #
# 2#    # 2#
####    ####

Wat komt hier uit?
Onmogelijke situatie.

Zodra speler 1 een punt had gezet had die veld zich al opgesplitst. Betekent dat je daarna wel een "loop" krijgt echter na de eerste ontploffing is er nog maar een speler over (die de laatste zet heeft gezet) en die is dan ook de winnaar. ( en meteen EINDE ketting reactie :+ )
Het is ook niet geheel duidelijk hoe de beurten worden afgehandeld. Mogelijheden:
1. Allemaal tegelijk De situatie wordt aan de spelers voorgelegd. De spelers leveren allemaal hun zet in en vervolgens wordt de vervolgsituatie berekend.
Is de meest eerlijke methode, maar kan de bovenstaande race-conditie veroorzaken, die alleen maar oneerlijke en onvoorspelbare oplossingen kan leveren.

2. Een voor een Speler 1 krijgt de situatie voorgelegd en mag een zet doen. De gevolgen van deze zet worden berekend, en speler 2 krijgt de vervolgsituatie van speler 1 voorgelegd.
Deze methode voorkomt race-condities, maar is best oneerlijk, aangezien een andere speler altijd een beurt voorloopt.
Een voor Een natuurlijk :)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op vrijdag 28 december 2001 20:55 schreef kvdveer het volgende:
code:
1
2
3
4
5
6
7
8
9
10
####
#21#
#1 #
####


####
# 2#
#2 #
####

Beweer nog eens dat kettingreacties altijd wel eindigen?
Er is meteen nog maar EEN speler over. Einde spel :+

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Ik ga vanavond eens een potje spelen met huisgenoten... Met damstenen is dit goed te simuleren...

Localhost, sweet localhost


  • RickN
  • Registratie: December 2001
  • Laatst online: 14-06-2025
Op vrijdag 28 december 2001 20:53 schreef dusty het volgende:

[..]

Nee, want punten van de andere speler verdwijnen niet, Staan er 2 punten en jij veroorzaakt een "ontploffing" en wordt dat gebied van jou wordt er 1 punt opgeteld bij de HUIDIGE aantal punten. (Dus die punten van de tegenstander worden opeens JOUW punten!)

Betekent dat NOOIT punten verloren zullen gaan, betekent ook dat je nooit in exact dezelfde situatie KAN komen.
Dit was me dus niet geheel duidelijk, om een of andere reden was ik in de veronderstelling dat je weer op 1 begon zodra je een veld van een ander overneemt. Met deze uitleg heb je idd gelijk dat het aantal punten strikt stijgt.

Verder geloof ik idd niet zo in oneindige kettingreacties terwijl er nog meerdere spelers meedoen.

He who knows only his own side of the case knows little of that.


Verwijderd

volgens mij zijn er oneindige reacties mogelijk, dat ligt aan het aantal punten op het speelveld, en niet aan van welke punten die speler zijn, er gaan immers nooit punten verloren. Even een simulatie van een oneindige reactie:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1221  1221  1221  1321  1331  1331
2332  2432  2442  3 52  3113  3113  
2432  3 42  31 3  32 3  3213  3313
1221  1321  1331  1331  1331  2 41

1331  1331  1331  2331  2332  3 42
3113  4113  4114  1214  1221  1321
3323   423   43   143   1431  1431
2112  3112  3113  3113  3113  3113

3113  3113  3113  1213  1221
1331  1331  1331  2331  2332
1431  2431  2432  2431  2432
3113  1213  1221  1221  1221

De laatste positie is gelijk aan de eerste, dus hebben we een oneindige kettingreactie.

(Dit zijn dus alleen de punten, welke kleur/speler maakt niets uit.)

<edit>
Hier volgt dus uit dat je een kettingreactie mag stopppen als als er nog maar een kleur op het speelveld is en het spel gewonnen is. (Jury?)
</edit>

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Hmm ja, op die manier wel. Alleen als ik het zo zie lijkt het erop alsof je naar het veld kijkt en dan willekeurig een vak pakt waarvan het puntenaantal boven het aantal aanliggende velden komt.

Oftewel, is wat je hier doet wel het 'lawineeffect'?
Ik neem als voorbeeld halverwege je reactie (wat ik opmerkte)
code:
1
2
3
4
1331  2331  2332  3 42
4114  1214  1221  1321
 43   143   1431  1431
3113  3113  3113  3113

Na de 1e transformatie ga je de 4 op locatie [4,2] (x,y) splitten. Terwijl dit geen direct gevolg is van de splitsing van de 4 op [1,2] in het 1e veld. Volgens mij is hierna namelijk de 2 op [0,0] aan de bert, aangezien die wel direct een gevolg is van de splitsing.

Nog iets wat me dus opviel, je kan volgens mij velden hebben die 2,3 of meer punten hebben dan het aantal aanliggende vakken... Moet je dan zoveel punten 'aftrekken' of zelfs 2 punten per vak gaan verdelen als het
aantal punten >= aantal aansluitende vakken *2
?

(btw is er nog een klassement na opgave 3? of heb ik die gemist?)

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op zaterdag 29 december 2001 17:42 schreef Orphix het volgende:
(btw is er nog een klassement na opgave 3? of heb ik die gemist?)
nee heb je niet gemist
ik zal er eens achteraan gaan
niet meer aan gedacht :)

Doet iets met Cloud (MS/IBM)


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op zaterdag 29 december 2001 17:26 schreef mietje het volgende:
<edit>
Hier volgt dus uit dat je een kettingreactie mag stopppen als als er nog maar een kleur op het speelveld is en het spel gewonnen is. (Jury?)
</edit>
dusty beantwoord de moeilijke vragen ik de makkelijke (goede deal ;) )
tuurlijk ben je klaar als je de enig overgebleven speler bent.

Doet iets met Cloud (MS/IBM)


Verwijderd

Op zaterdag 29 december 2001 17:42 schreef Orphix het volgende:
Hmm ja, op die manier wel. Alleen als ik het zo zie lijkt het erop alsof je naar het veld kijkt en dan willekeurig een vak pakt waarvan het puntenaantal boven het aantal aanliggende velden komt.
Ik pak niet willekeurig een punt, dit is de output van een testprogramma. Er word telkens het oudste punt dat "exploderen" moet genomen, en wel van onder naar boven en van links naar rechts (onder naar boven is een beetje onlogisch maar gevolg van de programmastructuur).
Nog iets wat me dus opviel, je kan volgens mij velden hebben die 2,3 of meer punten hebben dan het aantal aanliggende vakken... Moet je dan zoveel punten 'aftrekken' of zelfs 2 punten per vak gaan verdelen als het
aantal punten >= aantal aansluitende vakken *2
?
Dat je punten overhoudt is een gevolg van dat je die "explosie", die in wezen parallel verloopt, recursief simuleert. (Verder hint ik niet.)

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op zaterdag 29 december 2001 17:53 schreef D2k het volgende:
[..]
dusty beantwoord de moeilijke vragen ik de makkelijke (goede deal ;) )
tuurlijk ben je klaar als je de enig overgebleven speler bent.
Nu alleen nog de moeilijke vragen :+

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

dusty : Nu alleen nog de moeilijke vragen :+
ik hou je niet tegen :+

Doet iets met Cloud (MS/IBM)


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op zaterdag 29 december 2001 21:07 schreef D2k het volgende:
[..]
ik hou je niet tegen :+
Ik hou ook niemand tegen, echter is het zo duidelijk dat iedereen het begrijpt, of het is zo onduidelijk dat er niemand iets van begrijpt, ik wacht gewoon af, mijn test programma is echter bijna compleet af :P

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Dusty: Jij wilde er een spelletje van maken begreep ik.
Zijn er ook punten te halen voor algo's die leuke tegenstanders zijn voor mensen?
Ik kan namelijk een algo maken dat vele zetten vooruit denkt, en op die manier altijd met hetzelfde (waarschijnlijk juiste) antwoord zal komen. Dat is niet erg leuk om tegen te spelen, aangezien het waarschijnlijk geen partij zal zijn voor een mens. Ik kan ook een algo bakken dat kortzichtig is en niet deterministisch. Ik zal opdracht 4 dan niet winnen, maar het is wel leuker voor in je spelletje...

nb. Als dit een spoiler is, edit 'm dan zo dat de boodschap een beetje behouden blijft, en verwijder 'm niet helemaal. Thnx n dvnce :)

Localhost, sweet localhost


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op zondag 30 december 2001 17:09 schreef kvdveer het volgende:
Dusty: Jij wilde er een spellet[...]dracht 4 dan niet winnen, maar het is wel leuker voor in je spelletje...

nb. Als dit een spoiler is, edit 'm dan zo dat de boodschap een beetje behouden blijft, en verwijder 'm niet helemaal. Thnx n dvnce :)
Er zou wel eens een mens mee kunnen spelen in de wedstrijd waardoor een normaal programma wel eens domme dingen zou kunnen gaan doen door elke keer dezelfde zet te gaan doen >:)

Bovendien zijn er zover ik weet ook nog bonus punten te verdienen, dat zal waarschijnlijk niet alleen afhangen of je programma wint e.d. Maar voor de exacte jurering daarvan zal je toch aan de jury moeten vragen en niet aan mij. :P

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Even al mijn aannames:
De meeste zijn vrij voor de hand liggend, maar toch...

1. Het speelveld is rechthoekig.
code:
1
2
3
4
5
###### ######
#1   # #1   #
#   1# #   2#
#  ##  #  ##
###    ###

2. Als een speler niet voorkomt op het speelveld, gaat die speler nooit meer voorkomen.
Er is dus altijd een startsituatie, het kan niet voorkomen dat we een leeg speelveld krijgen. (als dit niet het geval is, zul je toch echt informatie moeten gaan geven over hoeveel spelers er zijn. Dat kun je dan namelijk niet zien aan het speelveld)
code:
1
2
3
4
5
###### ######
#1   # #1   #
#    # #    # In dit geval heeft speler 1 gewonnen.
#    # #    #
###### ######

3. Er zijn geen waarden zonder eigenaar
code:
1
2
3
4
5
###### ######
#1   # #1   #
#   1# #    #
#    # #    #
###### ######

4. Er zijn geen eignaren zonder waarde
code:
1
2
3
4
5
###### ######
#1   # #1   #
#    # #   2#
#    # #    #
###### ######

edit:

5. in het geval van een gui
Het programma wordt niet herstart tussen twee zetten, en het programma wordt herstart of er wordt op de daarvoor bestemde knop gedrukt tussen twee potjes.

Localhost, sweet localhost


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op maandag 31 december 2001 11:07 schreef kvdveer het volgende:
Even al mijn aannames:
De meeste zijn vrij voor de hand liggend, maar toch...

1. Het speelveld is rechthoekig.
2. Als een speler niet voorkomt op het speelveld,
3. Er zijn geen waarden zonder eigenaar
4. Er zijn geen eignaren zonder waarde
5. in het geval van een gui
1. Jah, als er zo'n hoek zou zijn zou het opgevuld worden met muren.
2. Klopt, BEHALVE de eerste ronde uiteraard :+
3. Klopt.
4. Klopt.
5. ALLEEN in het geval van een GUI, bij elke andere wordt het programma gewoon normaal opgestart, uiteraard ben ik persoonlijk blijer met programma's zonder gui, hoef ik namelijk minder te doen :+

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Op maandag 31 december 2001 12:18 schreef dusty het volgende:

[..]

1. Jah, als er zo'n hoek zou zijn zou het opgevuld worden met muren.
2. Klopt, BEHALVE de eerste ronde uiteraard :+
3. Klopt.
4. Klopt.
5. ALLEEN in het geval van een GUI, bij elke andere wordt het programma gewoon normaal opgestart, uiteraard ben ik persoonlijk blijer met programma's zonder gui, hoef ik namelijk minder te doen :+
2. Hoe weten we de eerste ronde hoeveel spelers er zijn?
Dat lijkt me hele nuttige informatie...

Localhost, sweet localhost


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op maandag 31 december 2001 13:56 schreef kvdveer het volgende:
[..]
2. Hoe weten we de eerste ronde hoeveel spelers er zijn?
Dat lijkt me hele nuttige informatie...
Het zou inderdaad erg nuttig zijn, Jammer he >:)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 20:56
Ehm, niet erg veel animo voor deze laatste opdracht...

Ik denk dat 'ie net te moeilijk is of dat 'ie gewoon niet leuk is.

:P

Beide komt op hetzelfde neer. :)

Verbouwing


  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Volgens mij valt dat wel mee, maar iedereen ziet in dat het VEEL werk is. En aangezien mensen vooral met oud&nieuw weinig zin hebben om wat te gaan doen....

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op maandag 31 december 2001 21:27 schreef dev-null het volgende:
Volgens mij valt dat wel mee, maar iedereen ziet in dat het VEEL werk is. En aangezien mensen vooral met oud&nieuw weinig zin hebben om wat te gaan doen....
Daarom is er ook 2 weken gegeven :+

Maar zoveel werk is het eigenlijk niet, het is even weten hoe een AI ongeveer werkt, dat is het moeilijkste gedeelte, zodra je daarvan een idee hebt wordt spelen maken ook opeens een stuk leuker. Men zou al een simpele AI kunnen maken binnen een uur of 2.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Ik werk netjes object georienteerd, en ik heb al twee algo's af, en ik ben met mijn derde (eerste serieuze) bezig.
Een algo dat willekeurig een zet doet.
Een algo dat altijd past.
Een intelligent algo... specs komen later. (ivm spoiler)

Die een na laatste is wel grappig, want volgens de regels die momenteel zijn opgegeven zou dat altijd een infinite loop opleveren.
(je kunt pas van het bord worden geveegd zodra je op het bord staat, als je dus altijd past, kom je nooit op het bord te staan en kun je dus nooit van het bord worden geveegd)

Localhost, sweet localhost


Verwijderd

Op maandag 31 december 2001 13:56 schreef kvdveer het volgende:
2. Hoe weten we de eerste ronde hoeveel spelers er zijn?
Dat lijkt me hele nuttige informatie...
Na 2 daagjes klooien ben ik ervan overtuigd dat dit een fundamentele fout is in het spelontwerp. Je kunt namelijk niet alleen in de eerste ronde niet weten hoeveel spelers er zijn, je weet het in geen enkele ronde zeker!

Door die pas-regel kunnen spelers ook geen zet doen, en als een speler de eerste X zetten past heeft hij na X zetten dus geen punten op het bord. Volgens de nu gestelde regels moet ik dan concluderen dat die speler niet meer mee doet.

Dat is een conflictsituatie die niet op te lossen is zonder meer input-informatie of door de pas-regel te laten vallen. De pas-regel is ook de oorzaak ervan dat een spel oneindig lang kan duren, als iedereen gewoon blijft passen... (Jury, please drop die pas-regel?).

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Op dinsdag 01 januari 2002 17:00 schreef mietje het volgende:

[..]

Na 2 daagjes klooien ben ik ervan overtuigd dat dit een fundamentele fout is in het spelontwerp. Je kunt namelijk niet alleen niet in de eerste ronde niet weten hoeveel spelers er zijn, je weet het in geen enkele ronde zeker!

Door die pas-regel kunnen spelers ook geen zet doen, en als een speler de eerste X zetten past heeft hij na X zetten dus geen punten op het bord. Volgens de nu gestelde regels moet ik dan concluderen dat die speler niet meer mee doet.

Dat is een conflictsituatie die niet op te lossen is zonder meer input-infromatie of door de pas-regel te laten vallen. De pas-regel is ook de oorzaak ervan dat een spel oneindig lang kan duren, als iedereen gewoon blijft passen... (Jury, please drop die pas-regel?).
Drop die pas-regel alsjeblieft niet... het is een essentiele regel in het spel voor mijn algo. (Die past momenteel 75% van het totaal...).
Voeg een andere regel toe: je mag niet passen als je nog geen zet hebt gedaan. (is leuk met 9 spelers op een veld van 2x2)

Localhost, sweet localhost


Verwijderd

Op dinsdag 01 januari 2002 17:04 schreef kvdveer het volgende:
Drop die pas-regel alsjeblieft niet... het is een essentiele regel in het spel voor mijn algo. (Die past momenteel 75% van het totaal...).
Voeg een andere regel toe: je mag niet passen als je nog geen zet hebt gedaan. (is leuk met 9 spelers op een veld van 2x2)
/me zucht

Ik toon juist aan dat de pas-regel in zijn huidige vorm het spel saboteert. Als iedere speler 75% van zijn zetten past op een 40x40 bord voorzie ik een saaie eeuwwisseling.

Als je de pas-regel wilt houden moet die worden aangepast, maar jouw uitbreiding alleen is niet voldoende. Er moet een bovengrens komen aan het aantal keren dat iemand kan passen, of er moet een regel komen dat je verliest als je X maal achter elkaar past. Deze uitbreidingen vereisen echter allemaal dat een speler meer input-informatie krijgt.

  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 31-08 22:49
hmm en volgens de oorspronkelijke regels kan je idd altijd passen en op die manier als eerste inzenden en 2 bonuspunten pakken...

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op dinsdag 01 januari 2002 17:37 schreef Dash2in1 het volgende:
hmm en volgens de oorspronkelijke regels kan je idd altijd passen en op die manier als eerste inzenden en 2 bonuspunten pakken...
snel inzenden heeft dit keer geen nut
jullie komen tegen elkaar te spelen
de rest van de vragen zal door dusty worden beantwoord :)

Doet iets met Cloud (MS/IBM)


  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 31-08 22:49
Op dinsdag 01 januari 2002 17:40 schreef D2k het volgende:

[..]


[..]

de rest van de vragen zal door dusty worden beantwoord :)
kheb geloof ik nog last van afgelopen nacht ;)

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Dash2in1: kheb geloof ik nog last van afgelopen nacht ;)
np
* D2k is wakker

Doet iets met Cloud (MS/IBM)


Verwijderd

Op dinsdag 01 januari 2002 17:04 schreef kvdveer het volgende:
Voeg een andere regel toe: je mag niet passen als je nog geen zet hebt gedaan. (is leuk met 9 spelers op een veld van 2x2)
Het is me sinds gisteren nog onduidelijker geworden, volgens mij krijg je als beginsituatie een speelveld waarop elke speler die meedoet minstens een punt heeft. Maar dusty antwoordt:
Op maandag 31 december 2001 12:18 schreef dusty het volgende:
2. Klopt, BEHALVE de eerste ronde uiteraard :+
Dat snap ik dus niet, krijg je nu wel of niet als eerste een speelveld voorgeschoteld waar je zelf nog niet op aanwezig bent?

Als dat zo is betekent dat dat er een regel bij komt:
• Je mag de eerste zet niet passen.

Deze regel is er iig. bijgekomen:
• Je hebt niet alleen verloren als je niet meer kunt zetten, je hebt ook verloren als je geen punten meer op het speelveld hebt.

Ik heb nog een voor de hand liggende aanname die ik niet bevestigd zie:
Is het zo dat de spelers in klimmende volgorde spelen? (Dus eerst speler 1, dan 2, enz.)

<edit>
Mja, ik ga nu m'n Board class redesignen, dat kan geen kwaad na deze regelverandering. Ik kijk vanavond wel wat dusty beslist over de pas-regel.
</edit>

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op dinsdag 01 januari 2002 18:07 schreef mietje het volgende:
Dat snap ik dus niet, krijg je nu wel of niet als eerste een speelveld voorgeschoteld waar je zelf nog niet op aanwezig bent?
Als je aan de beurt ben krijg je een veld, Of je daar nu wel of niet op staat is het jouw beurt, is het jouw beurt dan mag je dus ergens plaatsen, betekent dat als je jezelf niet tegenkomt dat het dus de eerste ronde is.
Als dat zo is betekent dat dat er een regel bij komt:
• Je mag de eerste zet niet passen.
Mag best, alleen dan zeg je in principe "ik geef het op" want de 2e ronde heb je geen punten dus ben je af :P
Deze regel is er iig. bijgekomen:
• Je hebt niet alleen verloren als je niet meer kunt zetten, je hebt ook verloren als je geen punten meer op het speelveld hebt.
Je kunt altijd zetten. door de combinatie van de regels, Je zou alleen niet meer kunnen zetten als tegenstanders ALLE plaatsen hebben, betekent dat jij er geen hebt, dus dat jij af bent :+
Ik heb nog een voor de hand liggende aanname die ik niet bevestigd zie:
Is het zo dat de spelers in klimmende volgorde spelen? (Dus eerst speler 1, dan 2, enz.)
Ja.
<edit>
Mja, ik ga nu m'n Board class redesignen, dat kan geen kwaad na deze regelverandering. Ik kijk vanavond wel wat dusty beslist over de pas-regel.
</edit>
Regels zijn niet veranderd, het is alleen wat duidelijker gemaakt.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op dinsdag 01 januari 2002 15:25 schreef kvdveer het volgende:
(je kunt pas van het bord worden geveegd zodra je op het bord staat, als je dus altijd past, kom je nooit op het bord te staan en kun je dus nooit van het bord worden geveegd)
Echter heb jij geen punten meer de tweede ronde, dus ben je af. Dus geen impasse :+

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op dinsdag 01 januari 2002 17:00 schreef mietje het volgende:
Door die pas-regel kunnen spelers ook geen zet doen, en als een speler de eerste X zetten past heeft hij na X zetten dus geen punten op het bord. Volgens de nu gestelde regels moet ik dan concluderen dat die speler niet meer mee doet.
Geen punten de tweede beurt betekent dus dat ie van het boord af is gegooid. en die speler is dan dus ook AF.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Op dinsdag 01 januari 2002 22:53 schreef dusty het volgende:
Regels zijn niet veranderd, het is alleen wat duidelijker gemaakt.
Regels zijn zeker wel veranderd... Er waren gaten in de regels die nu gedicht zijn...
Ook ik zal mijn board class moeten redesignen. Nou ja. alleen de methode calculateMove() en chain(). :P

Maar ipv te zeiken ga ik nu weer eens nuttig bezig zijn. :X

Localhost, sweet localhost


  • Munters
  • Registratie: September 2000
  • Laatst online: 17-08 13:56
Ok, eindelijk een computer onder handen.
Dus mijn duit (bestaan er nog duiten trouwens:?) in het zakje:

Wat gebeurt er met randvoorwaarden als bijvoorbeeld een 1x4 bord?

Dus:
######
# #
######
De eerste zet zal op 1 van de beide middelste punten terechtkomen. Speler twee speelt direct in de hoek ernaast en haalt nr 1 van het bord. Etc.
Oftewel: de laatste speler wint.

Beginnen met passen is ook al geen optie, want dan is de speler in de tweede ronde niet aanwezig op het bord....

Uit een heldere opzet met begrijpelijke algoritmes volgt logischerwijs een correct programma. Testen daarentegen kan enkel gebruikt worden om fouten aan te tonen.


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op woensdag 02 januari 2002 16:18 schreef Munters het volgende:
Ok, eindelijk een computer onder handen.
Dus mijn duit (bestaan er nog duiten trouwens:?) in het zakje:

Wat gebeurt er met randvoorwaarden als bijvoorbeeld een 1x4 bord?

Dus:
######
# #
######
De eerste zet zal op 1 van de beide middelste punten terechtkomen. Speler twee speelt direct in de hoek ernaast en haalt nr 1 van het bord. Etc.
Oftewel: de laatste speler wint.

Beginnen met passen is ook al geen optie, want dan is de speler in de tweede ronde niet aanwezig op het bord....
code:
1
2
3
######
#    #
######

dan is het wat duidelijker

Doet iets met Cloud (MS/IBM)


  • RickN
  • Registratie: December 2001
  • Laatst online: 14-06-2025
Op woensdag 02 januari 2002 16:18 schreef Munters het volgende:
[..]
De eerste zet zal op 1 van de beide middelste punten terechtkomen.
[..]
Waarom?

He who knows only his own side of the case knows little of that.


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op woensdag 02 januari 2002 16:23 schreef RickN het volgende:

[..]

Waarom?
Omdat de uitersten beide maar 1 buur hebben dus "exploderen" bij een waarde van 1.

Betekent ook meteen vette pech voor speler 1, tenzij de AI van speler 2 niet zo slim is :+

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Met de verduidelijkingen van dusty valt er goed te werken, ik kom echter nog een probleem tegen:

Het blijkt dat het mogelijk is oneindige kettingreacties te veroorzaken die niet alle punten van de tegenstander(s) veroveren. Wat gebeurt er als een speler zo'n zet doet, wint hij of verliest hij (het spel laten doorgaan is onmogelijk)?

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op woensdag 02 januari 2002 16:29 schreef mietje het volgende:
Het blijkt dat het mogelijk is oneindige kettingreacties te veroorzaken die niet alle punten van de tegenstander(s) veroveren.
Geef eens een voorbeeld.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • RickN
  • Registratie: December 2001
  • Laatst online: 14-06-2025
Op woensdag 02 januari 2002 16:26 schreef dusty het volgende:

[..]

Omdat de uitersten beide maar 1 buur hebben dus "exploderen" bij een waarde van 1.

[..]
Ah, indeed...

He who knows only his own side of the case knows little of that.


Verwijderd

Op woensdag 02 januari 2002 16:30 schreef dusty het volgende:
Geef eens een voorbeeld.
Ik zat een 40x40 bord te testen, dat lijkt me wat groot om hier te pasten. Ik zal eens wat kleinere test-invoeren genereren, maar neem van mij aan dat het kan.

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op woensdag 02 januari 2002 16:35 schreef mietje het volgende:
[..]
Ik zat een 40x40 bord te testen, dat lijkt me wat groot om hier te pasten. Ik zal eens wat kleinere test-invoeren genereren, maar neem van mij aan dat het kan.
Mag jij van mij aannemen dat het niet kan :+

Email het veld dan naar mij met "gotter" en dan het domein "curlio.com" erachter plakken. met het speciale tekentje ertussen ;) (hoe is dat voor tegen spam! :P )

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Op woensdag 02 januari 2002 16:37 schreef dusty het volgende:
Mag jij van mij aannemen dat het niet kan :+
Mailtje verstuurd. Kan het of niet? ;)

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op woensdag 02 januari 2002 16:53 schreef mietje het volgende:
[..]
Mailtje verstuurd. Kan het of niet? ;)
Moet je wachten tot ik thuis ben, kan ik um door mijn programma heen halen :+

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • RickN
  • Registratie: December 2001
  • Laatst online: 14-06-2025
Bewijs dat je geen oneindige kettingreactie kunt krijgen waar niet alle vakjes aan meedoen:

1 Stel er is een veld V dat niet door een oneindige kettingreactie wordt bereikt.
2 De aanliggende velden van V kunnen dan ook niet door de kettingreactie worden bereikt, want anders zou zo'n aanliggende veld uiteindelijk exploderen waardoor V door de kettingreactie zou worden bereikt.
3 Volgens de regels vormen alle velden op het bord een aaneengesloten geheel, waardoor we m.b.v. inductie kunnen zeggen dat een oneindige kettingreactie waarbij een veld niet wordt bereikt alleen kan als er GEEN ENKEL veld wordt bereikt, waardoor er dus van een kettingreactie geen sprake zou zijn.

He who knows only his own side of the case knows little of that.


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 13:13
Je wordt bedankt hè, RickN. Zit ik net een lekker lange bewijsvoering in te typen komt jij snel met een eenvoudig en kloppend bewijs aanzetten. ;) Leuk dat er ook deelnemers zijn die wél over de opgave nadenken.

Verder heb ik nog één vraag, betreffende het passen. Is het nog steeds zo, dat beide spelers onbeperkt mogen passen?

Er wordt GEEN geschiedenis meegegeven aan de invoer, dus als in een bepaalde situatie speler 1 besluit te passen, weet speler 2 niet dat speler 1 gepast heeft. Als speler 2 nu geheel onafhankelijk ook besluit te passen, dan krijgt speler 1 weer dezelfde situatie voorgeschoteld als de laatste keer en vanwege het deterministische karakter van de meest waarschijnlijke algoritmes zullen speler 1 en 2 nu tot in de oneindigheid blijven passen. Dat lijkt me toch vervelend, als je dit jaar nog wil jureren.

edit:

Wanneer er meer dan twee spelers meedoen, wordt de kans op een dead-lock natuurlijk kleiner, maar hij blijft bestaan.


Zels met het meegeven van een geschiedenis van zetten kan je nog niet forceren dat één van de twee algoritmes uiteindelijk een zet doet, terwijl het daar niet door de regels toe verplicht worden.

(Overigens, de verantwoordelijke voor de probleemstelling moet zeer dringend leren schrijven).

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op woensdag 02 januari 2002 18:03 schreef Soultaker het volgende:
(Overigens, de verantwoordelijke voor de probleemstelling moet zeer dringend leren schrijven).
we benne geen taalpuriste hoor
ik heb de oorspronkelijke tekst van dusty redelijk moeten bewerken dus..
Maar tis prima te lezen en te begrijpen (na een keer of 5 :+ )

Doet iets met Cloud (MS/IBM)


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op woensdag 02 januari 2002 18:03 schreef Soultaker het volgende:
Verder heb ik nog één vraag, betreffende het passen. Is het nog steeds zo, dat beide spelers onbeperkt mogen passen?
Ja dat mag, na teveel passes achter elkaar wordt het gezien als een remise.
(Overigens, de verantwoordelijke voor de probleemstelling moet zeer dringend leren schrijven).
Gedeelte is door mij geschreven, een andere gedeelte is herschreven door de jury. Ik ben geen kei in nederlands, Ik heb er geen spellings-checker overheen gedaan ;) Aan deze uitspraak kan je geen rechten ontlenen, het gaat om het probleem, niet om de nederlandse spelling die is gebruikt.

:+

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 13:13
Op woensdag 02 januari 2002 19:17 schreef dusty het volgende:
Ja dat mag, na teveel passes achter elkaar wordt het gezien als een remise.
Met andere woorden: in een winnende situatie moet je NOOIT passen, anders passen je tegenstanders (mits ze dit ook inzien) ook en is het spel dus afgelopen? Dat is wel erg wrang - dat maakt passen eigenlijk alleen interessant voor de speler die achterstaat (hoewel dat natuurlijk wel weer leuk kan zijn).

In welke vorm wordt de competitie trouwens gegoten? Wordt 't een hele/halve competitie waarbij spelers elke keer paarsgewijs tegen elkaar spelen, of worden er meer dan twee spelers tegelijkertijd bij elkaar gegeooid? In het laatste geval, hoeveel spelletjes speel je dan en hoe bepaal je wie waartegen speelt? Wordt er op verschillende soorten borden (vormen en grootten) gespeeld en hoe zien die er dan gemiddeld uit? Dit is trouwens voor het grootste deel gewoon interesse. Het maakt me niet zoveel uit hoe jullie testen welk programma het beste speelt, maar deels is het ook belangrijk bij het bedenken van een goed algoritme. Het zou jammer zijn, als de winnaars de mensen zijn die toevallig de juiste aannames hebben gedaan over de competitie, in plaats van diegenen die het beste over het probleem hebben nagedacht.
het gaat om het probleem, niet om de nederlandse spelling die is gebruikt.
Dat is waar en aangezien het allemaal redelijk duidelijk geformuleerd is wil ik je er ook niet op aanvallen. Aangezien ik bij het lezen van de reacties op deze thread het tenenkrommende stuk vaak weer even door moet lezen, kon ik het echter niet laten om het in ieder geval even te noemen.

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op woensdag 02 januari 2002 19:39 schreef Soultaker het volgende:

In welke vorm wordt de competitie trouwens gegoten? Wordt 't een hele/halve competitie waarbij spelers elke keer paarsgewijs tegen elkaar spelen, of worden er meer dan twee spelers tegelijkertijd bij elkaar gegeooid? In het laatste geval, hoeveel spelletjes speel je dan en hoe bepaal je wie waartegen speelt? Wordt er op verschillende soorten borden (vormen en grootten) gespeeld en hoe zien die er dan gemiddeld uit? Dit is trouwens voor het grootste deel gewoon interesse.
hangt af van het aantal deelnemers :)

daar kan ik dus nog nix over zeggen

Doet iets met Cloud (MS/IBM)


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op woensdag 02 januari 2002 19:39 schreef Soultaker het volgende:
[..]
Met andere woorden: in een winnende situatie moet je NOOIT passen, anders passen je tegenstanders (mits ze dit ook inzien).
[edit: eehh vergeten te antwoorden hierop]
Er zijn alleen uitzonderlijke zetten waarop je moet passen, echter zal dat niet vaak voorkomen, indien je dat wel doet kan ik je garanderen dat ik van je AI zal winnen.
[/edit]
Dat is waar en aangezien het allemaal redelijk duidelijk geformuleerd is [.....]het tenenkrommende stuk vaak weer even door moet lezen, kon ik het echter niet laten om het in ieder geval even te noemen.
Mijn doel was om het duidelijk te formuleren, het was de taak voor de jury om het normaal nederlands te maken ;) mij kan je er dus niet op aanvallen >:)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

mijn Algo past als 'ie berekent dat 'ie (gegeven het aantal spelers) niet weggevaagd kan worden, en vervolgens een goede kans maakt om de tegenstand een flinke hak te zetten. Het blijkt in praktijk dat 'ie daarom in 75% van de gevallen past. Omdat mijn algo niet deterministisch is, is de kans op een oneindige loop gering (maar wel aanwezig).
Voor de jury heb ik even ingebouwd dat mijn algo even de mate van 'deterministischheid' aangeeft. Als die 1.000 is, was deze zet volledig voor de hand liggend, en dus deterministisch. Dat is in 5% van de zetten het geval, en nooit in combinatie met een pas.

Deze stats zijn gegenereerd spelend tegen mijn random algo 10x10, 5 potjes per seconde 10 minuten lang.
Tegen een mens waren die anders, maar weken ze niet sterk af. (over 10 potjes: 40% passen, 10% deterministische zetten). Ik heb 7 van die potjes jammerlijk verloren.

Localhost, sweet localhost


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op woensdag 02 januari 2002 21:11 schreef kvdveer het volgende:
mijn Algo [......]
Ik wacht vol spanning af >:)

Doet me opeens denken dat hopelijk niemand vergeet zijn AI een originele naam te geven :P

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 13:13
Op woensdag 02 januari 2002 22:04 schreef dusty het volgende:
Doet me opeens denken dat hopelijk niemand vergeet zijn AI een originele naam te geven :P
Die hoeft toch niet net zo origneel te zijn als de naam van het spel zelf, hoop ik? Anders hebben we daar nog een stevige kluif aan, hoewel ik jullie met "Het AI Algoritme" natuurlijk naar de kroon steek.

Mijn algoritme laat overigens nog even op zich wachten. Ik wilde vandaag een poging wagen in Clean, maar aangezien ik daar niet in kan programmeren, wilde het niet echt lukken. Maar toch weer veel geleerd vandaag.

Overigens lijkt het me ook leuk om eens met een creatiever concept te komen dan dat afgezaagde minimax algoritme met alfa-beta snoeien. Ik heb er alleen niet zoveel vertrouwen in dat ik dat binnenkort afkrijg. :)

Verwijderd

Misschien een stomme vraag, maar het enige veld waar ik problemen mee heb is:
code:
1
2
3
####
#  #
####

met meer dan 1 speler, of komt deze gewoon niet in de test set voor :)?

  • goalgetter
  • Registratie: Juni 1999
  • Laatst online: 25-08 15:24
Als ie al in de testzet voorkomt wat mij zeer onwaarschijnlijk lijkt, dan wint de persoon die als eerste aan de beurt is :)

Voor alle velden met minder punten dan spelers geldt zowieso dat er na de 1ste beurt al een x aantal spelers weg is.

Correct me if I'm wrong

Verwijderd

Ik bedoelde eigenlijk dat na de eerste zet een oneindige ketting-reaktie komt, zodat de vlgde spelers geen zet meer kunnen doen...

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op donderdag 03 januari 2002 00:01 schreef DiFool het volgende:
Ik bedoelde eigenlijk dat na de eerste zet een oneindige ketting-reaktie komt, zodat de vlgde spelers geen zet meer kunnen doen...
hoe wou je dat doen dan?
na de eerste rond heeft iedereen 1 punt
dan is er nog geen aanleiding voor een ketting reactie toch??

of heb ik er nu echt geen donder van begrepen?

Doet iets met Cloud (MS/IBM)


  • Munters
  • Registratie: September 2000
  • Laatst online: 17-08 13:56
Op donderdag 03 januari 2002 09:01 schreef D2k het volgende:
hoe wou je dat doen dan?
Wat dacht je van:
code:
1
2
3
####
#  #
####

Je speelt op 1,1 -> 2,1 -> 1,1 etc.

Voor de duidelijkheid: dit is een 2x1 speelveld.

Hoe krijg je nu eigenlijk een vaste spatie in je tekst opgenomen? Mijn uitlijning loopt nu mis.
(De broncode toont netjes " " bij correct uitgelijnde voorbeelden, hoe krijg ik die erin? [nbsp] [sp] en [ ] werken niet).

edit: "code" toegevoegd. Dank D2k. Waarom staat dit trouwens niet in de FAQ?

Uit een heldere opzet met begrijpelijke algoritmes volgt logischerwijs een correct programma. Testen daarentegen kan enkel gebruikt worden om fouten aan te tonen.


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

[.code] en [./code] (zonder .)

Doet iets met Cloud (MS/IBM)


  • Munters
  • Registratie: September 2000
  • Laatst online: 17-08 13:56
Is er trouwens nog een soort "pre-test"?

Het zou zonde zijn als er door "domme" foutjes mooie algoritmes niet mee kunnen spelen.

Voorbeeldje:
We gebruiken allemaal voorbeelden met "#" tekens als muur. Ik ook in mijn testset. Nu werkt de opgave met "X" tekens voor de muur. Dus mijn progje gaf netjes een speelveld van 0 breed aan.

"Domme" foutjes waar m.i. best op voorgetest mag worden:

1) Juiste tekens voor de muur (invoer schrijft X voor, geen #)
2) Juiste tekens voor de aantallen bij lege velden (invoer schrijft '0' voor, geen spaties).
3) x,y verwisselingen (invoer schrijft horizontale index op eerste uitvoerregel voor)
4) index-start problemen (invoer schrijft 1,1 voor als index van het eerste speelveld, dus 0,0 voor de verplichte muur linksboven).

Kan er bijvoorbeeld een kleine testset gegeven worden, waar maar 1 antwoord (niet symetrisch, bijvoorbeeld 3,1) op mogelijk is?

Uit een heldere opzet met begrijpelijke algoritmes volgt logischerwijs een correct programma. Testen daarentegen kan enkel gebruikt worden om fouten aan te tonen.


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 13:13
Zelf lijkt het me op zich wel eerlijk als de jury gewoon een paar dagen van te voren (het liefst natuurlijk een week ofzo) het juryprogramma vrijgeeft, zodat iedereen tegen zichzelf kan oefenen. Dit juryprogramma genereert de correcte invoer en controleert de uitvoer van de programma's op correctheid, waardoor iedereen zich er dus van kan verzekeren dat zijn programma alle regels goed implementeert. Op zich is het vrij gebruikelijk voor dergelijke competities dat de juryprogramma's vrijgegeven worden.

Wat op zich ook een optie is (los van de vorige suggestie), is een voorcompetitie, waarbij alle spelers tenminste één spelletje spelen en de resultaten (dus het volledige spelverloop) krijgen, zodat er nog aanpassingen gemaakt kunnen worden in 't algoritme. Het voordeel hiervan, is dat iedere deelnemer de 'real-life performance' van z'n programma kan zien en dus nog aanpassingen kan maken voor de echte competitie. Niet alleen worden de algoritmes hierdoor beter en interessanter, maar het nivelleert ook de kansen van de verschillende deelnemers. Ongetwijfeld zullen sommige deelnemers samenwerken, door hun programma's tegen elkaar te laten spelen. Dit is natuurlijk geen vals spel, maar het is niet helemaal eerlijk voor de deelnemers die geen referentie hebben. Door (tijdig) een voorcompetitie te organiseren, kun je iedereen een eerlijke kans geven.

Overigens zijn deze suggesties alleen te realiseren als de uiterste inlevertermijn wat wordt uitgesteld. Men zou bijvoorbeeld op de huidige deadline van 12 januari (of eigenlijk de volgende dag) een voorcompetitie kunnen houden, voor die deelnemers die daarvoor een programma insturen (het hoeft niet verplicht te zijn) en een week later de beslissende competitie te houden.

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Random Test Setje:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
XXXXXXXXXX
X  141 22X
X 21 5333X
X11  3 22X
X21 2222 X
XXXXXXXXXX

XXXXXXXXXX
X00222021X
X03303331X
X22002022X
X12022220X
XXXXXXXXXX

Hier is maar EEN oplossing de juiste, door die zet win je namelijk.

Veel plezier.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op donderdag 03 januari 2002 11:32 schreef Munters het volgende:
1) Juiste tekens voor de muur (invoer schrijft X voor, geen #)
2) Juiste tekens voor de aantallen bij lege velden (invoer schrijft '0' voor, geen spaties).
3) x,y verwisselingen (invoer schrijft horizontale index op eerste uitvoerregel voor)
4) index-start problemen (invoer schrijft 1,1 voor als index van het eerste speelveld, dus 0,0 voor de verplichte muur linksboven).
Dat zijn inderdaad allemaal juiste regels :P

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Op donderdag 03 januari 2002 16:27 schreef dusty het volgende:
Random Test Setje:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
XXXXXXXXXX
X  141 22X
X 21 5333X
X11  3 22X
X21 2222 X
XXXXXXXXXX

XXXXXXXXXX
X00222021X
X03303331X
X22002022X
X12022220X
XXXXXXXXXX

Hier is maar EEN oplossing de juiste, door die zet win je namelijk.

Veel plezier.
Uit mijn hoofd:
(1,7)
(1,8)
(2,2)
(3,1)
(3,8)
(4,1) <- edit: met algo is dit de juiste.
(4,2)
(4,4)
(4,5)
(4,6)

Oftewel: alle mogelijke zetten die exploderen. Dit is natuurlijk geen testset he. Ieder zinnig algo zal deze zet goed hebben.
Mijn algo is ontworpen dat dit soort situatie's (tbv tegenstanders) niet voorkomen.

Er zijn 19 mogelijk zetten (20 incl. pas), waarvan er 8 uitdraaien op winst! Zelfs mijn Random Algo heeft een goede kans om dat te winnen! (40% om precies te zijn)

Localhost, sweet localhost


Verwijderd

Na 2 dagen experimenteren ben ik er achter waar mijn problemen liggen: Het is van belang hoe je kettingreacties op het speelveld behandelt, verschillende methodes geven nl. verschillende resultaten. Daarom nu mijn vraag: hoe moet ik kettingreacties en exploderende velden behandelen?

Moet ik rekening houden met de "ouderdom" van exploderende velden (dus het oudste veld eerst laten exploderen), en zo ja, in welke volgorde moet ik de buren van zo'n veld behandelen (bv. boven, rechts, onder, links)? Zo nee, in welke richtingen moet ik het speelveld iteratief (dus kolom voor kolom of rij voor rij) aflopen, en in klimmende of dalende volgorde?

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op donderdag 03 januari 2002 12:43 schreef Soultaker het volgende:
Wat op zich ook een optie is (los van de vorige suggestie), is een voorcompetitie, [...] Door (tijdig) een voorcompetitie te organiseren, kun je iedereen een eerlijke kans geven.
Wat mij betreft is het prima, echter zal de jury daar over moeten beslissen :)
Overigens zijn deze suggesties alleen te realiseren als de uiterste inlevertermijn wat wordt uitgesteld. Men zou bijvoorbeeld op de huidige deadline van 12 januari (of eigenlijk de volgende dag) een voorcompetitie kunnen houden, voor die deelnemers die daarvoor een programma insturen (het hoeft niet verplicht te zijn) en een week later de beslissende competitie te houden.
Wat mij betreft prima, zit al een logging functie op waardoor er een html output gegenereerd wordt bij elke zet (en elke explosie.) waardoor men dus kan zien wat er precies is gebeurd en welke speler welke zet heeft gezet :+

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

De resultaten zijn altijd identiek, hoe je je explosies ook behandelt.
Ik heb voor mijn simulatie-engine een recursieve explosiebehandeling (boven-onder-links-rechts). In mijn algo's gebruik ik een iteratieve behandeling. (hele speelveld in een keer, totdat het 'stabiel' is). Dat levert hetzelfde resultaat op.
Wiskundig is te bewijzen dat explosies altijd hetzelfde effect hebben (uiteindelijk) onafhankelijk van de afhandeling.
Het geheel is namelijk te definieeren in pre-post condities.

Localhost, sweet localhost


  • Munters
  • Registratie: September 2000
  • Laatst online: 17-08 13:56
Op donderdag 03 januari 2002 16:36 schreef kvdveer het volgende:

[..]

Uit mijn hoofd:
(1,7)
(1,8)
(2,2)
(3,1)
(3,8)
(4,1)
(4,2)
(4,4)
(4,5)
(4,6)

[..]
Let op kvdveer, volgens mij heb je hier de x en y coordinaten omgedraaid.

Uit een heldere opzet met begrijpelijke algoritmes volgt logischerwijs een correct programma. Testen daarentegen kan enkel gebruikt worden om fouten aan te tonen.


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op donderdag 03 januari 2002 16:36 schreef kvdveer het volgende:
[..]
Oftewel: alle mogelijke zetten die exploderen. Dit is natuurlijk geen testset he. Ieder zinnig algo zal deze zet goed hebben.
Mijn algo is ontworpen dat dit soort situatie's (tbv tegenstanders) niet voorkomen.
Even je hersens patchen dan, er is toch maar EEN oplossing mogelijk :)
Er zijn 19 mogelijk zetten (20 incl. pas), waarvan er 8 uitdraaien op winst! Zelfs mijn Random Algo heeft een goede kans om dat te winnen! (40% om precies te zijn)
Er draaien 8 uit op winst, echter draait er maar EEN uit op een overwinning waarmee je alle tegenstanders van het speelboord veegt. >:)

[edit: langzamer tikken dusty]

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op donderdag 03 januari 2002 16:43 schreef kvdveer het volgende:
De resultaten zijn altijd identiek, hoe je je explosies ook behandelt.
[..]
Wiskundig is te bewijzen dat explosies altijd hetzelfde effect hebben (uiteindelijk) onafhankelijk van de afhandeling.
Het geheel is namelijk te definieeren in pre-post condities.
Correct.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op donderdag 03 januari 2002 16:43 schreef Munters het volgende:
[..]
Let op kvdveer, volgens mij heb je hier de x en y coordinaten omgedraaid.
ik weet wel zeker dat hij ze heeft omgedraaid :+

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Op donderdag 03 januari 2002 16:43 schreef kvdveer het volgende:
De resultaten zijn altijd identiek, hoe je je explosies ook behandelt.
Ik heb voor mijn simulatie-engine een recursieve explosiebehandeling (boven-onder-links-rechts). In mijn algo's gebruik ik een iteratieve behandeling. (hele speelveld in een keer, totdat het 'stabiel' is). Dat levert hetzelfde resultaat op.
Tja, dat heb ik dus ook, maar ik krijg eindeloze lussen als ik de oudste velden eerst behandel. Ik heb een queue geimplementeerd waar ik de velden van kettingreacties aan de achterkant instop en er van de voorkant weer afhaal en vervolgens behandel. Bij sommige spelsituaties kom ik echter in een oscillerende queue terecht die nooit meer leeg wordt. Behandel ik de buren van een exploderend veld in een andere volgorde dan krijg ik oscillerende queues op andere spelsituaties.
Wiskundig is te bewijzen dat explosies altijd hetzelfde effect hebben (uiteindelijk) onafhankelijk van de afhandeling.
Het geheel is namelijk te definieeren in pre-post condities.
Tuurlijk, maar houd je er ook rekening mee dat je explosies niet simultaan maar achter elkaar uitvoert? Dan is dat bewijs namelijk helemaal niet zo eenvoudig...

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op donderdag 03 januari 2002 16:56 schreef mietje het volgende:
[..]
Tuurlijk, maar houd je er ook rekening mee dat je explosies niet simultaan maar achter elkaar uitvoert? Dan is dat bewijs namelijk helemaal niet zo eenvoudig...
Niet eenvoudig maar in principe nog wel aan te tonen.

Als je je algoritme correct uitvoert heeft elke explosie een einde, ( of hij is klaar met exploderen of er zijn geen tegenstanders meer.. )

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op donderdag 03 januari 2002 16:56 schreef mietje het volgende:
[...]Bij sommige spelsituaties kom ik echter in een oscillerende queue terecht die nooit meer leeg wordt.[..]
Als er dan nog steeds spelers over blijven (behalve jezelf) zit er een fout in je algoritme, zo niet dan heb je al gewonnen ( Dus stoppen met exploden :) )

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Op donderdag 03 januari 2002 17:01 schreef dusty het volgende:
Als er dan nog steeds spelers over blijven (behalve jezelf) zit er een fout in je algoritme, zo niet dan heb je al gewonnen ( Dus stoppen met exploden :) )
/me zucht

Het lijkt erop dat ik de opdracht nog steeds te complex interpreteer (dat zal wel door gebrek aan ervaring komen, ik programmeer pas 15 jaar beroepsmatig). Door dit geharrewar ben ik aan de eigenlijke opdracht (het schrijven van een AI speler) nog niet toegekomen, ondanks dat ik er bijna drie vrije dagen aan heb besteed; ik zit nog steeds aan de implementatie van het spelbord te k*tten, en m'n zetgenerator heeft ook al twee revisies ondergaan. Als ik dan ten einde raad om verheldering vraag wordt er alleen geantwoordt dat mijn algoritme fout is. Dank u, maar daar was ik inmiddels wel achter. Waar ik nog steeds niet achter ben is waar ik de opdracht fout interpreteer, want mijn algoritmes doen wel correct wat ze volgens mij doen moeten. Maw. count me out, dit heeft geen zin meer.

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op donderdag 03 januari 2002 17:29 schreef mietje het volgende:
[..]
Als ik dan ten einde raad om verheldering vraag wordt er alleen geantwoordt dat mijn algoritme fout is. Dank u, maar daar was ik inmiddels wel achter. Waar ik nog steeds niet achter ben is waar ik de opdracht fout interpreteer, want mijn algoritmes doen wel correct wat ze volgens mij doen moeten. Maw. count me out, dit heeft geen zin meer.
ik kan niet zeggen waar de fout zit zonder je code te zien, Wat ik echter vermoed is dat je niet correct splitst. Probeer het eens gewoon itteratief door te lopen, dat voorkomt heel veel problemen t.o.v. recursief in dit geval.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Op donderdag 03 januari 2002 17:33 schreef dusty het volgende:
ik kan niet zeggen waar de fout zit zonder je code te zien, Wat ik echter vermoed is dat je niet correct splitst. Probeer het eens gewoon itteratief door te lopen, dat voorkomt heel veel problemen t.o.v. recursief in dit geval.
Ok, nog een keer voor de duidelijkheid: mijn algoritme is niet recursief. Ik plaats gewoon de coordinaten van een veld dat door een zet verandert in een queue. Vervolgens pop ik in een loop telkens de voorste (oudste) coordinaten van de queue en voer ik de veranderingen voor het betreffende veld door; als die verandering een explosie veroorzaakt push ik de buren van het betreffende veld weer achter op de queue (dit zijn de jongste velden op dat ogenblik). Als de queue niet leeg is begint de loop van voren af aan. Het algoritme bestaat vrijwel geheel uit (C++) STL templates en is tot in den treure gedebugged dus :? :? :?

Waarom doe ik dit zo ingewikkeld? Om dat het een stuk sneller is dan iteratief het hele bord doorlopen, ik "weet" meteen welke velden ik veranderen moet en hoef ze niet te zoeken. Maarja, het lijkt er steeds meer op dat ik gewoon de regels van het spel verkeerd interpreteer.
Pagina: 1 2 Laatste