Over een week moet ik m'n algoritme ook wel ff online kunnen zetten, dat simpelweg een draw zal spelen tot het in 1 keer uit kan :-) Dit weekend hadden ze de stroom op de uni uitgegooid, met als gevolg dat m'n computer daar het ook niet deed...Soultaker schreef op zondag 15 november 2009 @ 22:39:
Tnx
Over een week, en een week daarna de finale. (Zie ook de opdrachtomschrijving.)
Ik zal voortaan beter zoeken.Soultaker schreef op zondag 15 november 2009 @ 22:20:
Je gebruikt in je uitvoer drie keer een K8, waar komt die derde vandaan terwijl er maar twee in het hele spel voorkomen?(Overigens, als je de eerste K8 dropt, die je helemaal niet nodig hebt, dan is je zet wel geldig en ben je vier stenen kwijt!)
Ik heb de fout na lang zoeken gevonden. Ik gaf in een functie een variabele als referentie mee, en in die functie moest deze variabele verwijderen en dat gaat dus niet.
Dat ene foutje had trouwens niet voor een extra winst gezorgd.
Speel ook Balls Connect en Repeat
Mijn insteek was object-georienteerd, en zodanig dat ik geen foute ouput zou kunnen genereren, maar hier wordt teveel gechecked en ik denk dat mijn algoritme gewoon moet garanderen dat mijn datastructuur intact blijft. ^^
Verwijderd
Welcome to the club!joostvanpinxten schreef op maandag 16 november 2009 @ 13:00:
Ik doe voor spek en bonen mee, zie ik al. Aangezien mijn eerdere datastructuur niet geschikt bleek voor brute-force, ben ik nu (aan de hand van de hints eerder in dit topic) mijn script aan het aanpassen. Mocht er nog een redelijk player uitkomen, dan geef ik de URL hier nog wel.
Tijdens het testen faalde mijne ook al regelmatig, weet ook niet precies waar het zit. Denk dat ik maar "opnieuw" ga beginnen. Denk dat dit echter niet voor dit weekend gaat lukken, dat wil dus zeggen dat ik hem gelijk klaar moet maken voor de finale.
Edit: Je mag dus niet stenen die op de tafel liggen op je eigen rekje zetten?
Edit 2: nee dus
[ Voor 29% gewijzigd door Sh4wn op 16-11-2009 22:40 ]
In welke categorie valt dit probleem eigenlijk? P of NP?
@Sh4wn: ik ken redelijk wat varianten op rummikub, maar de variant dat je stenen terug mag nemen op je bordje heb ik altijd een bijzonder vervelende gevonden... wordt het spelletje ook niet spannender van ofzo
De draw lijkt te werken, dus nu maar eens echt aan de slag.
Ik heb dus de ballen verstand van webhosting.
Vanavond Apache geïnstalleerd op mijn laptop en na een NAT en virtual host instelling op de wireless router en de http poort open in de Windows Firewall werkt het ook nog van buitenaf.
* Vaan Banaan zet vinkje achter "Webserver opgezetten of iets wat er op lijkt" op lijstje "Nooit te oud om te leren"
Het was eigenlijk best simpel, dus Soultaker: In ieder geval alvast bedankt voor dit experiment
500 "The server made a boo boo"
"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney
Een oefenset (B1.B2.B3-R5.R6.R7-R1.G1.B1-K4.K5.K6.K7-B4.B5.B6.B7-G6.G7.G8.G9-R7.R8.R9.R10) kostte echter al krap 6 secondes (ruim 6.500 uitgeprobeerde rijtjes). Eerst maar eens optimaliseren voor ik aan stap 2 begin. Leuke opdracht !!
Edit: Door simpele optimalisatie (geen dubbele dingen doen) eerst teruggebracht met een factor 10. Vervolgens de rijtjes die ik probeer in een 'slimme-volgorde' © gezet; weer een factor 10. Tenslotte scheelt mijn huis-NAS en de server van mijn site een factor 4. Van 6 seconde naar nu 0,014. :-)
[ Voor 27% gewijzigd door Bolukan op 18-11-2009 18:38 ]
Als je alle stenen van je hand en de tafel op 1 hoop gooit, dan bestaat lijkt mij de kans dat je dan bepaalde stenen die eerst op tafel lagen in 1x niet meer ergens in een rijtje passen, en dat mag niet. Dus lijkt mij niet echt handig?MEMORICE schreef op zaterdag 14 november 2009 @ 17:24:
[...]
Nee, je kunt alle stenen van je eigen hand en de stenen van de tafel gewoon op een hoop gooien. Dus je probeert niet een geldige tafel combinatie met alleen de stenen van je hand te maken, maar in combinatie met de stenen die al op tafel liggen. Om dit vervolgens brute force door te rekenen kost echt max 10-20 ms. Bedenk dat je met 75% van alle stenen al wel in de buurt van het maximum zit (worst case). Immers met meer stenen is het te makkelijk uitleggen en met minder stenen is het minder reken werk...
@Soultaker
Mocht ik meedoen, dan zal ik er aan denken dat zwarte stenen met een K gerepresenteerd worden
"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney
Zoals Creepy hierboven al zegt is het idee dus dat je alle stenen probeert kwijt te kunnen. Uiteraard kan dit niet altijd, maar als je dit algoritme zou aanroepen met alle mogelijke subsets van je eigen stenen, dan kun je dus het maximaal aantal stenen wegspelen.Sh4wn schreef op woensdag 18 november 2009 @ 16:17:
[...]
Als je alle stenen van je hand en de tafel op 1 hoop gooit, dan bestaat lijkt mij de kans dat je dan bepaalde stenen die eerst op tafel lagen in 1x niet meer ergens in een rijtje passen, en dat mag niet. Dus lijkt mij niet echt handig?
Heeft er al iemand een brute force klaar? En hoe lang duurt het gemiddeld voordat een brute force de combinaties heeft doorgerekend? Ik (met php) zal dat zeker niet onder de 5 seconden kunnen krijgen.
Speel ook Balls Connect en Repeat
Mijn "goede" speler gebruikt niet echt een brute force aanpak en heeft iets van een 50ms per zet nodig in moeilijke stellingen, maar ik kan me voorstellen dat zulke tijden in PHP lastig te evenaren zijn. Op zich kan de tijdlimiet wat mij betreft nog wel bediscussieerd worden. Nadeel van een hogere limiet is dat je minder potjes kunt spelen, terwijl het spelen van een groot aantal potjes vanwege de geluksfactor in het spel toch wel wenselijk is.
Niet dat ik momenteel mee kan doen, gezien het feit dat ik bedacht had dat het wel leuk zou zijn om een game te maken als Sinterklaas surprise voor iemand
[ Voor 38% gewijzigd door .oisyn op 18-11-2009 22:59 ]
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Alle mogelijke combinaties uitproberen.Soultaker schreef op woensdag 18 november 2009 @ 22:37:
Wat bedoel je precies met brute force?
Kleine groepjes gaan wel snel. Maar als er al heel wat stenen liggen duurt het gewoon langer.
Ik ben op dit moment bezig om mijn code efficiënter en sneller te maken. Als ik dat klaar heb kan ik pas verder met ingewikkeldere combinaties doorrekenen.
Speel ook Balls Connect en Repeat
Ik ben me van de oneerlijkheidsfactor bewust..oisyn schreef op woensdag 18 november 2009 @ 22:58:
Een factor van Oneerlijkheid™ is dat iedereen zijn op z'n eigen systeem runt.
Verder is het doel van dit topic niet per se om de beste te zijn. Voor de meeste problemen in dit topic zijn al wel oplossingen bekend. Zoals Typnix ook zegt in de TS is het topic bedoeld voor mensen die het leuk vinden om aan de hand van een concrete opdracht hun programmeerskills te verbeteren of nieuwe technieken te leren. Voor de een zal dat het opzetten van een webserver zijn, voor een ander zich verdiepen in het gebruik van bitwise operatoren in PHP (wat je bij normaal webdevelopment niet snel zou doen), voor een ander wellicht het opzetten van een PS3 cluster (maar dan zul je nog steeds een geschikt parallel algoritme moeten ontwerpen; het beschikken over een cluster is op zichzelf niet doorslaggevend). Als je dat een leuke uitdaging vind: go for it!
Niet dat ik momenteel mee kan doen, gezien het feit dat ik bedacht had dat het wel leuk zou zijn om een game te maken als Sinterklaas surprise voor iemand.
Ik denk dat het goed te doen is om alle mogelijke combinaties uit te proberen, als je een efficiente datastructuur gebruikt en de zoekboom een beetje goed weet te prunenOnbekend schreef op woensdag 18 november 2009 @ 23:30:
[...]
Alle mogelijke combinaties uitproberen.![]()
Kleine groepjes gaan wel snel. Maar als er al heel wat stenen liggen duurt het gewoon langer.
Ik ben op dit moment bezig om mijn code efficiënter en sneller te maken. Als ik dat klaar heb kan ik pas verder met ingewikkeldere combinaties doorrekenen.
mijn brute-force oplossing (ook in PHP) geeft bij de volgende tafel:
1
| K1.K2.K3-B1.B2.B3 |
en bord:
1
| G1.G2.G4.G5.G7.G7.G8.K10.K11.K11.K13.G13.G12.R1.R3.B3 |
een antwoord in dik 5 seconden. Wanneer ik een steen op de tafel of op mijn bord erbij leg, dan wordt het vooralsnog 2x zo langzaam, wel afhankelijk van of er wel of niet combinaties kunnen worden gevonden.
Ik ben nu juist bezig met het prunen van mijn boom. De datastructuur en het vind-algortime zijn vrij optimaal. Om voor een set te vinden of er idd oplossingen zijn, kost op dit moment gemiddeld 0.30 ms bij deze config. Er worden dus ongeveer 20k combinaties geprobeerd, wat eigenlijk ook wel redelijk logisch is, aangezien er
1
2
| combinaties = SOM (x nCr 16) voor x = 1..16 = 2* SOM (x nCr 16) + 8 nCr 16 voor x = 1..7 |
(alle combinaties met 1 steentje t/m alle combinaties met 16 steentjes)
en 8 nCr 16 is de grootste, die is 12870... volgens mij komt dit ongeveer neer op 2^(16-1)
Ik ben er nog niet achter hoe ik al die combinaties kan prunen.... Bij het vinden van een oplossing voor een bepaalde set stenen is het al wel gelukt (en dat kan erg veel schelen!)...
0.30 ms is wel erg snel, bedoel je niet 30 of 300 ms?
Je hebt het op Joost?MEMORICE schreef op donderdag 19 november 2009 @ 17:03:
@qanar
0.30 ms is wel erg snel, bedoel je niet 30 of 300 ms?
1
2
3
4
5
6
7
8
9
| <?php $start = microtime(true); // functie $end = microtime(true); number_format(($end-$start)*100,2) ?> |
en volgens de php handleiding komt uit microtime een float in secondes. Die *100 en dan op 2 decimalen nauwkeurig... Dan krijg ik toch echt nog geen milliseconde. Mijn code zoekt dan ook maar naar één oplossing die alles volledig gebruikt en dat kan écht heel snel!
[ Voor 17% gewijzigd door Soultaker op 19-11-2009 17:34 ]
En zeker voor PHP
[ Voor 17% gewijzigd door joostvanpinxten op 19-11-2009 17:49 ]
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Ja, idd, ik weet niet hoe ik bij jouw naam kom...
@Joost
3ms is nog steeds erg snel, is dat brute force of een heuristiek?
Trouwens is het nog steeds te traag om op je volledige bord + tafel brute-force uit te proberen, daar heb ik weer een andere optimalisatie voor gevonden ^^. Dat scheelt ongeveer gemiddeld een factor 3 (max 4.7, minimaal 1), afhankelijk van het aantal groepjes dat gevonden wordt.
Ik ben zeer benieuwd naar de taktiek van SoulTaker aangezien die er dus maar 50ms over doet om een zet te verzinnen! In welke taal is dat eigenlijk uitgevoerd? En ook niet onbelangrijk, op wat voor machine draait het? :-)
@memorice, ga je nog meedoen met de competitie? Ik ben namelijk wel benieuwd wat er uit de verschillende oplossingen kan komen :-). Qua datastructuur is er al iets geopperd eerder in dit topic en ik denk dat het moeilijk is om iets efficienters te vinden. Het vinden van groepjes en 'oplossingen' is echter wel wat meer voor verandering vatbaar. Ik zal na de competitie dan ook zeker mijn code hier plaatsen :-)
Misschien trouwens leuk voor hierna is een Hartenjagen AI?
Mijn aanpak is anders dan één voor één elke mogelijke combinatie van stenen van m'n rekje proberen neer te leggen, dus dat is niet echt te vergelijken. Mijn code is minder gevoelig voor variaties aan stenen die beschikbaar zijn. Ik zal de details wel ná de finale uit de doeken doen, zodat iedereen nu nog zijn eigen methode kan uitdenken.joostvanpinxten schreef op donderdag 19 november 2009 @ 18:14:
Ik ben zeer benieuwd naar de taktiek van SoulTaker aangezien die er dus maar 50ms over doet om een zet te verzinnen!
Geschreven in C en draaide op een AthlonXP 2000+ afgelopen zondag. Ik denk dat ik 'm gewoon lokaal draai (op een Athlon64 3000+) volgende keer want de juryprocessen die ik hier ook draai blijken nauwelijks cpu-tijd te vergen aangezien ze voornamelijk op het netwerk zitten te wachten.In welke taal is dat eigenlijk uitgevoerd? En ook niet onbelangrijk, op wat voor machine draait het? :-)
Je kunt ook voor een avond een EC2/3 cluster inrichten bij Amazon, niet heel duur. Dat lijk me dan wel weer leuk en nuttig om te leren. Maar het programmeren van de rumikub algoritme moet ik nog wat inspiratie voor vinden..oisyn schreef op woensdag 18 november 2009 @ 22:58:
Een factor van Oneerlijkheid™ is dat iedereen zijn op z'n eigen systeem runt. Als je toegang hebt tot een leuk cluster, tja... Ik kan bijvoorbeeld wel een stuk of 10 PS3's inzetten
Niet dat ik momenteel mee kan doen, gezien het feit dat ik bedacht had dat het wel leuk zou zijn om een game te maken als Sinterklaas surprise voor iemand. Volgend jaar weer lekker gewoon knutselen met karton en lijm
Koop of verkoop je webshop: ecquisition.com
Te koop: 'slimme-volgorde' © TEABBolukan schreef op woensdag 18 november 2009 @ 00:00:
Door simpele optimalisatie (geen dubbele dingen doen) eerst teruggebracht met een factor 10. Vervolgens de rijtjes die ik probeer in een 'slimme-volgorde' © gezet; weer een factor 10. Tenslotte scheelt mijn huis-NAS en de server van mijn site een factor 4. Van 6 seconde naar nu 0,014. :-)
De 'slimme-volgorde' van rijtjes is waardeloos en heb ik nu dynamisch gemaakt. Iets trager per rijtje, maar in het slechtste geval probeer ik 500 rijtjes voor het bord is gelegd. Met 0,02 tot 0,05 seconde per bord, kan ik nu overgaan op de taktiek om steentjes van mijn bord af te spelen.
Inmiddels is de code een puinhoop geworden. Morgenavond dus eerst opruimen, en dan pas verder.
Ik weet niet of ik ga meedoen, de code staat namelijk op een computer van de universiteit. Helaas bleek deze computer het niet goed meer te doen toen ik gisteren terug kwam van een conferentie, met als gevolg dat de computer nu ter reparatie is. Ik heb geen idee wanneer ik de computer weer terug krijg...
Better to remain silent and be thought a fool then to speak out and remove all doubt.
Werk met GET. Afgekapt op maximaal 3,7 seconde.
http://www.bolukan.nl/rummikub/rummikub.php
@Soultaker, .oisyn: Ik had even een verkeerde versie online gezet.
NB: Jullie waren bijna door de 881 regels heen gekomen.
Edit2: Toevoeging za 15 uur: Bij een bepaalde spelsituatie kreeg ik geen goede response (geen => niet goed). Zojuist ondekt waarom. Mijn "patented" zoekstrategie stond helemaal niet aan. Betekent dat de oude brute-force in veel gevallen al voldoende is. Gelukkig op tijd aangepast voor de test morgen.
[ Voor 63% gewijzigd door Bolukan op 21-11-2009 15:14 . Reden: Update ]
Ik kan niet zeggen dat ik erg onder de indruk ben, maar toch knap dat je 730 regels zonder syntax errors hebt weten te schrijven. /me duiktParse error: syntax error, unexpected '&' in /srv/bolukan/www/www.bolukan.nl/rummikub/rummikub.php on line 731
edit:
Het werkt nu wel.
[ Voor 26% gewijzigd door Soultaker op 20-11-2009 17:24 ]
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
@BazzPsychoNut en joostvanpinxten: jullie spelers geven momenteel nog geen geldige uitvoer. Misschien is dat om lokaal te testen, dat kan natuurlijk, maar zorg ervoor dat 't voor zondagavond gefixt is, anders ben ik gedwongen je eruit te gooien en dat zou jammer zijn.
@Onbekend: jouw host is momenteel offline, klopt dat?
Eigenlijk hoort dat niet.Soultaker schreef op vrijdag 20 november 2009 @ 17:31:
@Onbekend: jouw host is momenteel offline, klopt dat?
Ik heb voor zondag wel een andere URL om mee te testen.
Speel ook Balls Connect en Repeat
Verwijderd
######################################################## ### ### ## # # # # # ## ## # # ## ## # # # # # ## # # ### # # ## ## ###### # ###### # # ### # # # # # #### ######## # ## # ### # ## # # # #### ## # ## # # ### # # ###### # # # # ## ### ## # ## ### # ## # ####### ## ### # # ## # # ### ###### ### ##### # # # # # #### # # ## ## ## ##### # ### # # ## # #### # ## ### ## ## ##### # ## # ## ### # ## # # ## #### ### #### # # ### #### # # ## ###### ## # ##### # ## # # # ## # # ### ###### ## ## ## ## #### # # ## # ## ## # # # # # # ###### ####### ## # ## # # # ### # ## # ##### # ### # ##### ## ## ## # # # # # # ## # #### # ## # # ### # ## # ## # # # # ## # # ## # #### # # ### ## ### ### ## # # ### # ########### # # ### # ### # # # ###### #### # # ## # # # ## ## # ### # ## ## ## # ## ## ## # ## # ## # # # ### # # # ## # # # # # ##### ### ## # # # # ## ## # ## ### # # # ## # ######################## ################################### Solution (82 points): ########################################################.### ### ## # # # # # ## ## # #..## ## # # # # # ## # # ### # # ## ## ###### # ######..# # ### # # # # # #### ######## # ## # ###.# ## # # # #### ## # ## # # ### # # ###### # .# # # ## ### ## # ## ### # ## # ####### ## ###.# # ## # # ### ###### ### ##### # # # # # ####..# # ## ## ## ##### # ### # # ## # #### #...## ###...## ## ##### # ## # ## ### # ##....#..# ##..#### ### #### # # ### #### # # ## ###### ## #..#####.. #..## # # # ## # # ### ###### ##....## ##.##.#### # # ## # ## ## # # # # # # ######.####### ##..#.## # # # ### # ## # ##### # ### # #####.....## ## ##.#..# # # # # ## # #### # ## #....# ### # ## #.##.# # # # ## # # ## # #### # # ###.## ### ### ## ..#.# ### # ########### # # ### # ### #..# # ###### ####.#.# ## # # # ## ## # ### #....## ##.## # ## ## ## #...## # ## # # # ### # # #.##....#..# # # # ##### ### ## # # # # ## ##.# ##...### # # # ## # ########################.###################################
Uiteraard louter probeersel zonder doolhof-expertise, van Kruskal of spanning trees heb ik geen kaas gegeten
Eigenaar/brouwer Milky Road Brewery
Mijn algoritme (alles of niets wegspelen) draait hier: http://128.2.208.139:8080/rummikub.php method = GETSoultaker schreef op vrijdag 20 november 2009 @ 17:31:
Ik heb de spelers voor de tweede testcompetitie alvast toegevoegd bij de opdracht. Als je mee wil doen (of als je URL/request method gewijzigd is) laat 't me dan vóór zondagavond weten.
@BazzPsychoNut en joostvanpinxten: jullie spelers geven momenteel nog geen geldige uitvoer. Misschien is dat om lokaal te testen, dat kan natuurlijk, maar zorg ervoor dat 't voor zondagavond gefixt is, anders ben ik gedwongen je eruit te gooien en dat zou jammer zijn.
@Onbekend: jouw host is momenteel offline, klopt dat?
Verwijderd
@MEMORICE: geeft altijd een error?
ik keek naar jouw posttijd, en dacht welke malloot zit er nou om die tijd nog hier.. En toen keek ik naar m'n eigen posttijd...
[ Voor 30% gewijzigd door Verwijderd op 21-11-2009 04:14 ]
Als het goed is geeft ie gewoon netjes 'draw' of een valide bord terug, behalve als een van de argumenten (yourTiles, table, poolTiles of opponentsTiles) niet goed gedefinieerd is. Mocht je een goede aanroep hebben die een error genereerd, dan ben ik hier wel geinteresseerd in.Verwijderd schreef op zaterdag 21 november 2009 @ 04:11:
Mijne is nog niet veranderd sinds de vorige ronde, hij hoeft van mij dan ook niet mee te doen met de komende ronde, aangezien hij op 't moment nogal hard faalt..De finale moet hij dan wel weer meedoen (op zelfde URL) of word ik te lastig zo?
@MEMORICE: geeft altijd een error?
offtopic:
ik keek naar jouw posttijd, en dacht welke malloot zit er nou om die tijd nog hier.. En toen keek ik naar m'n eigen posttijd...Tijd om m'n bed op te zoeken.
Mijn post tijd is niet zo raar hoor, voor Amerikaanse begrippen iig
Je resultaat was niet heel slecht de vorige keer, maar ik heb 'm voorlopig uit 't lijstje gehaald. Help me herinneren dat ik 'm volgende week weer toevoeg.Verwijderd schreef op zaterdag 21 november 2009 @ 04:11:
Mijne is nog niet veranderd sinds de vorige ronde, hij hoeft van mij dan ook niet mee te doen met de komende ronde, aangezien hij op 't moment nogal hard faalt..De finale moet hij dan wel weer meedoen (op zelfde URL) of word ik te lastig zo?
[ Voor 52% gewijzigd door Soultaker op 21-11-2009 12:00 ]
Verwijderd
Het gaat ongeveer als volgt:Ram0n schreef op vrijdag 20 november 2009 @ 20:21:
Ziet er heel netjes uit! Zou je je algoritme (kort) kunnen toelichten? Ben benieuwd hoe je het gedaan hebt, aangezien je aangeeft het niet (bewust) volgens een bekende methode gedaan te hebben
- Ga uit van een volledig gevuld doolhof (alleen muren)
- Open de ingang en uitgang
- 'Eet' nu een weg van ingang naar uitgang. Begin bij de ingang en ga door tot je bij de uitgang bent, door steeds random een volgend hokje te kiezen. Het volgend hokje mag niet uitkomen op een open hokje, want er mag maar een oplossing zijn. Als er geen mogelijke volgende hokjes zijn, kies dan random het eerste de beste open hokje dat wel volgende hokjes 'heeft'
- Eet vervolgens de rest van het doolhof weg door steeds random een open hokje te kiezen en vanuit daar een 'tak' te graven. Een tak mag niet uitkomen op een ander open hokje (want maar een oplossing mogelijk), maar wel op zichzelf.
Voor een leuke demo kun je bijvoorbeeld je cmd-venster op 9999 regels instellen en vervolgens "maze 60 10 verbose solve" uitvoeren
Lijkt me gefixed nu, die invalid arguments met de table was eigenlijk luiheid, omdat de kans dat je met een lege tafel direct uit kunt niet heel groot is, maar toch ff gefixed. Dat eindigen met een streepje kon ik niet herproduceren, maar ik heb er voor de zekerheid ff een extra check omheen gezetSoultaker schreef op zaterdag 21 november 2009 @ 11:57:
@Memorice: als de tafel leeg is geef je (onterecht) een foutmelding: Invalid arguments. Your request will be logged. En als je speelt, dan eindigt je tafelconfiguratie met een extra streepje, wat niet geldig is. Beide moet wel te fixen zijn, lijkt me?
De nieuwe speler staat op http://tweakers.awardspace.com/RummiDemo2.php
Ik hoop dat ik de komende week wel aan programmeren toekom, maar ik verwacht dat het qua tijd lastig zal worden....
Speel ook Balls Connect en Repeat
@Memorice: lijkt nu inderdaad gefixt te zijn. Misschien dat de bug met het streepje alleen optrad als er maar één rijtje op tafel lag. (Ik gebruik een vrij simpele testcase om te verifiëren of spelers online zijn, vandaar de wat ongebruikelijke situatie) Zou natuurlijk jammer zijn geweest als je speler na tien beurten trekken bedenkt dat 'ie in één keer vierentwinig stenen kan neerleggen, maar dat z'n zet dan geweigerd zou worden vanwege een extra streepje in de uitvoer.
Leuke aanpak.Verwijderd schreef op zaterdag 21 november 2009 @ 12:06:
Het gaat ongeveer als volgt: [..]
Bij het wegeten van hokjes hierboven moet er wel rekening mee gehouden worden dat er geen illegale situaties ontstaan, zoals grote open plekken of twee open hokjes die elkaar met een hoekpunt raken.
Better to remain silent and be thought a fool then to speak out and remove all doubt.
@SoulTaker: Kan je toch proberen om mij toe te voegen aan de contest? Als dit teveel vertraging oplevert (en ik kan hwsl geen spel winnen) dan kan je me er alsnog uitgooien.
Ben benieuwd naar de competitie :-)
http://94.209.13.155/cgi-bin/rummikub.cgi method: GET
Ik ben vanmiddag niet thuis, maar zal uiterlijk 18:00uur de laptop aanslingeren (ben met het ding op pad en heb geen PC of iets om het op te zetten)
500 "The server made a boo boo"
Halverwege eruit gooien is lastig (want ik plan van te voren spelletjes in op zo'n manier dat iedereen in totaal evenveel spelletjes speelt) dus ik laat je er wel gewoon in; dan duurt de competitie maar wat langer.joostvanpinxten schreef op zondag 22 november 2009 @ 12:24:
@SoulTaker: Kan je toch proberen om mij toe te voegen aan de contest? Als dit teveel vertraging oplevert (en ik kan hwsl geen spel winnen) dan kan je me er alsnog uitgooien.
Trouwens, is 't misschien een idee om set_time_limit(5) toe te voegen aan je speler (en/of een heuristiek toe te voegen om te bepalen wanneer het bord te complex is om op te lossen) zodat je in ieder geval niet langer dan 5 sec bezig bent?
@Vaan Banaan & bat266: jullie zijn toegevoegd.
Edit: ik verbruik maximaal 0,7 seconde bij tot 5 stenen uit mijn hand diep zoeken. Aan intelligentie mbt de mogelijkheden van andere spelers ben ik niet aan begonnen.
[ Voor 51% gewijzigd door Bolukan op 22-11-2009 15:44 ]
Ik heb zelf nog een "verbetering" toegevoegd in m'n speler die in de praktijk alleen maar tegen me lijkt te werken.
Van een aantal deelnemers die ik even kort heb getest met Soultaker zijn online ding, heb ik zowaar af en toe een potje kunnen winnen. Ik denk dat ik rond de 7de plek zal eindigen
Het belangrijkste voor mij vanavond is de controle op foute output. Wel leuk, vanavond al 10 deelnemers, dit is een zeer geslaagde mini-PRG contest
500 "The server made a boo boo"
Resultaten zijn binnen.
| Ronde | Speler 1 | (score) | Speler 2 | (score) | Speler 3 | (score) | Speler 4 | (score) | Details |
|---|---|---|---|---|---|---|---|---|---|
| 1 | Vaan Banaan | 49 | joostvanpinxten | 125 | Onbekend | 47 | Memorice | 0 | html/xml |
| 2 | Soultaker | 1 | GuidoH | 19 | bat266 | 25 | Bolukan | 0 | html/xml |
| 3 | jfeitsma | 12 | EdwinG | 22 | Vaan Banaan | 20 | Bolukan | 0 | html/xml |
| 4 | EdwinG | 11 | Memorice | 232 | GuidoH | 46 | bat266 | 47 | html/xml |
| 5 | Soultaker | 5 | Onbekend | 4 | jfeitsma | 4 | joostvanpinxten | 220 | html/xml |
| 6 | GuidoH | 41 | Bolukan | 24 | Memorice | 0 | jfeitsma | 66 | html/xml |
| 7 | EdwinG | 31 | Soultaker | 9 | Onbekend | 15 | Vaan Banaan | 0 | html/xml |
| 8 | joostvanpinxten | 159 | bat266 | 75 | jfeitsma | 40 | Memorice | 199 | html/xml |
| 9 | bat266 | 40 | joostvanpinxten | 216 | Soultaker | 12 | Bolukan | 0 | html/xml |
| 10 | EdwinG | 27 | Vaan Banaan | 0 | Onbekend | 34 | GuidoH | 16 | html/xml |
| 11 | GuidoH | 28 | Bolukan | 6 | Onbekend | 0 | joostvanpinxten | 197 | html/xml |
| 12 | Memorice | 0 | jfeitsma | 79 | EdwinG | 71 | bat266 | 45 | html/xml |
| 13 | Soultaker | 0 | Vaan Banaan | 18 | joostvanpinxten | 191 | Bolukan | 14 | html/xml |
| 14 | bat266 | 84 | GuidoH | 80 | EdwinG | 63 | Memorice | 221 | html/xml |
| 15 | Soultaker | 33 | Onbekend | 39 | Vaan Banaan | 12 | jfeitsma | 0 | html/xml |
| 16 | Onbekend | 28 | Vaan Banaan | 0 | Bolukan | 23 | jfeitsma | 21 | html/xml |
| 17 | GuidoH | 64 | Memorice | 188 | EdwinG | 84 | joostvanpinxten | 174 | html/xml |
| 18 | bat266 | 59 | Soultaker | 48 | joostvanpinxten | 191 | EdwinG | 47 | html/xml |
| 19 | Soultaker | 13 | bat266 | 50 | GuidoH | 81 | Memorice | 185 | html/xml |
| 20 | jfeitsma | 4 | Vaan Banaan | 28 | Onbekend | 35 | Bolukan | 0 | html/xml |
| 21 | Vaan Banaan | 12 | EdwinG | 39 | Onbekend | 24 | Soultaker | 0 | html/xml |
| 22 | bat266 | 44 | GuidoH | 59 | Memorice | 220 | jfeitsma | 42 | html/xml |
| 23 | Bolukan | 20 | joostvanpinxten | 158 | Memorice | 188 | Vaan Banaan | 53 | html/xml |
| 24 | Bolukan | 13 | joostvanpinxten | 190 | GuidoH | 47 | bat266 | 38 | html/xml |
| 25 | Onbekend | 0 | EdwinG | 68 | jfeitsma | 15 | Soultaker | 12 | html/xml |
| 26 | Vaan Banaan | 63 | GuidoH | 36 | EdwinG | 16 | Memorice | 0 | html/xml |
| 27 | Onbekend | 36 | jfeitsma | 17 | Soultaker | 17 | Bolukan | 0 | html/xml |
| 28 | joostvanpinxten | 193 | bat266 | 54 | Vaan Banaan | 18 | jfeitsma | 6 | html/xml |
| 29 | bat266 | 5 | Soultaker | 0 | GuidoH | 45 | EdwinG | 48 | html/xml |
| 30 | Onbekend | 40 | Bolukan | 38 | joostvanpinxten | 189 | Memorice | 186 | html/xml |
| 31 | Bolukan | 0 | GuidoH | 19 | jfeitsma | 3 | Vaan Banaan | 11 | html/xml |
| 32 | EdwinG | 65 | joostvanpinxten | 181 | Onbekend | 14 | Memorice | 191 | html/xml |
| 33 | bat266 | 35 | Soultaker | 0 | Vaan Banaan | 15 | GuidoH | 42 | html/xml |
| 34 | Memorice | 188 | joostvanpinxten | 177 | Onbekend | 66 | Soultaker | 79 | html/xml |
| 35 | EdwinG | 15 | Bolukan | 0 | bat266 | 17 | jfeitsma | 4 | html/xml |
| 36 | Soultaker | 0 | Onbekend | 2 | EdwinG | 28 | Bolukan | 11 | html/xml |
| 37 | bat266 | 58 | Vaan Banaan | 24 | Memorice | 193 | joostvanpinxten | 167 | html/xml |
| 38 | GuidoH | 3 | jfeitsma | 8 | Soultaker | 7 | Memorice | 208 | html/xml |
| 39 | jfeitsma | 19 | EdwinG | 0 | joostvanpinxten | 204 | Vaan Banaan | 36 | html/xml |
| 40 | bat266 | 47 | Onbekend | 32 | Bolukan | 0 | GuidoH | 63 | html/xml |
| 41 | Bolukan | 3 | GuidoH | 58 | Soultaker | 14 | joostvanpinxten | 190 | html/xml |
| 42 | jfeitsma | 8 | Onbekend | 9 | bat266 | 39 | Memorice | 0 | html/xml |
| 43 | Vaan Banaan | 5 | EdwinG | 18 | joostvanpinxten | 203 | Bolukan | 6 | html/xml |
| 44 | GuidoH | 16 | bat266 | 21 | Vaan Banaan | 1 | Onbekend | 0 | html/xml |
| 45 | Memorice | 0 | Soultaker | 40 | EdwinG | 40 | jfeitsma | 28 | html/xml |
| 46 | bat266 | 42 | Vaan Banaan | 22 | Bolukan | 0 | joostvanpinxten | 170 | html/xml |
| 47 | jfeitsma | 12 | EdwinG | 8 | Memorice | 224 | Onbekend | 15 | html/xml |
| 48 | Soultaker | 18 | GuidoH | 17 | Memorice | 206 | jfeitsma | 0 | html/xml |
| 49 | joostvanpinxten | 222 | EdwinG | 58 | Onbekend | 73 | Soultaker | 59 | html/xml |
| 50 | bat266 | 68 | Bolukan | 12 | GuidoH | 3 | Vaan Banaan | 0 | html/xml |
| 51 | Memorice | 0 | EdwinG | 34 | GuidoH | 54 | Soultaker | 29 | html/xml |
| 52 | bat266 | 19 | Onbekend | 25 | jfeitsma | 13 | Bolukan | 0 | html/xml |
| 53 | joostvanpinxten | 197 | Vaan Banaan | 0 | bat266 | 17 | Bolukan | 2 | html/xml |
| 54 | Vaan Banaan | 36 | joostvanpinxten | 170 | jfeitsma | 15 | Memorice | 205 | html/xml |
| 55 | EdwinG | 32 | GuidoH | 21 | Onbekend | 8 | Soultaker | 0 | html/xml |
| 56 | jfeitsma | 0 | EdwinG | 52 | Onbekend | 47 | Vaan Banaan | 25 | html/xml |
| 57 | joostvanpinxten | 247 | Soultaker | 12 | Bolukan | 35 | bat266 | 32 | html/xml |
| 58 | Memorice | 220 | GuidoH | 58 | joostvanpinxten | 138 | Vaan Banaan | 63 | html/xml |
| 59 | GuidoH | 0 | bat266 | 45 | Bolukan | 36 | Soultaker | 35 | html/xml |
| 60 | Memorice | 217 | EdwinG | 69 | Onbekend | 13 | jfeitsma | 25 | html/xml |
| 61 | GuidoH | 24 | jfeitsma | 0 | bat266 | 25 | Onbekend | 26 | html/xml |
| 62 | Bolukan | 23 | joostvanpinxten | 240 | Soultaker | 12 | EdwinG | 54 | html/xml |
| 63 | Vaan Banaan | 71 | Memorice | 212 | joostvanpinxten | 141 | Soultaker | 54 | html/xml |
| 64 | Onbekend | 64 | bat266 | 48 | Memorice | 226 | EdwinG | 60 | html/xml |
| 65 | Vaan Banaan | 14 | GuidoH | 5 | jfeitsma | 0 | Bolukan | 9 | html/xml |
| 66 | bat266 | 111 | Soultaker | 0 | GuidoH | 42 | Onbekend | 68 | html/xml |
| 67 | Vaan Banaan | 12 | Bolukan | 0 | jfeitsma | 14 | joostvanpinxten | 185 | html/xml |
| 68 | Memorice | 0 | EdwinG | 50 | bat266 | 33 | GuidoH | 28 | html/xml |
| 69 | Memorice | 0 | Soultaker | 14 | joostvanpinxten | 128 | EdwinG | 30 | html/xml |
| 70 | Vaan Banaan | 16 | Onbekend | 0 | jfeitsma | 33 | Bolukan | 3 | html/xml |
| 71 | EdwinG | 37 | Onbekend | 0 | Bolukan | 2 | jfeitsma | 12 | html/xml |
| 72 | joostvanpinxten | 177 | Vaan Banaan | 5 | Soultaker | 22 | GuidoH | 34 | html/xml |
| 73 | Memorice | 254 | bat266 | 57 | Soultaker | 13 | jfeitsma | 25 | html/xml |
| 74 | Onbekend | 12 | Memorice | 242 | bat266 | 49 | GuidoH | 74 | html/xml |
| 75 | Bolukan | 0 | EdwinG | 16 | joostvanpinxten | 148 | Vaan Banaan | 25 | html/xml |
| 76 | GuidoH | 26 | joostvanpinxten | 200 | jfeitsma | 33 | Memorice | 183 | html/xml |
| 77 | bat266 | 39 | Soultaker | 0 | Bolukan | 43 | Onbekend | 16 | html/xml |
| 78 | Vaan Banaan | 4 | EdwinG | 58 | Onbekend | 27 | Memorice | 0 | html/xml |
| 79 | jfeitsma | 17 | Soultaker | 1 | GuidoH | 0 | EdwinG | 26 | html/xml |
| 80 | bat266 | 9 | Vaan Banaan | 8 | joostvanpinxten | 144 | Bolukan | 0 | html/xml |
[ Voor 99% gewijzigd door Soultaker op 22-11-2009 22:28 ]
| Ronde | Speler 1 | (score) | Speler 2 | (score) | Speler 3 | (score) | Speler 4 | (score) | Details |
|---|---|---|---|---|---|---|---|---|---|
| 81 | Bolukan | 10 | GuidoH | 20 | Soultaker | 19 | Memorice | 0 | html/xml |
| 82 | Onbekend | 0 | EdwinG | 39 | joostvanpinxten | 140 | jfeitsma | 17 | html/xml |
| 83 | Vaan Banaan | 13 | bat266 | 50 | Onbekend | 36 | jfeitsma | 0 | html/xml |
| 84 | bat266 | 69 | Soultaker | 33 | joostvanpinxten | 236 | EdwinG | 20 | html/xml |
| 85 | Vaan Banaan | 31 | Memorice | 0 | GuidoH | 23 | Bolukan | 18 | html/xml |
| 86 | joostvanpinxten | 160 | Onbekend | 98 | bat266 | 90 | Memorice | 215 | html/xml |
| 87 | Vaan Banaan | 0 | EdwinG | 47 | GuidoH | 22 | jfeitsma | 12 | html/xml |
| 88 | Soultaker | 4 | Bolukan | 15 | GuidoH | 0 | joostvanpinxten | 181 | html/xml |
| 89 | Bolukan | 0 | Soultaker | 11 | EdwinG | 44 | Vaan Banaan | 37 | html/xml |
| 90 | jfeitsma | 24 | Memorice | 192 | bat266 | 79 | Onbekend | 39 | html/xml |
| 91 | Bolukan | 0 | jfeitsma | 11 | GuidoH | 18 | bat266 | 20 | html/xml |
| 92 | Onbekend | 21 | EdwinG | 64 | Memorice | 198 | Vaan Banaan | 25 | html/xml |
| 93 | joostvanpinxten | 165 | Soultaker | 0 | bat266 | 26 | Vaan Banaan | 10 | html/xml |
| 94 | GuidoH | 37 | Memorice | 0 | Onbekend | 57 | EdwinG | 29 | html/xml |
| 95 | Bolukan | 18 | joostvanpinxten | 192 | jfeitsma | 3 | Soultaker | 0 | html/xml |
| 96 | bat266 | 36 | Bolukan | 0 | Vaan Banaan | 9 | Onbekend | 5 | html/xml |
| 97 | joostvanpinxten | 202 | Soultaker | 3 | GuidoH | 37 | jfeitsma | 0 | html/xml |
| 98 | Memorice | 0 | EdwinG | 14 | GuidoH | 31 | Bolukan | 1 | html/xml |
| 99 | EdwinG | 85 | joostvanpinxten | 172 | Onbekend | 62 | Memorice | 185 | html/xml |
| 100 | Soultaker | 24 | Vaan Banaan | 12 | jfeitsma | 0 | bat266 | 21 | html/xml |
| 101 | Vaan Banaan | 12 | Onbekend | 12 | EdwinG | 33 | bat266 | 12 | html/xml |
| 102 | Memorice | 210 | Soultaker | 60 | joostvanpinxten | 163 | GuidoH | 34 | html/xml |
| 103 | Bolukan | 11 | jfeitsma | 0 | Soultaker | 3 | bat266 | 21 | html/xml |
| 104 | jfeitsma | 0 | Bolukan | 32 | Vaan Banaan | 16 | joostvanpinxten | 242 | html/xml |
| 105 | EdwinG | 64 | GuidoH | 48 | Onbekend | 44 | Memorice | 0 | html/xml |
| 106 | GuidoH | 22 | joostvanpinxten | 200 | bat266 | 23 | Soultaker | 1 | html/xml |
| 107 | Bolukan | 34 | Memorice | 0 | jfeitsma | 8 | Vaan Banaan | 17 | html/xml |
| 108 | EdwinG | 19 | Onbekend | 34 | Bolukan | 0 | bat266 | 20 | html/xml |
| 109 | EdwinG | 46 | Soultaker | 0 | Onbekend | 44 | GuidoH | 24 | html/xml |
| 110 | jfeitsma | 64 | Vaan Banaan | 57 | Memorice | 241 | joostvanpinxten | 152 | html/xml |
| 111 | Vaan Banaan | 65 | joostvanpinxten | 191 | Bolukan | 13 | EdwinG | 43 | html/xml |
| 112 | bat266 | 28 | Soultaker | 24 | jfeitsma | 13 | Onbekend | 0 | html/xml |
| 113 | GuidoH | 99 | Memorice | 233 | bat266 | 101 | Onbekend | 59 | html/xml |
| 114 | GuidoH | 36 | Bolukan | 33 | Soultaker | 0 | Vaan Banaan | 38 | html/xml |
| 115 | EdwinG | 39 | jfeitsma | 80 | Memorice | 191 | joostvanpinxten | 181 | html/xml |
| 116 | GuidoH | 123 | joostvanpinxten | 153 | EdwinG | 93 | bat266 | 88 | html/xml |
| 117 | Vaan Banaan | 3 | jfeitsma | 7 | Memorice | 0 | Soultaker | 11 | html/xml |
| 118 | Bolukan | 42 | Onbekend | 22 | jfeitsma | 28 | Vaan Banaan | 0 | html/xml |
| 119 | Bolukan | 14 | bat266 | 34 | Onbekend | 38 | joostvanpinxten | 230 | html/xml |
| 120 | Soultaker | 13 | Memorice | 0 | EdwinG | 82 | GuidoH | 42 | html/xml |
| 121 | jfeitsma | 13 | Soultaker | 0 | GuidoH | 6 | bat266 | 48 | html/xml |
| 122 | Onbekend | 149 | Memorice | 201 | Vaan Banaan | 57 | joostvanpinxten | 129 | html/xml |
| 123 | Bolukan | 69 | EdwinG | 82 | bat266 | 104 | joostvanpinxten | 206 | html/xml |
| 124 | Soultaker | 2 | Onbekend | 0 | GuidoH | 23 | jfeitsma | 2 | html/xml |
| 125 | Memorice | 222 | Vaan Banaan | 26 | Bolukan | 26 | EdwinG | 0 | html/xml |
| 126 | Bolukan | 43 | jfeitsma | 0 | Soultaker | 16 | bat266 | 35 | html/xml |
| 127 | Memorice | 209 | joostvanpinxten | 171 | GuidoH | 107 | EdwinG | 77 | html/xml |
| 128 | Onbekend | 8 | Vaan Banaan | 1 | jfeitsma | 12 | Bolukan | 0 | html/xml |
| 129 | Onbekend | 29 | Soultaker | 0 | joostvanpinxten | 219 | bat266 | 48 | html/xml |
| 130 | Vaan Banaan | 7 | GuidoH | 39 | EdwinG | 77 | Memorice | 205 | html/xml |
| 131 | Memorice | 210 | joostvanpinxten | 199 | Onbekend | 61 | Vaan Banaan | 50 | html/xml |
| 132 | GuidoH | 4 | jfeitsma | 0 | EdwinG | 49 | bat266 | 32 | html/xml |
| 133 | Soultaker | 1 | Bolukan | 0 | joostvanpinxten | 220 | EdwinG | 31 | html/xml |
| 134 | Memorice | 0 | Soultaker | 37 | GuidoH | 56 | Onbekend | 49 | html/xml |
| 135 | Vaan Banaan | 20 | bat266 | 22 | jfeitsma | 11 | Bolukan | 0 | html/xml |
| 136 | Bolukan | 0 | EdwinG | 27 | Memorice | 181 | Vaan Banaan | 5 | html/xml |
| 137 | bat266 | 35 | jfeitsma | 15 | Soultaker | 0 | joostvanpinxten | 211 | html/xml |
| 138 | GuidoH | 34 | Onbekend | 24 | Bolukan | 11 | joostvanpinxten | 181 | html/xml |
| 139 | Onbekend | 26 | Soultaker | 0 | GuidoH | 25 | Vaan Banaan | 17 | html/xml |
| 140 | jfeitsma | 40 | Memorice | 0 | EdwinG | 20 | bat266 | 31 | html/xml |
| 141 | Bolukan | 17 | joostvanpinxten | 187 | Soultaker | 7 | EdwinG | 24 | html/xml |
| 142 | Onbekend | 23 | Vaan Banaan | 9 | jfeitsma | 0 | GuidoH | 47 | html/xml |
| 143 | bat266 | 55 | Memorice | 0 | EdwinG | 69 | Vaan Banaan | 52 | html/xml |
| 144 | Onbekend | 20 | jfeitsma | 0 | Bolukan | 3 | Soultaker | 2 | html/xml |
| 145 | Memorice | 213 | bat266 | 46 | joostvanpinxten | 161 | GuidoH | 81 | html/xml |
| 146 | bat266 | 60 | Memorice | 235 | jfeitsma | 6 | GuidoH | 22 | html/xml |
| 147 | joostvanpinxten | 120 | EdwinG | 70 | Bolukan | 0 | Soultaker | 24 | html/xml |
| 148 | Onbekend | 0 | Vaan Banaan | 12 | bat266 | 22 | EdwinG | 12 | html/xml |
| 149 | jfeitsma | 15 | Memorice | 251 | Bolukan | 28 | Soultaker | 8 | html/xml |
| 150 | GuidoH | 40 | Vaan Banaan | 0 | Onbekend | 9 | joostvanpinxten | 249 | html/xml |
| 151 | joostvanpinxten | 192 | jfeitsma | 0 | EdwinG | 22 | Vaan Banaan | 5 | html/xml |
| 152 | GuidoH | 29 | Onbekend | 56 | bat266 | 46 | Soultaker | 0 | html/xml |
| 153 | Bolukan | 34 | Memorice | 199 | joostvanpinxten | 144 | Vaan Banaan | 77 | html/xml |
| 154 | GuidoH | 26 | Memorice | 0 | EdwinG | 34 | Onbekend | 2 | html/xml |
| 155 | Soultaker | 0 | Bolukan | 24 | bat266 | 18 | jfeitsma | 8 | html/xml |
| 156 | Vaan Banaan | 29 | Memorice | 0 | jfeitsma | 6 | bat266 | 19 | html/xml |
| 157 | joostvanpinxten | 199 | GuidoH | 11 | Onbekend | 10 | Bolukan | 6 | html/xml |
| 158 | EdwinG | 51 | Soultaker | 77 | jfeitsma | 13 | Memorice | 0 | html/xml |
| 159 | GuidoH | 30 | EdwinG | 49 | Bolukan | 0 | Vaan Banaan | 24 | html/xml |
| 160 | bat266 | 31 | joostvanpinxten | 210 | Soultaker | 0 | Onbekend | 23 | html/xml |
| Ronde | Speler 1 | (score) | Speler 2 | (score) | Speler 3 | (score) | Speler 4 | (score) | Details |
|---|---|---|---|---|---|---|---|---|---|
| 161 | Soultaker | 0 | Onbekend | 55 | Bolukan | 25 | bat266 | 23 | html/xml |
| 162 | Memorice | 239 | joostvanpinxten | 161 | Vaan Banaan | 41 | jfeitsma | 67 | html/xml |
| 163 | EdwinG | 26 | GuidoH | 34 | Onbekend | 0 | bat266 | 75 | html/xml |
| 164 | joostvanpinxten | 214 | GuidoH | 17 | Vaan Banaan | 4 | Bolukan | 14 | html/xml |
| 165 | Memorice | 0 | Soultaker | 7 | EdwinG | 72 | jfeitsma | 27 | html/xml |
| 166 | Soultaker | 11 | joostvanpinxten | 190 | Onbekend | 1 | Vaan Banaan | 0 | html/xml |
| 167 | Memorice | 0 | bat266 | 43 | GuidoH | 63 | Bolukan | 29 | html/xml |
| 168 | jfeitsma | 12 | EdwinG | 32 | bat266 | 39 | joostvanpinxten | 247 | html/xml |
| 169 | jfeitsma | 6 | EdwinG | 10 | Bolukan | 7 | Memorice | 0 | html/xml |
| 170 | Onbekend | 43 | GuidoH | 0 | Soultaker | 13 | Vaan Banaan | 24 | html/xml |
| 171 | Memorice | 226 | Bolukan | 69 | joostvanpinxten | 148 | GuidoH | 76 | html/xml |
| 172 | EdwinG | 54 | Vaan Banaan | 34 | Soultaker | 31 | jfeitsma | 0 | html/xml |
| 173 | Onbekend | 11 | bat266 | 0 | Soultaker | 8 | GuidoH | 35 | html/xml |
| 174 | joostvanpinxten | 146 | bat266 | 116 | Vaan Banaan | 57 | Memorice | 228 | html/xml |
| 175 | EdwinG | 9 | Bolukan | 0 | Onbekend | 13 | jfeitsma | 43 | html/xml |
| 176 | GuidoH | 29 | jfeitsma | 0 | Soultaker | 12 | Bolukan | 37 | html/xml |
| 177 | bat266 | 41 | Onbekend | 18 | Vaan Banaan | 0 | EdwinG | 32 | html/xml |
| 178 | joostvanpinxten | 178 | Memorice | 211 | EdwinG | 80 | Onbekend | 112 | html/xml |
| 179 | jfeitsma | 19 | Bolukan | 5 | joostvanpinxten | 237 | Soultaker | 8 | html/xml |
| 180 | GuidoH | 52 | Memorice | 0 | bat266 | 84 | Vaan Banaan | 17 | html/xml |
| 181 | Vaan Banaan | 27 | Bolukan | 4 | joostvanpinxten | 219 | Soultaker | 4 | html/xml |
| 182 | GuidoH | 18 | bat266 | 31 | jfeitsma | 0 | EdwinG | 11 | html/xml |
| 183 | Onbekend | 26 | Memorice | 222 | EdwinG | 88 | GuidoH | 68 | html/xml |
| 184 | Vaan Banaan | 104 | Memorice | 196 | bat266 | 83 | joostvanpinxten | 174 | html/xml |
| 185 | Bolukan | 21 | jfeitsma | 37 | Soultaker | 6 | Onbekend | 0 | html/xml |
| 186 | EdwinG | 33 | GuidoH | 26 | bat266 | 35 | jfeitsma | 0 | html/xml |
| 187 | joostvanpinxten | 180 | Memorice | 210 | Bolukan | 25 | Onbekend | 32 | html/xml |
| 188 | Vaan Banaan | 0 | Soultaker | 2 | EdwinG | 52 | bat266 | 20 | html/xml |
| 189 | Soultaker | 11 | jfeitsma | 7 | Memorice | 0 | GuidoH | 12 | html/xml |
| 190 | Vaan Banaan | 15 | Onbekend | 1 | joostvanpinxten | 159 | Bolukan | 7 | html/xml |
| 191 | Memorice | 0 | EdwinG | 41 | Onbekend | 16 | jfeitsma | 13 | html/xml |
| 192 | Soultaker | 32 | Bolukan | 0 | bat266 | 28 | GuidoH | 51 | html/xml |
| 193 | joostvanpinxten | 223 | Vaan Banaan | 50 | GuidoH | 65 | EdwinG | 59 | html/xml |
| 194 | Bolukan | 0 | joostvanpinxten | 124 | jfeitsma | 41 | bat266 | 24 | html/xml |
| 195 | Memorice | 206 | Onbekend | 49 | Soultaker | 0 | Vaan Banaan | 31 | html/xml |
| 196 | GuidoH | 9 | jfeitsma | 0 | bat266 | 54 | EdwinG | 2 | html/xml |
| 197 | joostvanpinxten | 186 | Bolukan | 62 | Vaan Banaan | 79 | Memorice | 236 | html/xml |
| 198 | Onbekend | 0 | Soultaker | 12 | GuidoH | 58 | EdwinG | 16 | html/xml |
| 199 | joostvanpinxten | 181 | jfeitsma | 7 | bat266 | 31 | Bolukan | 0 | html/xml |
| 200 | Memorice | 0 | Soultaker | 25 | Onbekend | 39 | Vaan Banaan | 34 | html/xml |
Alle resultaten (html&xml): comp2.zip (1.1MB)
Eindklassement
| Plaats | Deelnemer | Totaalscore | Aantal gewonnen | Aantal fouten | Tijd | ||
|---|---|---|---|---|---|---|---|
| Totaal | Gemiddeld | Maximaal | |||||
| 1 | Soultaker | 1121 | 21 | 0 | 10.158s | 0.008s | 0.043s |
| 2 | Bolukan | 1130 | 27 | 5 | 381.522s | 0.288s | 10.026s |
| 3 | jfeitsma | 1262 | 20 | 0 | 6060.950s | 4.791s | 6.379s |
| 4 | Vaan Banaan | 1919 | 11 | 0 | 243.317s | 0.180s | 4.110s |
| 5 | Onbekend | 2295 | 12 | 3 | 2747.065s | 2.030s | 10.036s |
| 6 | GuidoH | 2958 | 4 | 15 | 30.545s | 0.022s | 2.019s |
| 7 | EdwinG | 3349 | 2 | 0 | 92.471s | 0.068s | 2.649s |
| 8 | bat266 | 3474 | 1 | 5 | 307.571s | 0.231s | 10.011s |
| 9 | Memorice | 10353 | 31 | 33 | 2470.434s | 1.729s | 10.117s |
| 10 | joostvanpinxten | 14757 | 0 | 1303 | 8968.169s | 6.055s | 10.024s |
[ Voor 3% gewijzigd door Soultaker op 23-11-2009 15:49 ]
Er zitten wel een aantal kanonnenvoer potten tussen zeg. Iedereen gefeliciteerd met de uitslag. Zonde dat de output van joostvanpinxten en Memorice vaak niet klopte, dat zal het enorme gat met de anderen verklaren.
Soultaker: Dat is wel heel erg snel, volgens mij heb je die output 8 minuten na het laatste potje hier op het Forum gepost
500 "The server made a boo boo"
Congrats.Vaan Banaan schreef op zondag 22 november 2009 @ 22:00:
Woehoe!! boven in de middenmoot!
Memorice' speler is ook wel leuk om te zien. Soms komt 'ie gewelig uit de hoek door in één keer 30 stenen op tafel te leggen (waarbij natuurlijk alles door elkaar gegooid wordt) maar even zo vaak blijft 'ie met 30 stenen zitten wat nogal desastreus uitpakt voor de totaalscore.
Op naar de finale volgende week.
@Onbekend hieronder: ik ben bang dat je van 26.9 naar 28.7 punten per potje gedaald bent, want door het grotere aantal deelnemers doet je speler in minder potjes mee. Maar aangezien er ook meer goede tegenstanders meededen, kan het best zijn dat je toch beter speelde dan de vorige keer... is lastig te vergelijken.
[ Voor 18% gewijzigd door Soultaker op 22-11-2009 22:26 ]
Op m'n computer zelf is hij supersnel. Ik had er de afgelopen week geen tijd meer voor om een andere (snellere) host te vinden.
Als ik aanneem dat alle scripts verbeterd zijn, en mijn score op 11,475 per spel zit is dat toch een flinke verbetering t.o.v. de 26,9 per spel van de vorige week.
Edit:
Ik heb de fouten even nagekeken, en de RPC failed bij elke fout. Dus de rest van m'n code is in orde
[ Voor 14% gewijzigd door Onbekend op 22-11-2009 22:35 ]
Speel ook Balls Connect en Repeat
Wel leuk om te zien dat ik wederom alles foutloos heb kunnen beantwoorden. Daar ben ik overgens lang niet de enige mee. Een duidelijke verbetering t.o.v. de vorige keer.
Bezoek eens een willekeurige pagina
Maar zou je met je online Rummikub ook de RGBK codes of game controler tekentjes (rood rondje, groene driehoek, blauw kruisje, zwart vierkant) o.i.d in de stenen kunnen te zetten? Ik weet alleen niet of het dan erg druk wordt, want zoals de layout er nu uitziet, vind ik wel prettig.
500 "The server made a boo boo"
Verwijderd
@Soultaker: hoe gaat de uiteindelijke competitie er ongeveer uitzien? Ik zou nl. graag zvm potjes zien, zeg maar om standaarddeviaties plat te slaan. (Ik beloof plechting mijn speler wat sneller te maken
[edit]
En nog iets: is het misschien mogelijk om een game-id (sessie-id) mee te geven in de get/post parameters? Ik zeg niet dat ik dat zal gaan gebruiken, maar stel dat iemand gedrag van tegenstanders zou willen analyseren, dan zou dat wat administratief werk schelen.
[ Voor 29% gewijzigd door Verwijderd op 22-11-2009 23:26 ]
Mijn speler heeft een alles of niets strategie, dus er wordt nooit geprobeerd om slechts een deel van de stenen weg te spelen. Verder draait het op een trage computer en is de verbinding niet erg stabiel, dit in combinatie met het feit dat de computer in de VS staat zorgt dus ook voor de nodige RPC failures.Soultaker schreef op zondag 22 november 2009 @ 22:17:
Memorice' speler is ook wel leuk om te zien. Soms komt 'ie gewelig uit de hoek door in één keer 30 stenen op tafel te leggen (waarbij natuurlijk alles door elkaar gegooid wordt) maar even zo vaak blijft 'ie met 30 stenen zitten wat nogal desastreus uitpakt voor de totaalscore.
Ik zal helaas geen tijd meer hebben om nog iets te wijzigen aan mijn algoritme, over 3 dagen is het namelijk thanksgiving en dan ga ik op vakantie (en voor die tijd moet er nog hard gewerkt worden). Dus mijn speler zal er komende week niet bij zijn.
Ik ben echter zeer benieuwd naar jouw taktiek, gezien je gemiddeld slechts 8 ms nodig hebt, lijkt het me niet dat je brute forced.
@all: veel succes komende week
Edit:
@Soultaker
Zou je ook een lijstje kunnen produceren met speler naam + aantal keer dat de speler alle stenen wegspeelt?
[ Voor 5% gewijzigd door Memorice op 22-11-2009 23:47 ]
Verwijderd
Da's niet eens heel slecht, aangezien ik niks meer aan m'n falende ding heb gedaan.
edit: Lijkt erop dat het antwoord soms verloren gaat op netwerk niveau. Even kijken of ik voor volgende week een betrouwbaarder server kan vinden
[ Voor 33% gewijzigd door bat266 op 23-11-2009 05:48 ]
Better to remain silent and be thought a fool then to speak out and remove all doubt.
Verwijderd
Hoog?bat266 schreef op maandag 23 november 2009 @ 05:43:
Die illegale zetten had ik niet verwacht dat ik niet hoog zou eindigen wel. Was een basis implementatie. Vanavond even checken wat ik illegaal deed
Better to remain silent and be thought a fool then to speak out and remove all doubt.
Better to remain silent and be thought a fool then to speak out and remove all doubt.
Ik heb een alternatieve stylesheet toegevoegd, zodat je ook de letters erbij kunt krijgen als je wil. Wel wat drukker, maar als je anders de kleuren niet goed kunt herkennen, waarschijnlijk beter dan het was.Vaan Banaan schreef op zondag 22 november 2009 @ 22:39:
Maar zou je met je online Rummikub ook de RGBK codes of game controler tekentjes (rood rondje, groene driehoek, blauw kruisje, zwart vierkant) o.i.d in de stenen kunnen te zetten? Ik weet alleen niet of het dan erg druk wordt, want zoals de layout er nu uitziet, vind ik wel prettig.
Ik sta open voor suggesties, maar het plan was de finale op dezelfde manier te doen als de voorrondes: met een stuk of honderd spelletjes per speler, willekeurig ingedeeld. Als we hooguit 11 deelnemers hebben kan ik alle 330 combinaties van spelers meenemen, denk ik, maar dan is het nog niet helemaal eerlijk natuurlijk. Veel meer spelletjes lijkt me moeilijk binnen een window van vier uur.Verwijderd schreef op zondag 22 november 2009 @ 22:48:
@Soultaker: hoe gaat de uiteindelijke competitie er ongeveer uitzien? Ik zou nl. graag zvm potjes zien, zeg maar om standaarddeviaties plat te slaan.
Dat helpt wel iets, maar de traagste speler blijft grotendeels bepalend voor de looptijd van de competitie. Ik ben er geen voorstander van om de tijdlimiet verder te verlagen aangezien het veel deelnemers al moeite kost om binnen de vijf seconden te blijven. Dat is een deel van de uitdaging natuurlijk, maar ik wil de opdracht wel toegankelijk houden voor alle geïnteresseerden.(Ik beloof plechting mijn speler wat sneller te maken.)
Ik heb dit overwogen (ook zodat spelers parallelle spelletjes makkelijker uit elkaar kunnen houden) maar ik wilde het protocol niet verder veranderen. Op zich is het geen grote ingreep, maar wat is het voordeel voor analyse precies, als je ook samenhangende spelletjes uit de XML files kunt halen? Daar staat veel meer zinnige data in (zoals b.v. welke speler wat precies heeft gespeeld) die je zelf niet kunt loggen.En nog iets: is het misschien mogelijk om een game-id (sessie-id) mee te geven in de get/post parameters? Ik zeg niet dat ik dat zal gaan gebruiken, maar stel dat iemand gedrag van tegenstanders zou willen analyseren, dan zou dat wat administratief werk schelen.
Done; zie het eindklassement.Memorice schreef op zondag 22 november 2009 @ 23:07:
Zou je ook een lijstje kunnen produceren met speler naam + aantal keer dat de speler alle stenen wegspeelt?
Aanstaande zondagavond 19:00 is de finale. Als je me vóór die tijd een werkende URL stuurt doe je mee.dragontje124 schreef op maandag 23 november 2009 @ 14:36:
hmm leuk idee, tot en met wanneer kan je je inschrijven?
ik ga er nog even over nadenkenSoultaker schreef op maandag 23 november 2009 @ 15:42:
Aanstaande zondagavond 19:00 is de finale. Als je me vóór die tijd een werkende URL stuurt doe je mee.(Je kunt de URL natuurlijk ook eerder geven en ondertussen nog aan je speler werken, maar zorg dat 'ie voor het begin van de competitie goed werkt, anders gooi ik je eruit.
) Zie de opdrachtbeschrijving voor details.
Zie je meer de taktiek verschillen eruit komen. Het maak mij trouwens niet uit. Ik was al tevreden met deze uitslag, maar ga wel nog wat sleutelen. Ik kan woensdag pas naar de logs kijken (waar reageerde ik pas in 10 seconden), maar in een spel liet ik een 13 lopen, en dat kan het verschil maken.
edit: hij kan nu ook stenen toevoegen aan de tafel
[ Voor 20% gewijzigd door dragontje124 op 23-11-2009 23:00 ]
Thanks, leuk om te zien dat ik in ieder geval daarin goed was
Ja, ik moet daar nog eens goed naar kijken. Als het goed is is mijn algoritme "perfect" in de zin dat 'ie alles wat 'ie kán wegspelen ook daadwerkelijk wegspeelt. Ik vermoed dat Bolukan's algoritme op dezelfde manier "perfect" is aangezien we praktisch hetzelfde scoren. Het verschil in aantal gewonnen potjes zou dan op toeval berusten.Memorice schreef op dinsdag 24 november 2009 @ 00:21:
Thanks, leuk om te zien dat ik in ieder geval daarin goed wasGebasseerd op deze getallen zou ik zeggen dat er bij zowel jouw aanpak als die van Bolukan nog nog wat te winnen valt.
Dat jij hoger uitkomt qua gewonnen potjes verbaast me niet heel erg, aangezien je als "egoïstische" speler wel kunt profiteren van de stenen die andere mensen op tafel leggen (die je immers kunt gebruiken om mee te combineren) maar je tegenstanders niet jouw stenen kunnen gebruiken (want die hou je immers altijd vast). Dat levert je een voordeel op bij het uitgaan, maar niet in de totaalscore. (Daarom is het maar goed dat je daar strafpunten voor krijgt, anders zou niemand ooit een combinatie op tafel leggen, en zouden vrijwel alle potjes in remise eindigen)
Ik denk dat de egoistische manier wel de way to go is, maar dat mijn speler zou moeten proberen om X rondes voordat de stapel leeg is zoveel mogelijk weg te spelen. Of beter nog, wanneer de speler zoveel stenen kan wegspelen dat de score laag is (bijv. slechts 1 lage steen over blijft). De kans is dan vrij groot dat iemand anders met de nieuwe combinaties uit kan en toch blijft de score beperkt.Soultaker schreef op dinsdag 24 november 2009 @ 00:44:
[...]
Ja, ik moet daar nog eens goed naar kijken. Als het goed is is mijn algoritme "perfect" in de zin dat 'ie alles wat 'ie kán wegspelen ook daadwerkelijk wegspeelt. Ik vermoed dat Bolukan's algoritme op dezelfde manier "perfect" is aangezien we praktisch hetzelfde scoren. Het verschil in aantal gewonnen potjes zou dan op toeval berusten.
Dat jij hoger uitkomt qua gewonnen potjes verbaast me niet heel erg, aangezien je als "egoïstische" speler wel kunt profiteren van de stenen die andere mensen op tafel leggen (die je immers kunt gebruiken om mee te combineren) maar je tegenstanders niet jouw stenen kunnen gebruiken (want die hou je immers altijd vast). Dat levert je een voordeel op bij het uitgaan, maar niet in de totaalscore. (Daarom is het maar goed dat je daar strafpunten voor krijgt, anders zou niemand ooit een combinatie op tafel leggen, en zouden vrijwel alle potjes in remise eindigen)
Mijn huidige aanpak is erop gebaseerd dat ik probeer te profiteren van stenen op tafel zolang het nog kan. Stel er ligt een rode run van 1 t/m 5 op tafel en ik heb een rode 3 op hand. Dan kan ik nú de run splitsen en m'n 3 kwijtspelen, ongeacht of ik verder wat kan spelen. Ik kan 'm ook vasthouden tot ik alles kwijt kan, maar dat heeft twee gevolgen: ten eerste moet ik dan nu trekken (waarbij er een kans bestaat dat ik een steen in de maag gesplitst krijg die ik niet meer kwijt raak -- die kans is overigens wel klein als je nog veel andere stenen op hand hebt) en ten tweede bestaat het risico dat iemand anders de boel verbruit door het rijtje te splitsen om zelf een rode 3 te spelen (of bijvoorbeeld de 1 of 5 eraf haalt om met twee andere 1'en of 5'en te combineren).
Er zijn dus situaties denkbaar waarin het gunstig is om combinaties te spelen wanneer je de kans hebt en er niet tot het eind mee te wachten, helemaal los van de strafpunten waar je mee blijft zitten als iemand anders vóór je uit is. Maar hoe de voordelen en nadelen van de egoïstische strategie precies tegen elkaar uitspelen is moeilijk te zeggen.
In beginsel is dat in lijn met het speldoel (alle stene wegkrijgen),dus hou ik dat als basis. Wel wil ik zoeken naar specifieke situaties om vanwege onderbouwde reden af te wijken.
Daar ga ik over nadenken (heb minimaal 2 ideeen) en mogelijk kom ik met iets voor de volgende ronde.
Verwijderd
Nee hoor, dat hoeft niet erg ingewikkeld te zijn... Maak het jezelf niet te moeilijk, simpel denken, want dat is het.dragontje124 schreef op dinsdag 24 november 2009 @ 15:33:
mijn botje kan nu alle combinaties in zn eigen hand herkennen en stenen aanleggen op de tafel, volgende stap is het splitsen van combinaties op tafel, hoewel me dat toch vrij ingewikkeld lijkt
bedanktVerwijderd schreef op dinsdag 24 november 2009 @ 16:14:
[...]
Nee hoor, dat hoeft niet erg ingewikkeld te zijn... Maak het jezelf niet te moeilijk, simpel denken, want dat is het.Als je er niet uit komt, staat m'n PM-box open...
ik zat te denken:
bij het zoeken van combinaties controleer ik aan het einde of ik 3 of meer stenen in 1 combinatie heb gevonden, ik zou daar nog een else achter kunnen plakken en dan zoeken in de combinaties op tafel met 4 of meer stenen of daar nog een steen zit die erin zou kunnen passen..
Ik heb hier een beetje mee zitten spelen, en als ik alleen deterministische spelers gebruik, dan kan ik door elke speler met dezelfde set stenen op elke plaats te laten spelen de scores stabiliseren (zoals te verwachten is) maar zodra er non-deterministische spelers bijzitten of maar één speler anders is, is de uitkomst van een spelletje alweer aanzienlijk anders. Dat komt waarschijnlijk doordat er maar één keer iemand hoeft te trekken i.p.v. te spelen en het spelletje verloopt heel anders.Bolukan schreef op maandag 23 november 2009 @ 16:43:
Is het een idee om het als bridge te spelen. Het zelfde spel meerdere keren spelen met andere spelers. (Of zelfs 4 keer, maar als respectievelijk 1e, 2e,3e of 4e speler.)
Uiteindelijk is mijn conclusie dat je bij ~100 rondjes per speler ~3% variatie in scores kunt verwachten, ongeacht of je probeert te stabiliseren of niet. Om eerlijk te stabiliseren zou je dan álle combinaties van vier spelers moeten langsgaan én alle mogelijke permutaties daarvan, en dan liefst nog een aantal keer met verschillende stenen. Dat wordt veel te veel.
Ik denk dus dat ik het bij de huidige aanpak hou, en ik probeer gewoon 100+ spelletjes per speler te doen, als de tijd dat toelaat. Dan moeten we verder maar accepteren dat spelers die binnen een kleine marge van elkaar eindigen eigenlijk min of meer even goed zijn.
[ Voor 10% gewijzigd door Soultaker op 25-11-2009 00:18 ]
Ik ga voorlopig niet het stokje weer terugnemen. Niet alles gaat als gepland zoals het blijkbaar bij verhuizingen kan gaan. En ik weet ook niet wanneer wel maar dat zal ik wel aangeven met de tijd.
In iedergeval zal ik het rummibot opdracht erbij voegen aan SP.
Een echte golver is nooit uitgeput
Als je nog mee wil doen, stuur me dan vóór morgenavond een werkende URL. Vergeet ook niet wijzigingen door te geven als je URL veranderd is!
[ Voor 4% gewijzigd door Soultaker op 28-11-2009 17:40 ]