Programming Contest Nieuwe Stijl: Contest 3 *uitslagen!* Vorige deel Overzicht Volgende deel Laatste deel

Dit topic is onderdeel van een reeks. Ga naar het meest recente topic in deze reeks.

Pagina: 1 ... 9 ... 11 Laatste
Acties:
  • 6.419 views sinds 30-01-2008

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Darkwings
  • Registratie: Mei 2007
  • Laatst online: 25-06 11:33
Hmm, meer dan 97 punten op de officiele testset wordt het vanavond niet... binnenkort verder!

Acties:
  • 0 Henk 'm!

  • KoW
  • Registratie: Juli 2001
  • Laatst online: 17-08-2022

KoW

Parse parsed te veel

MrBucket schreef op zaterdag 09 juni 2007 @ 00:13:
Wat overigens niet wil zeggen dat je niet van tevoren kunt nadenken over het zoekalgoritme, maar om daadwerkelijk uit te vinden hoe het zich gedraagt in bepaalde situaties en wat de zwakke punten ervan zijn, daarvoor zul je (vaak) toch een implementatie moeten kunnen runnen.
Meestal denk ik eerst na over een "zoek-algoritme" en een bijbehorende datastructuur. Om het zoekalgoritme te testen zet ik gewoon wat data in de datastructuur.
Het controleren van de resultaten doe ik ook weer vanuit de datastructuur.

Pas wanneer alles redelijk werkt en ik grotere testsets nodig heb ga ik eens kijken om bestanden in te lezen zonder al te veel foutcontrole gevolgd door de verdere testen.
Daarna komt het wegschrijven van de uitvoerbestanden en tot slot komen de randbeveiligingen op de inkomende data.
(Uiteraard weer gevolgd door tests)

Acties:
  • 0 Henk 'm!

  • Darkwings
  • Registratie: Mei 2007
  • Laatst online: 25-06 11:33
Darkwings schreef op zaterdag 09 juni 2007 @ 00:41:
Hmm, meer dan 97 punten op de officiele testset wordt het vanavond niet... binnenkort verder!
En ondertussen al op 144 *O*

Acties:
  • 0 Henk 'm!

  • cobratbq
  • Registratie: Maart 2001
  • Laatst online: 17-12-2015
Duuuudesss!!!!

Ben ik een paar weekjes druk bezig met afstuderen... > 800 posts!!!! om door te lezen :P

One ring to rule them all, one ring to find them, one ring to bring them all, and in darkness bind them...


Acties:
  • 0 Henk 'm!

  • MrBucket
  • Registratie: Juli 2003
  • Laatst online: 29-10-2022
Kan ik ervan uitgaan dat de keys in de deelnemers.ini in dezelfde volgorde worden gespecificeerd als in het voorbeeld?

En moet ik ook rekening houden met comment-symbolen in de ini-file ("#", ";"), of gelden deze als geldige eerste tekens?

Acties:
  • 0 Henk 'm!

  • Pete
  • Registratie: November 2005
  • Laatst online: 15-12-2024
MrBucket schreef op zaterdag 09 juni 2007 @ 20:43:
Kan ik ervan uitgaan dat de keys in de deelnemers.ini in dezelfde volgorde worden gespecificeerd als in het voorbeeld?

En moet ik ook rekening houden met comment-symbolen in de ini-file ("#", ";"), of gelden deze als geldige eerste tekens?
Er is toegezegd dat er geen comments gebruikt worden in de ini-files (maar het is natuurlijk leuk als je code er niet kapot van gaat).

De keys kunnen voor zover ik weet in willekeurige volgorde gebruikt worden in de files.

petersmit.eu


Acties:
  • 0 Henk 'm!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 03-02 23:18

D2k

263 is mijn max atm op zijn janboerenfluitjes. Moet dus wat anders verzinnen

Doet iets met Cloud (MS/IBM)


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 11:18

Creepy

Tactical Espionage Splatterer

MrBucket schreef op zaterdag 09 juni 2007 @ 20:43:
Kan ik ervan uitgaan dat de keys in de deelnemers.ini in dezelfde volgorde worden gespecificeerd als in het voorbeeld?
Nope, dat kan in geen enkele ini. Je zult echt de key's moeten herkennen.
En moet ik ook rekening houden met comment-symbolen in de ini-file ("#", ";"), of gelden deze als geldige eerste tekens?
Er komen geen comments in de ini's.

"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


Acties:
  • 0 Henk 'm!

  • Marcks
  • Registratie: April 2007
  • Laatst online: 10:34
Creepy schreef op zondag 10 juni 2007 @ 00:57:
[...]

Nope, dat kan in geen enkele ini. Je zult echt de key's moeten herkennen.
Hmm, goed dat ik dit nog even opvang. Het staat inderdaad wel in de TS, maar de officiële testset hield steeds dezelfde volgorde aan, dus ging ik ervan uit dat die volgorde bindend was.

Geheugenmanagement in QB komt me nu trouwens echt helemaal m'n neus uit en ik heb besloten om Delphi er weer eens bij te pakken om mijn plannen uit te werken. Mocht dat totaal niet werken, dan val ik misschien wel weer terug. Da's vrij waarschijnlijk trouwens, want mijn plannen werken nooit. :p


...maar dat ze bij het installeren al mislukken vanwege corrupte files, is nieuw voor mij. :'(

[ Voor 7% gewijzigd door Marcks op 10-06-2007 12:43 ]

Ik veronschuldig mij bij voorbaat voor het bovenstaande.


Acties:
  • 0 Henk 'm!

  • ? ?
  • Registratie: Mei 2007
  • Niet online

? ?

waarom geen C# ? eenvoudig te leren, veel over te vinden
de express IDE's zijn gratis te downloaden en te gebruiken

Acties:
  • 0 Henk 'm!

  • Marcks
  • Registratie: April 2007
  • Laatst online: 10:34
era.zer schreef op zondag 10 juni 2007 @ 15:57:
waarom geen C# ? eenvoudig te leren, veel over te vinden
de express IDE's zijn gratis te downloaden en te gebruiken
Omdat mijn ervaring in c# simpelweg 0,0 is.

Ik veronschuldig mij bij voorbaat voor het bovenstaande.


Acties:
  • 0 Henk 'm!

  • Eskimootje
  • Registratie: Maart 2002
  • Laatst online: 11:51
Nou ik heb mijn inzending alvast verstuurd. Heb geen tijd meer voorlopig ivm aanschaf huis.
Ik zal helaas geen eerste worden met de code die ik heb.

Acties:
  • 0 Henk 'm!

  • ? ?
  • Registratie: Mei 2007
  • Niet online

? ?

Marcks schreef op zondag 10 juni 2007 @ 19:13:
[...]

Omdat mijn ervaring in c# simpelweg 0,0 is.
't is vrijwel 't zelfde als java, en lijkt veel op visual basic
op een paar dagen kun je 't ;)

Acties:
  • 0 Henk 'm!

Anoniem: 222622

era.zer schreef op zondag 10 juni 2007 @ 21:30:
[...]

't is vrijwel 't zelfde als java, en lijkt veel op visual basic
op een paar dagen kun je 't ;)
Dat vind ik knap; heb ooit eens VBA gedaan, maar denk dat PHP5 meer op Java lijkt dan VB op Java

Acties:
  • 0 Henk 'm!

Anoniem: 222622

MrBucket schreef op zaterdag 09 juni 2007 @ 00:13:
[...]

Ik zou qua prioriteit aanhouden:
1) Een praktische datastructuur verzinnen voor de personen en huisjes die efficient te doorzoeken is.
2) Het inlezen van de invoerbestanden
3) Het bepalen van het puntenaantal voor een bepaalde configuratie.
4) Wegschrijven van een configuratie.
5) Het implementeren van een zoekalgoritme.

Het belangrijkste komt (voor mij in ieder geval) het laatste. Dit klinkt in eerste instantie misschien contra-intuitief, maar je hebt gewoon een bepaalde basis nodig voordat je met het interessante gedeelte aan de slag kan.

Wat overigens niet wil zeggen dat je niet van tevoren kunt nadenken over het zoekalgoritme, maar om daadwerkelijk uit te vinden hoe het zich gedraagt in bepaalde situaties en wat de zwakke punten ervan zijn, daarvoor zul je (vaak) toch een implementatie moeten kunnen runnen.
Helemaal mee eens dude. Het belangrijkste is dat het programma werkt volgens de regels, daarna maak je hem slimmer.

Met OOP kan je dit zeer elegant doen: maak een abstracte klasse/interface Scheduler, en dan kan je die uitbreiden met FastScheduler, RandomScheduler, SmartScheduler, BriliantScheduler, ... :D

Acties:
  • 0 Henk 'm!

  • Malthus
  • Registratie: April 2003
  • Laatst online: 23-04 15:30
Marcks schreef op zondag 10 juni 2007 @ 19:13:
Omdat mijn ervaring in c# simpelweg 0,0 is.
Dat is voor mij juist een reden om het wel in C# te doen. :) Ik heb ook nauwelijks ervaring met C# (ik had hiervoor slechts een boek gelezen en een simpel programma geschreven). Op deze manier heb ik een leuke uitdaging en leer ik ook weer eens iets nieuws!

Acties:
  • 0 Henk 'm!

Anoniem: 222622

@ _wm_

allereerst: een briljant ding, ik maak er graag gebruik van. Even een vraag over de puntenteller, want onze validators komen niet overeen. Jouw uitslag:

InvalideHuis1: 6
InvalideHuis2: 13
InvalideHuis3: 11
Huis1: 14
Huis2: 20
Huis3: 28
Huis4: 11
Huis5: 0
Huis6: 18
Huis7: 23
Huis8: 28
Huis9: 26
Huis10: 21
Huis11: 13
Huis12: 9
Huis13: 15
Huis14: 5
Huis15: 15
------------------------------+
totaal aantal punten voor puur de huisjes: 276

nietgeplaatstpunten: 0
partnerpunten: 100
roomiepunten binnen de kamer: 205
roomiepunten binnen het huis: -23
voorkeurpunten: 0
vegetarischpunten: -6
------------------------------+
totaal aantal punten voor jouw inzending bij deze set: 276

Mijn uitslag

[04:51:07.875] InvalideHuis1 10
[04:51:07.875] InvalideHuis2 15
[04:51:07.875] InvalideHuis3 10
[04:51:07.875] Huis1 11
[04:51:07.875] Huis2 20
[04:51:07.875] Huis3 30
[04:51:07.875] Huis4 15
[04:51:07.875] Huis5 5
[04:51:07.875] Huis6 20
[04:51:07.875] Huis7 23
[04:51:07.875] Huis8 30
[04:51:07.875] Huis9 25
[04:51:07.875] Huis10 20
[04:51:07.875] Huis11 15
[04:51:07.875] Huis12 11
[04:51:07.875] Huis13 15
[04:51:07.875] Huis14 13
[04:51:07.875] Huis15 15
[04:51:07.875] Huis16 0
[04:51:07.875] Huis17 0
[04:51:07.875] Behaalde score: 303

standaard ini files

Hoe zit dat? Ik neem aan dat je per huis gewoon alle punten laat zien?

Acties:
  • 0 Henk 'm!

  • Darkwings
  • Registratie: Mei 2007
  • Laatst online: 25-06 11:33
Zo, gisteravond lekker de hele avond zitten segv'en :{ Met een beetje geluk is het vanavond opgelost, weet ondertussen wel waar het in zit.

En dan... hoop ik vanavond boven de 300 punten te komen op de officiele testset *O*

Acties:
  • 0 Henk 'm!

  • _wm_
  • Registratie: Mei 2007
  • Laatst online: 29-04 21:51
Anoniem: 222622 schreef op dinsdag 12 juni 2007 @ 05:05:
@ _wm_

allereerst: een briljant ding, ik maak er graag gebruik van. Even een vraag over de puntenteller, want onze validators komen niet overeen.
standaard ini files

Hoe zit dat? Ik neem aan dat je per huis gewoon alle punten laat zien?
danku ;)

Ik geloof dat iedereen dezelfde scores krijgt als ik, dus ik 'denk' dat die van jou niet helemaal klopt... Ik laat per huis inderdaad alle punten zien. Dus de huispunten (voorkeuren, vegetarisch enz) en de persoonspunten (bij roomie op kamer, roomie in hetzelfde huis, enz)...

misschien kun je ook een overzichtje maken van dit:
nietgeplaatstpunten: 0
partnerpunten: 100
roomiepunten binnen de kamer: 205
roomiepunten binnen het huis: -23
voorkeurpunten: 0
vegetarischpunten: -6

dan kan je zien in welk gedeelte het vooral fout gaat...

succes in ieder geval!!

[ Voor 37% gewijzigd door _wm_ op 12-06-2007 11:29 ]


Acties:
  • 0 Henk 'm!

Anoniem: 215186

MrBucket schreef op zaterdag 09 juni 2007 @ 00:13:
[...]

Ik zou qua prioriteit aanhouden:
1) Een praktische datastructuur verzinnen voor de personen en huisjes die efficient te doorzoeken is.
2) Het inlezen van de invoerbestanden
3) Het bepalen van het puntenaantal voor een bepaalde configuratie.
4) Wegschrijven van een configuratie.
5) Het implementeren van een zoekalgoritme.

Het belangrijkste komt (voor mij in ieder geval) het laatste. Dit klinkt in eerste instantie misschien contra-intuitief, maar je hebt gewoon een bepaalde basis nodig voordat je met het interessante gedeelte aan de slag kan.

Wat overigens niet wil zeggen dat je niet van tevoren kunt nadenken over het zoekalgoritme, maar om daadwerkelijk uit te vinden hoe het zich gedraagt in bepaalde situaties en wat de zwakke punten ervan zijn, daarvoor zul je (vaak) toch een implementatie moeten kunnen runnen.
Ik ben het oneens met die volgorde. De datastructuur hangt namelijk enorm samen met het type zoekalgortime dat je gebruikt. Ok, bij de traditionele algoritmen maakt het niet zoveel uit maar er zijn vele exotische algoritmen die helemaal niet om zouden kunnen met een voor de rest heel goede datastructuur.

Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 11:40

Onbekend

...

Anoniem: 222622 schreef op dinsdag 12 juni 2007 @ 05:05:
@ _wm_

allereerst: een briljant ding, ik maak er graag gebruik van. Even een vraag over de puntenteller, want onze validators komen niet overeen.

[Knip].............[/Knip]

standaard ini files

Hoe zit dat? Ik neem aan dat je per huis gewoon alle punten laat zien?
Zou je je output file kunnen posten?
Ik kan (in mijn programma) goed zien waar welke punt waar vandaan komt. Misschien is het wel simpel een tikfoutje in de code...

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

  • MrBucket
  • Registratie: Juli 2003
  • Laatst online: 29-10-2022
Anoniem: 215186 schreef op dinsdag 12 juni 2007 @ 14:16:
[...]


Ik ben het oneens met die volgorde. De datastructuur hangt namelijk enorm samen met het type zoekalgortime dat je gebruikt. Ok, bij de traditionele algoritmen maakt het niet zoveel uit maar er zijn vele exotische algoritmen die helemaal niet om zouden kunnen met een voor de rest heel goede datastructuur.
Natuurlijk moet je datastructuur aansluiten bij je zoekalgoritme. Maar er is imo een verschil tussen het implementeren van de opslagstructuur an sich en het de implementatie van het algoritme wat deze datastructuur gaat doorzoeken om de beste vulling voor de huisjes te leveren.

Het eerste zal in vergelijking minder werk (en minder complex) zijn, en als je weet dat het inlezen, wegschrijven en het bepalen van de puntenaantal allemaal leunen op de representatie van de deelnemers in het geheugen, dan lijkt het me een logische keuze om als eerste die datastructuur te implementeren.

Immers, als je bestanden kunt inlezen en wegschrijven, dan is het ook veel makkelijker om je algoritme te gaan tweaken. Je kunt (met een van de beschikbare generatoren) je algoritme snel onderwerpen aan verschillende testsets en kijken op welke punten het zwakke plekken vertoont.

Acties:
  • 0 Henk 'm!

  • lvh
  • Registratie: Juli 2001
  • Laatst online: 02-11-2022

lvh

Anoniem: 215186 schreef op dinsdag 12 juni 2007 @ 14:16:
[...]


Ik ben het oneens met die volgorde. De datastructuur hangt namelijk enorm samen met het type zoekalgortime dat je gebruikt. Ok, bij de traditionele algoritmen maakt het niet zoveel uit maar er zijn vele exotische algoritmen die helemaal niet om zouden kunnen met een voor de rest heel goede datastructuur.
Men noemt het: inheritance ;)

Ik heb een algemene class waar m'n persoonsinformatie in zit (Person). Als ik grafisch wil werken, laat ik een tweede class (Dot) ofwel alle eigenschappen van een Person inheriten ofwel maak in een link naar een Person object (kan prima in Moose):
Perl:
1
has "person" (isa => "Person", is => "ro", required => 1, default => sub {return Person->new()});

[ Voor 28% gewijzigd door lvh op 13-06-2007 09:04 ]


Acties:
  • 0 Henk 'm!

Anoniem: 215186

Ik denk dat er wat misverstanden zijn. De voorstelling van een persoon in zich is niet echt afhankelijk van het algoritme. De manier waarop de invullingen voorgesteld worden echter des te meer. Hoe je opslaat wie waar slaapt en zo.

Eerste (voorzichtige) resultaat in java: 363 in 10 minuten met de voorbeeldbestanden

Nog veel optimalisatie-werk aan maar voorlopig al tevreden

Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 11:40

Onbekend

...

Is dit eigenlijk een geldige uitput file?
[huisje1]
kamer1=,
kamer2=,
kamer3=Kheldar,Remy
kamer4=Floris

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

  • Eskimootje
  • Registratie: Maart 2002
  • Laatst online: 11:51
nee als de kamer leeg is helemaal niets invullen ook geen komma.

Acties:
  • 0 Henk 'm!

Anoniem: 222622

Ook onbekend schreef op dinsdag 12 juni 2007 @ 18:54:
[...]

Zou je je output file kunnen posten?
Ik kan (in mijn programma) goed zien waar welke punt waar vandaan komt. Misschien is het wel simpel een tikfoutje in de code...
Hierbij mijn voorlopige output. Ik realiseer me dat ik teveel invaliden heb, ben daar nog mee aan het werk. Mijn applicatie geeft de volgende punten:

[23:30:24.703] InvalideHuis1 15
[23:30:24.703] InvalideHuis2 10
[23:30:24.703] InvalideHuis3 0
[23:30:24.703] Huis1 15
[23:30:24.703] Huis2 0
[23:30:24.703] Huis3 0
[23:30:24.703] Huis4 13
[23:30:24.703] Huis5 25
[23:30:24.703] Huis6 20
[23:30:24.703] Huis7 34
[23:30:24.703] Huis8 10
[23:30:24.703] Huis9 15
[23:30:24.703] Huis10 35
[23:30:24.703] Huis11 23
[23:30:24.703] Huis12 5
[23:30:24.703] Huis13 21
[23:30:24.703] Huis14 15
[23:30:24.703] Huis15 20
[23:30:24.703] Huis16 20
[23:30:24.703] Huis17 15
[23:30:24.703] Behaalde score: 311


output.ini
[InvalideHuis1]
kamer1=Terr,Koffie
kamer2=curry684,Wilke
kamer3=Harm,Ropniko
kamer4=Xandrios,Twynn

[InvalideHuis2]
kamer1=Floris,Femme
kamer2=Roelant,dawuss
kamer3=wilhelmstroker,Confusionçý
kamer4=Iria,Wouter Tinus

[InvalideHuis3]
kamer1=Canaria,pasta
kamer2=T.T.,JvS
kamer3=Aikeleer,Remy
kamer4=p0m,Kheldar

[Huis1]
kamer1=W3ird_N3rd,botoo
kamer2=aperture,ACM
kamer3=Qwerty-273,Thandor
kamer4=

[Huis2]
kamer1=
kamer2=
kamer3=
kamer4=

[Huis3]
kamer1=
kamer2=
kamer3=
kamer4=

[Huis4]
kamer1=KeX,bjck
kamer2=Steffie,Longbeard
kamer3=Juultje,McVirusS
kamer4=Zoefff,Mick

[Huis5]
kamer1=whoami,Margje
kamer2=BalusC,dreeke
kamer3=Grrrrrene,Kees
kamer4=Ghost,dion_b

[Huis6]
kamer1=Jimmy Pop,Rataplan
kamer2=Stefke,-NMe-
kamer3=Fuelke,Daedalus
kamer4=Pascal Saul,HlpDsK

[Huis7]
kamer1=RobIII,IlseIII
kamer2=dusty,Sophia
kamer3=LuNaTiC,Ecteinascidin
kamer4=Gwenneth,BtM909

[Huis8]
kamer1=AcouSE,RM-rf
kamer2=crisp,Dido
kamer3=Superdeboer,Yoeri
kamer4=Hahn,Microkid

[Huis9]
kamer1=xxfile,GeniusDex
kamer2=Arthur,Drobanir
kamer3=polaris,leon1e
kamer4=blaataaps,alt-92

[Huis10]
kamer1=Janoz,Rosette
kamer2=Wouke,XangadiX
kamer3=Kaj.,Pim.
kamer4=André,Janette

[Huis11]
kamer1=Spider.007,Hielko
kamer2=Hans,.oisyn
kamer3=naftebakje,Inge Janse
kamer4=Emmeline,Creepy

[Huis12]
kamer1=Michel,Pollewob
kamer2=haribold,F_J_K
kamer3=YellowCube,TinuX
kamer4=Apen-nootjes,Rukapul

[Huis13]
kamer1=rob_erwt,Opi
kamer2=JHS,Lustucru
kamer3=P_de_B,Joror
kamer4=Oscar the Grouch,Robin

[Huis14]
kamer1=Atlas,Fisico
kamer2=woltjer,Dimitri R
kamer3=chem,Renegade
kamer4=Crash,Sprite_tm

[Huis15]
kamer1=Ralph Smeets,mOrPhie
kamer2=cybersteef,Martin Sturm
kamer3=DeeD2k2,Abbadon
kamer4=voodooless,Equator

[Huis16]
kamer1=Daniel,moto-moi
kamer2=DSmarty,JAVA-Doctor
kamer3=Orion84,zeef
kamer4=Cookie,SmartDoDo

[Huis17]
kamer1=Jan Laros,elevator
kamer2=Eggy,Floppus
kamer3=Jasper,Turkish
kamer4=sanfranjake,zomertje


Acties:
  • 0 Henk 'm!

Anoniem: 222622

Anoniem: 215186 schreef op dinsdag 12 juni 2007 @ 14:16:
[...]


Ik ben het oneens met die volgorde. De datastructuur hangt namelijk enorm samen met het type zoekalgortime dat je gebruikt. Ok, bij de traditionele algoritmen maakt het niet zoveel uit maar er zijn vele exotische algoritmen die helemaal niet om zouden kunnen met een voor de rest heel goede datastructuur.
Als je een beetje nadenkt, kom je erachter dat het handig is om zoveel mogelijk relaties te leggen tussen de entiteiten; bijvoorbeeld een persoon weet in welke kamer hij is ingedeeld, een kamer weet in welk huis, persoon kent zijn roomie, zijn partner, categorie, etc... Dit kost niet bijzonder veel werk, maar als je dit hebt gedaan, dan kan je de meest "exotische" (wat dat ook zijn moge) gewoon toepassen. En stel dat je dan een relatie nodig hebt: schrijf er een methode voor die het via via kan achterhalen, en anders voeg je een instantievar toe. Ik doe alles OOP dus daar werkt sowieso alles prettig met relaties.

Mijn exotische algoritme haalt in een halve seconde 320 punten. Met wat correcties ivm mijn wazig validator is dat zo'n 300 punten in 1 sec; heb ik nog alle tijd om nog slimmere algoritmes te maken, en tot slot nog wat random wisseltrucs te proberen.

Houden jullie ook rekening met de maximale uitvoertijd van 30 minuten?

Succes er verder mee!

Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 11:40

Onbekend

...

Anoniem: 222622 schreef op woensdag 13 juni 2007 @ 23:41:
output.ini
[InvalideHuis2]
kamer1=Floris,Femme
kamer2=Roelant,dawuss
kamer3=wilhelmstroker,Confusionçý
kamer4=Iria,Wouter Tinus
Mijn tester geeft een foutmelding op een nietbestaand persoon. Namelijk "Confusionçý".
Als ik deze repareer kom ik op 295 punten uit. Dit is het zelfde aantal als _WM_.

Dit is een samenvatting van jouw outputfile:

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
=== Huisnr 1 ===
Voorkeur vol huis   0
Voorkeurspunten 0
Vegetarisch 0
NR  Roomie in kamer Parner punten   Niet roomie in kamer    Roomie in huis  niet roomie in huis Vegetariër alleen in huis
1   5   0   0   0   0   0
2   0   0   0   0   -2  -2
3   0   0   0   0   0   0
4   0   0   0   0   0   0
5   5   0   0   0   0   0
6   0   0   0   0   0   0
7   5   0   0   0   0   0
8   0   0   0   0   0   0
===Subtotaal: 11===

=== Huisnr 2 ===
Voorkeur vol huis   0
Voorkeurspunten 0
Vegetarisch 0
NR  Roomie in kamer Parner punten   Niet roomie in kamer    Roomie in huis  niet roomie in huis Vegetariër alleen in huis
1   0   0   0   0   0   0
2   0   0   0   0   0   0
3   5   0   0   0   0   0
4   0   0   0   0   0   -2
5   0   0   0   0   0   0
6   0   0   0   0   0   0
7   5   0   0   0   0   0
8   0   0   0   0   0   0
===Subtotaal: 8===

=== Huisnr 3 ===
Voorkeur vol huis   0
Voorkeurspunten 0
Vegetarisch 0
NR  Roomie in kamer Parner punten   Niet roomie in kamer    Roomie in huis  niet roomie in huis Vegetariër alleen in huis
1   0   0   0   0   0   0
2   0   0   0   0   0   0
3   0   0   0   0   0   0
4   0   0   0   0   0   0
5   0   0   0   0   0   0
6   0   0   0   0   0   0
7   0   0   0   0   0   0
8   0   0   0   0   0   0
===Subtotaal: 0===

=== Huisnr 4 ===
Voorkeur vol huis   0
Voorkeurspunten 0
Vegetarisch 0
NR  Roomie in kamer Parner punten   Niet roomie in kamer    Roomie in huis  niet roomie in huis Vegetariër alleen in huis
1   5   0   0   0   0   0
2   0   0   0   0   0   0
3   0   0   0   0   0   0
4   5   0   0   0   0   0
5   0   0   0   0   0   0
6   5   0   0   0   0   0
===Subtotaal: 15===

=== Huisnr 5 ===
Voorkeur vol huis   0
Voorkeurspunten 0
Vegetarisch 0
NR  Roomie in kamer Parner punten   Niet roomie in kamer    Roomie in huis  niet roomie in huis Vegetariër alleen in huis
1   3   0   0   0   0   0
2   0   0   0   0   0   0
3   0   0   0   0   0   0
4   0   0   0   0   0   0
5   0   5   0   0   0   0
6   0   5   0   0   0   0
7   0   0   0   0   0   0
8   0   0   0   0   0   -2
===Subtotaal: 11===

=== Huisnr 6 ===
Voorkeur vol huis   0
Voorkeurspunten 0
Vegetarisch 0
NR  Roomie in kamer Parner punten   Niet roomie in kamer    Roomie in huis  niet roomie in huis Vegetariër alleen in huis
1   0   5   0   0   0   0
2   0   5   0   0   0   0
3   5   0   0   0   0   0
4   0   0   0   0   0   0
5   0   0   0   0   0   0
6   5   0   0   0   -2  0
7   0   0   0   0   0   0
8   5   0   0   0   0   0
===Subtotaal: 23===

=== Huisnr 7 ===
Voorkeur vol huis   0
Voorkeurspunten 0
Vegetarisch 0
NR  Roomie in kamer Parner punten   Niet roomie in kamer    Roomie in huis  niet roomie in huis Vegetariër alleen in huis
1   5   0   0   0   0   0
2   0   0   0   0   0   0
3   0   5   0   0   0   0
4   0   5   0   0   0   0
5   0   0   0   0   0   0
6   5   0   0   0   0   0
7   0   0   0   0   0   0
8   0   0   0   0   0   0
===Subtotaal: 20===

=== Huisnr 8 ===
Voorkeur vol huis   0
Voorkeurspunten 2
Vegetarisch 0
NR  Roomie in kamer Parner punten   Niet roomie in kamer    Roomie in huis  niet roomie in huis Vegetariër alleen in huis
1   0   5   0   0   0   0
2   0   5   0   0   0   0
3   0   5   0   1   0   0
4   0   5   0   0   0   0
5   0   0   0   0   0   0
6   0   0   0   1   0   0
7   0   5   0   0   0   0
8   0   5   0   1   0   0
===Subtotaal: 35===

=== Huisnr 9 ===
Voorkeur vol huis   0
Voorkeurspunten 0
Vegetarisch 0
NR  Roomie in kamer Parner punten   Niet roomie in kamer    Roomie in huis  niet roomie in huis Vegetariër alleen in huis
1   0   0   0   0   0   0
2   0   0   0   0   0   0
3   5   0   0   0   0   0
4   0   0   0   0   0   0
5   0   0   0   0   0   0
6   0   0   0   0   0   -2
7   5   0   0   0   0   0
8   0   0   0   0   0   0
===Subtotaal: 8===

=== Huisnr 10 ===
Voorkeur vol huis   0
Voorkeurspunten 0
Vegetarisch 0
NR  Roomie in kamer Parner punten   Niet roomie in kamer    Roomie in huis  niet roomie in huis Vegetariër alleen in huis
1   5   0   0   0   0   0
2   0   0   0   0   0   0
3   0   0   0   0   0   0
4   0   0   0   0   0   0
5   5   0   0   0   0   0
6   0   0   0   0   0   0
7   0   0   0   0   0   0
8   5   0   0   0   -2  0
===Subtotaal: 13===

=== Huisnr 11 ===
Voorkeur vol huis   0
Voorkeurspunten 0
Vegetarisch 0
NR  Roomie in kamer Parner punten   Niet roomie in kamer    Roomie in huis  niet roomie in huis Vegetariër alleen in huis
1   0   5   0   1   0   0
2   0   5   0   0   0   0
3   0   5   0   0   -2  0
4   0   5   0   0   0   0
5   5   0   0   0   0   0
6   0   0   0   0   0   0
7   0   5   0   0   0   0
8   0   5   0   0   -2  0
===Subtotaal: 32===

=== Huisnr 12 ===
Voorkeur vol huis   0
Voorkeurspunten 0
Vegetarisch 0
NR  Roomie in kamer Parner punten   Niet roomie in kamer    Roomie in huis  niet roomie in huis Vegetariër alleen in huis
1   5   0   0   0   0   0
2   0   0   0   0   0   0
3   5   0   0   0   -2  0
4   0   0   0   0   0   0
5   5   0   0   0   0   0
6   0   0   0   1   0   0
7   0   5   0   0   0   0
8   0   5   0   0   0   0
===Subtotaal: 24===

=== Huisnr 13 ===
Voorkeur vol huis   0
Voorkeurspunten 0
Vegetarisch 0
NR  Roomie in kamer Parner punten   Niet roomie in kamer    Roomie in huis  niet roomie in huis Vegetariër alleen in huis
1   0   0   0   0   0   0
2   0   0   0   0   0   0
3   0   0   0   0   -2  0
4   0   0   0   0   0   0
5   5   0   0   0   0   0
6   0   0   0   0   0   0
7   0   0   0   0   0   0
8   0   0   0   0   0   0
===Subtotaal: 3===

=== Huisnr 14 ===
Voorkeur vol huis   0
Voorkeurspunten 0
Vegetarisch 0
NR  Roomie in kamer Parner punten   Niet roomie in kamer    Roomie in huis  niet roomie in huis Vegetariër alleen in huis
1   0   0   0   0   0   0
2   5   0   0   0   0   0
3   0   0   0   1   0   0
4   5   0   0   0   0   0
5   5   0   0   0   0   0
6   0   0   0   0   0   0
7   0   0   0   0   0   0
8   5   0   0   0   0   0
===Subtotaal: 21===

=== Huisnr 15 ===
Voorkeur vol huis   0
Voorkeurspunten 0
Vegetarisch 0
NR  Roomie in kamer Parner punten   Niet roomie in kamer    Roomie in huis  niet roomie in huis Vegetariër alleen in huis
1   0   0   0   0   0   0
2   5   0   0   0   0   0
3   0   0   0   0   0   0
4   5   0   0   0   0   0
5   0   0   0   0   0   0
6   0   0   0   0   0   0
7   5   0   0   0   0   0
8   0   0   0   1   0   0
===Subtotaal: 16===

=== Huisnr 16 ===
Voorkeur vol huis   0
Voorkeurspunten 0
Vegetarisch 0
NR  Roomie in kamer Parner punten   Niet roomie in kamer    Roomie in huis  niet roomie in huis Vegetariër alleen in huis
1   0   0   0   0   0   0
2   5   0   0   0   0   0
3   5   0   0   0   0   0
4   0   0   0   0   0   0
5   5   0   0   0   0   0
6   0   0   0   0   0   0
7   5   0   0   0   0   0
8   0   0   0   0   0   0
===Subtotaal: 20===

=== Huisnr 17 ===
Voorkeur vol huis   0
Voorkeurspunten 0
Vegetarisch 2
NR  Roomie in kamer Parner punten   Niet roomie in kamer    Roomie in huis  niet roomie in huis Vegetariër alleen in huis
1   0   0   0   0   0   0
2   5   0   0   0   0   0
3   5   0   0   0   0   0
4   0   0   0   0   0   0
5   5   0   0   0   0   0
6   0   0   0   1   0   0
7   0   0   0   0   0   0
8   5   0   0   0   -2  0
===Subtotaal: 21===

=== Huisnr 18 ===
Voorkeur vol huis   0
Voorkeurspunten 0
Vegetarisch 0
NR  Roomie in kamer Parner punten   Niet roomie in kamer    Roomie in huis  niet roomie in huis Vegetariër alleen in huis
1   0   0   0   0   0   0
2   0   0   0   1   0   0
3   5   0   0   0   0   0
4   0   0   0   0   0   0
5   5   0   0   0   0   0
6   0   0   0   0   -2  0
7   0   0   0   0   0   0
8   5   0   0   0   0   0
===Subtotaal: 14===

Message: Points: 295
Message: Script finished.


(Tja, 't is een lap data......)
Hopelijk heb je hier iets aan.

[ Voor 10% gewijzigd door Onbekend op 14-06-2007 00:20 ]

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

  • liquid_ice
  • Registratie: Februari 2001
  • Laatst online: 08:34
Als ik lees dat mensen in 1sec ofzow al 300punten halen en je mag 30 min besteden...
waarom laat je je programma dan niet langer doorzoeken?

Klus page: http://klusthuis.blogspot.com


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 11:18

Creepy

Tactical Espionage Splatterer

Omdat je je niet blind moet staren op tijden en punten van welke test set dan ook. Voor hetzelfde geld is de uiteindelijke set 10 keer zo klein of 1000 keer zo groot.

Optimaliseer je ideeen en algoritmes. Ga niet zitten optimaliseren speciaal voor een test set.

[ Voor 22% gewijzigd door Creepy op 14-06-2007 14:52 ]

"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


Acties:
  • 0 Henk 'm!

  • Bloody NO!
  • Registratie: Juli 2004
  • Laatst online: 21-05-2020
Ook ik doe mee met de wedstrijd, en wel met een programma geschreven in Python. (Dat wilde ik altijd eens leren) Op het moment kan ik de data inlezen en voer ik een aantal checks uit op de data, zodat het niet crasht bij onregelmatigheden. Op het moment staat d'r op het programma om nog meer checks uit te voeren, een output en puntentelsysteem te maken en daarna ga ik me storten op het algoritme. :)

Et peut-être un siècle nouveau commence-t-il, un siècle où les intellectuels et la classe cultivée rêveront aux moyens d'éviter les utopies et de retourner à une société non utopique, moins 'parfaite' et plus libre. - N. Berdiaeff


Acties:
  • 0 Henk 'm!

Anoniem: 222622

liquid_ice schreef op donderdag 14 juni 2007 @ 13:35:
Als ik lees dat mensen in 1sec ofzow al 300punten halen en je mag 30 min besteden...
waarom laat je je programma dan niet langer doorzoeken?
Het verdienen van de punten gaat niet liniair. Dat zou betekenen dat je als je in 1 seconde 300 punten kunt verdienen, dan in twee secs 600 etc... In het begin gaat het makkelijk met de punten, maar daarna wordt het lastiger omdat voorwaarden elkaar tegen gaan werken: bv. je zit wel bij je roomie, maar die heeft een andere voorkeur, dus loop je je voorkeurbonus mis etc...

Natuurlijk kan je wat wisselingen proberen en kijken of dit voordelig is, maar dat moet je wel goed aanpakken. Er zijn namelijk voor de testset teveel combinaties, daar zou je programma minstens dagen over doen; kan je nagaan als de echte set nog meer personen bevat.

Mijn tip: probeer het eerst slim (door na te denken) op te lossen, en ga daarna kijken of je willekeurig nog wat punten erbij kunt verdienen doordat je toevallig de goede personen wisselt.

Acties:
  • 0 Henk 'm!

Anoniem: 222622

@ook onbekend

Bedankt voor je post, ik zal eens kijken of er rare dingen in mijn validator gebeuren! Volgens mij gaat die van _WM_ onderuit wanneer de invaliden en organisatoren verkeerd geplaatst worden.

Acties:
  • 0 Henk 'm!

  • Marcks
  • Registratie: April 2007
  • Laatst online: 10:34
Anoniem: 222622 schreef op vrijdag 15 juni 2007 @ 11:26:
@ook onbekend

Bedankt voor je post, ik zal eens kijken of er rare dingen in mijn validator gebeuren! Volgens mij gaat die van _WM_ onderuit wanneer de invaliden en organisatoren verkeerd geplaatst worden.
Het gaat dan ook om een onjuiste output.ini, die je moet corrigeren. Dat kan op meerdere manieren, dus kun je ook verschillende scores krijgen.

Ik veronschuldig mij bij voorbaat voor het bovenstaande.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 23-06 13:51

NMe

Quia Ego Sic Dico.

Topicstarter
Creepy schreef op donderdag 14 juni 2007 @ 14:51:
Omdat je je niet blind moet staren op tijden en punten van welke test set dan ook. Voor hetzelfde geld is de uiteindelijke set 10 keer zo klein of 1000 keer zo groot.

Optimaliseer je ideeen en algoritmes. Ga niet zitten optimaliseren speciaal voor een test set.
Bovendien: hoe korter het duurt, hoe liever het me is. :+ Bij de vorige contest heeft het 2 volle werkdagen gekost voor alle runs klaar waren. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Anoniem: 182496

liquid_ice schreef op donderdag 14 juni 2007 @ 13:35:
Als ik lees dat mensen in 1sec ofzow al 300punten halen en je mag 30 min besteden...
waarom laat je je programma dan niet langer doorzoeken?
Mijn programma haalt nu ook rond 330 pt in < 1 sec, maar dat wordt gehaald met het logisch invullen in huisjes, er komt dus geen random waarde aan te pas. Voor echt hoge scores moet je natuurlijk random (of slim) mensjes gaan verwisselen en kijken of de nieuwe situatie meer punten oplevert dan de oude.. En daar gaat nou juist de tijd in zitten.

Ik heb zelf overigens even een pauze genomen met het schrijven van mijn programma, wegens schooldrukte enz. Ondertussen denk ik natuurlijk wel verder over ideetjes...

Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 11:40

Onbekend

...

-NMe- schreef op vrijdag 15 juni 2007 @ 13:46:
[...]
Bovendien: hoe korter het duurt, hoe liever het me is. :+ Bij de vorige contest heeft het 2 volle werkdagen gekost voor alle runs klaar waren. :P
code:
1
2
3
4
5
ReadFiles();
CalculateSolution();
WriteFile();
Wait29Minutes();
echo Finished;
:+

Ik moet trouwens zelf nog flink aan m'n algoritme sleutelen....

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

  • m277755
  • Registratie: Februari 2004
  • Laatst online: 24-01-2022

m277755

leest meer dan hij typt

-NMe- schreef op vrijdag 15 juni 2007 @ 13:46:
[...]

Bovendien: hoe korter het duurt, hoe liever het me is. :+ Bij de vorige contest heeft het 2 volle werkdagen gekost voor alle runs klaar waren. :P
Hoe time je dat trouwens? Laat je hem automatisch na een half uur het programma afsluiten, of zit je er zelf met een stopwatch naast? :p

Het is natuurlijk niet eerlijk als iemand een paar seconde meer krijgt :p

Acties:
  • 0 Henk 'm!

Anoniem: 84013

_wm_, ik kwam nog iets vreemds tegen bij het gebruik van je validator. Hieronder staan het betreffende huisje en de deelnemers die daarin geplaatst zijn.

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
27
28
29
30
31
32
33
(uit testset 1de35d057054699475d69d6bd1c7b7b4c0b4f12bfd05548d20e65a88f5ac765d)

[huisje249]
kamer1=Diana,Francis
kamer2=Ean,Romeo

[Diana]
voorkeur=geen
roomies=David,Arlene,Brook
partner=Francis
nietroomies=Garrison
eten=alles

[Francis]
voorkeur=geen
roomies=geen
partner=Diana
nietroomies=dion_b,Cody
eten=alles

[Ean]
voorkeur=geen
roomies=Lauren,Tessa,Jada
partner=Romeo
nietroomies=Cielo,Beau
eten=alles

[Romeo]
voorkeur=geen
roomies=Karen,Martijn van der Poel
partner=Ean
nietroomies=Kolby,Floris
eten=vegetarisch


De validator geeft hiervoor:
partnerpunten: 15
roomiepunten binnen de kamer: 0
roomiepunten binnen het huis: 0
voorkeurpunten: 0
vegetarischpunten: -2
Maar iedereen zit bij de partner op de kamer, dus dat levert 20 punten op volgens mij. Het is me niet precies duidelijk wat er fout gaat... misschien zie ik iets stoms over het hoofd ofzo.

Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 11:40

Onbekend

...

Dan heb je zeker ergens een foutje gemaakt.
De validator van _WM_ en van de validator van mij geven netjes elk 18 punten aan.

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

Anoniem: 84013

Dat kan ik niet reproduceren. De volledige output die ik krijg is als volgt.
md5 hash van set: 1de35d057054699475d69d6bd1c7b7b4c0b4f12bfd05548d20e65a88f5ac765d.

huisje249: 13
------------------------------+
totaal aantal punten voor puur de huisjes: 13

nietgeplaatstpunten: -12110
partnerpunten: 15
roomiepunten binnen de kamer: 0
roomiepunten binnen het huis: 0
voorkeurpunten: 0
vegetarischpunten: -2
------------------------------+
totaal aantal punten voor jouw inzending bij deze set: -12097
hoogste aantal punten voor deze set tot nu toe: 3903
Ik gebruik als deelnemers niet alleen die in m'n post, maar de volledige lijst van de betreffende set. Misschien is het zo dat je alleen de gequote deelnemers gebruikt. Dat zou een mogelijke oorzaak kunnen zijn denk ik.

[ Voor 21% gewijzigd door Anoniem: 84013 op 16-06-2007 13:31 . Reden: verdere toelichting ]


Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 11:40

Onbekend

...

Anoniem: 84013 schreef op zaterdag 16 juni 2007 @ 13:29:

Ik gebruik als deelnemers niet alleen die in m'n post, maar de volledige lijst van de betreffende set. Misschien is het zo dat je alleen de gequote deelnemers gebruikt. Dat zou een mogelijke oorzaak kunnen zijn denk ik.
Dat klopt. Ik had alleen een deelnemers file gemaakt van de gequote deelnemers. Als ik de volledige file inlaadt, kom het huisje weer op 18 punten uit en het puntentotaal van set is -12122.
In de validator van _WM_ zit dan idd een klein foutje.

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

  • neonlamp
  • Registratie: November 2004
  • Laatst online: 10-06-2023
Anoniem: 84013 schreef op zaterdag 16 juni 2007 @ 10:11:
Maar iedereen zit bij de partner op de kamer, dus dat levert 20 punten op volgens mij. Het is me niet precies duidelijk wat er fout gaat... misschien zie ik iets stoms over het hoofd ofzo.
Francis zit 2 keer in deelnemers.ini, 1 keer met Diana als partner en 1 keer zonder partner. Dus er is geen eenduidige scoreberekening mogelijk...

Naast Francis zitten er trouwens nog enkele dubbels in.

Acties:
  • 0 Henk 'm!

Anoniem: 84013

Dat verklaart 't. Bedankt voor het zoeken. Is natuurlijk wel weer zo'n typisch gevalletje voor de categorie defensieve code.

Acties:
  • 0 Henk 'm!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 03-02 23:18

D2k

Ah die set, die kreeg ik ook al niet goed verwerkt. Ik moet idd mijn "dubbelen" check er nog es ingooien

Doet iets met Cloud (MS/IBM)


Acties:
  • 0 Henk 'm!

  • liquid_ice
  • Registratie: Februari 2001
  • Laatst online: 08:34
ik heb net pas (jaah, laat he) m'n eerste output.ini gemaakt.
en nu zit ik opgescheept met 30 huisjes, elk 4 kamers en elk 2 keer de persoon "Confusion" :D
damn, wist niet dat er 240 confusions in de officiele testset zaten :D

ga nu slape, kijk er morge wel na.

Klus page: http://klusthuis.blogspot.com


Acties:
  • 0 Henk 'm!

  • m277755
  • Registratie: Februari 2004
  • Laatst online: 24-01-2022

m277755

leest meer dan hij typt

Waarschijnlijk heeft dat niets met deelnemers te maken, je programma print gewoon zijn status in de kamers ;)

Ik ga binnenkort eens een testset maken die wel gewoon geldig is maar waarschijnlijk sommige algoritmes de mist in stuurt O-) Het doel is natuurlijk voor mezelf om te zorgen dat mijn programma niet de uiteindelijke testset verneukt, maar ik wil hem dan natuurlijk ook wel met iedereen delen 8)

Acties:
  • 0 Henk 'm!

  • liquid_ice
  • Registratie: Februari 2001
  • Laatst online: 08:34
@m277755, weet ik...
ik heb het al verbeterd, maar het is nog niet goed...
nu heeft elk huis 8*dezelfde bewoner.
Maar wel elk huis een andere.

maar m'n progtijd zit er voor vandaag weer op :(

Maar het inlezen en schrijven van de files kost nu nog TE veel tijd.
Dat is een ander punt dat ik nog eens na moet kijken.
van de 375 ms is het lezen 200ms
het algoritme 20ms (is nog lang niet compleet)
het schrijven nog eens 150ms.
moet beter kunnen.

Klus page: http://klusthuis.blogspot.com


Acties:
  • 0 Henk 'm!

  • bomberboy
  • Registratie: Mei 2007
  • Laatst online: 26-06 22:14

bomberboy

BOEM!

liquid_ice schreef op maandag 18 juni 2007 @ 10:11:
Maar het inlezen en schrijven van de files kost nu nog TE veel tijd.
Dat is een ander punt dat ik nog eens na moet kijken.
van de 375 ms is het lezen 200ms
het algoritme 20ms (is nog lang niet compleet)
het schrijven nog eens 150ms.
moet beter kunnen.
Waarom is dat een probleem? Uitlezen doe je normaal toch maar 1 keer (of toch heel weinig) Hetzelfde geldt voor het uitschrijven van de resultaten. Hoewel je dat misschien liever iets vaker doet om toch een resultaat te hebben als je programma vroegtijdig afbreekt. (bv. 1 keer per minuut ofzo).

Door dat te optimaliseren gaat je tijdswinst echt minimaal zijn. Een optimalisatie in je algoritme zelf zal een veel groter effect hebben op de gebruikte tijd.

Acties:
  • 0 Henk 'm!

  • Arnout
  • Registratie: December 2000
  • Laatst online: 23-06 16:22
bomberboy schreef op maandag 18 juni 2007 @ 10:44:
[...]
Door dat te optimaliseren gaat je tijdswinst echt minimaal zijn. Een optimalisatie in je algoritme zelf zal een veel groter effect hebben op de gebruikte tijd.
Inderdaad, ik snap niet waarom men zich over 100 of 200 miliseconden tijdens inlezen druk maakt, terwijl je kunt aanvoelen dat in het algoritme de grootste klappen gaan vallen. Die 30 minuten waarin het programma gedraaid wordt staat er echt niet voor de grap.

Ik ben ook bezig met een oplossing, ben begonnen met het algoritme omdat het programma hier mee valt of staat. Dat inlezen, wegschrijven etc gaat me echt wel lukken als het algoritme het optimum kan vinden :+. Ik ga echt niet direct met de testset aan de slag, eerst maar eens 4 of 6 personen indelen en kijken hoe dat gaat.

Acties:
  • 0 Henk 'm!

  • Malthus
  • Registratie: April 2003
  • Laatst online: 23-04 15:30
Mijn programma werkt al een paar weken helemaal goed (lees: foutloos), maar de score is nog niet geweldig. Ik gebruik een genetisch algoritme, dus de uitkomst is iedere keer iets anders. Met de officiële testset kom ik iedere keer tussen de 370 en 390 uit, terwijl hier nog wel wat meer punten te halen moeten zijn (de laatste keer dat ik bij _wm_'s validator keek was de hoogste score 421).

De komende tijd zal ik dus vooral bezig zijn met het beter instellen van het genetische algoritme en misschien nog met het optimaliseren van de code. Het lijkt erop dat ik de tijd tot de deadline nog wel nodig heb...

Acties:
  • 0 Henk 'm!

Anoniem: 222622

Malthus schreef op maandag 18 juni 2007 @ 20:55:
Mijn programma werkt al een paar weken helemaal goed (lees: foutloos), maar de score is nog niet geweldig. Ik gebruik een genetisch algoritme, dus de uitkomst is iedere keer iets anders. Met de officiële testset kom ik iedere keer tussen de 370 en 390 uit, terwijl hier nog wel wat meer punten te halen moeten zijn (de laatste keer dat ik bij _wm_'s validator keek was de hoogste score 421).

De komende tijd zal ik dus vooral bezig zijn met het beter instellen van het genetische algoritme en misschien nog met het optimaliseren van de code. Het lijkt erop dat ik de tijd tot de deadline nog wel nodig heb...
Goed bezig! Zo'n genetisch algoritme werkt dus goed. Dat is toch AI? Ik vroeg me af hoe lang hij er over doet om het uit te rekenen, en hoe vaak je hem hebt moeten trainen.

Ik werk zelf met wat loopjes; de testset levert mij in 15 seconden tot nu toe 368 punten op, maar daar ben ik nog niet tevreden mee. Ben benieuwd of mensen met een veel hogere score ook veel meer tijd nodig hebben.

Acties:
  • 0 Henk 'm!

  • The Fox NL
  • Registratie: Oktober 2004
  • Laatst online: 09:44
Zo, net als de vorige keer ga ik ook weer meedoen. Alleen had ik toen geen zin meer om verder te gaan nadat ik de validator afhad. Hopelijk gaat het nu beter wat motivatie betreft.

Mijn validator is af en doet het keurig, wel geeft hij veel fouten bij mensen die een loopje nemen met de specs uit de startpost ([huis1] ipv [huisje1]; beginnen bij kamer0 ipv kamer1). Maar hij doet het in ieder geval.

Ik programmeer in Delphi 5.

Acties:
  • 0 Henk 'm!

  • Malthus
  • Registratie: April 2003
  • Laatst online: 23-04 15:30
Anoniem: 222622 schreef op maandag 18 juni 2007 @ 22:30:
Goed bezig! Zo'n genetisch algoritme werkt dus goed. Dat is toch AI? Ik vroeg me af hoe lang hij er over doet om het uit te rekenen, en hoe vaak je hem hebt moeten trainen.
Met de officiële testset en mijn huidige instellingen duurt het ongeveer 5 minuten voordat ik in de buurt van de 360 punten ben. En daarvoor worden zo'n 75000 mogelijke oplossingen geëvalueerd. Daarna komen er soms nog een paar puntjes bij, maar dat is niet veel meer.

Een genetisch algoritme hoeft niet echt getraind te worden, maar de instellingen zijn wel erg belangrijk. En die probeer ik nu een beetje goed te krijgen.

Acties:
  • 0 Henk 'm!

  • DaCoTa
  • Registratie: April 2002
  • Laatst online: 26-06 16:46
The Fox NL schreef op dinsdag 19 juni 2007 @ 01:17:
Mijn validator is af en doet het keurig, wel geeft hij veel fouten bij mensen die een loopje nemen met de specs uit de startpost ([huis1] ipv [huisje1]; beginnen bij kamer0 ipv kamer1). Maar hij doet het in ieder geval.
Dit is geen onderdeel van de specs, dit staat alleen in voorbeeldcode. Er staat (dacht ik) zelfs dat de benaming van huisjes vrij is.


Tijdje later:
Na lang nadenken is een eerst goede idee opgekomen. Had de inleescode al een tijd liggen, maar nog geen zinnig idee over hoe poppetjes in huizen te plaatsen. Geen idee wanneer ik het idee ga uitwerken, maar die tijd komt vanzelf wel weer. Hopelijk niet 5 minuten voor de deadline zoals de vorige keer :+

[ Voor 25% gewijzigd door DaCoTa op 19-06-2007 20:09 ]


Acties:
  • 0 Henk 'm!

  • m277755
  • Registratie: Februari 2004
  • Laatst online: 24-01-2022

m277755

leest meer dan hij typt

De namen van huizen mogen inderdaad gewoon zelf gekozen worden, zolang het tussen [ ] staat is het een huis. Ik weet niet hoe het zit met kamernamen en nummers.

Ik neem aan dat kamers wel kamer1 t/m kamerx moeten heten. Wie weet dat zeker en wil dat ophelderen?

Acties:
  • 0 Henk 'm!

Anoniem: 140111

Ik ben echt uitermate benieuwd naar de sourcecode van Malthus, lijkt me bijzonder interessant.

Acties:
  • 0 Henk 'm!

  • Mheunen
  • Registratie: April 2005
  • Laatst online: 29-11-2024
Ik ben ook iets in elkaar aan het knutselen voor deze opgave, maar heb geen ervaring met programmeren van algoritmes. Normaal is mijn code rechtoe rechtaan. Een oplossing produceren zal niet zo moeilijk zijn, maar wat minder eenvoudig zal worden voor mij is het maximaliseren van de score. Waar kan ik online meer leren over het programmeren van algoritmes voor problemen als deze?

Acties:
  • 0 Henk 'm!

  • Dricus
  • Registratie: Februari 2002
  • Laatst online: 07:10

Dricus

ils sont fous, ces tweakers

Nou, ik ben dus begonnen in C# met een evolutionair algoritme. Ging allemaal goed qua punten (max 389 punten gehaald op de testset). De problemen begonnen toen ik de performance ging optimaliseren met behulp van multithreading (ik heb een dual-core CPU). M'n lijst met deelnemers uit deelnemers.ini wordt bijgehouden in een Collection<CPersoon>. Het lijkt er sterk op dat zo'n collection totaal niet thread-safe is, zelfs niet als je hem alleen maar uitleest.

Na lang zoeken naar de fout zonder hem te vinden kreeg ik er zo de balen van dat ik het hele zooitje opnieuw heb geimplementeerd in Java. Op zich de eerste keer dat ik een serieus proggie probeer te maken in Java, maar ach, met 10 jaar programmeer ervaring in andere OO talen (waaronder C++) is Java vrij gemakkelijk aangeleerd.

Wat een genot, dat Java! Niet teveel toeters en bellen bovenop de standaard OO implementatie, gewoon lekker zuiver OO toegepast (niet 100% zuiver, maar zuiverder dan gemiddeld ;)). De documentatie vind ik ook een stuk beter dan de MSDN. Alles duidelijk uitgelegd. In veel gevallen heb je niet eens een voorbeeld nodig om de documentatie te begrijpen. En (niet onbelangrijk): De class ArrayList is gewoon lekker thread-safe :D.

Met deze Java implementatie van m'n evolutionaire algoritme zit ik in 1,5 a 2 minuten rond de 360 punten. Niet slecht, in ieder geval weer lekker een voor mij redelijk nieuwe programmeertaal beter leren kennen, en dat is altijd winst :).

Stel niet uit tot morgen wat je vandaag nog tot morgen kunt uitstellen...


Acties:
  • 0 Henk 'm!

  • Pete
  • Registratie: November 2005
  • Laatst online: 15-12-2024
MrHuge schreef op woensdag 20 juni 2007 @ 19:01: En (niet onbelangrijk): De class ArrayList is gewoon lekker thread-safe :D.
Met alleen lezen misschien wel, maar lees:
Note that this implementation is not synchronized. If multiple threads access an ArrayList instance concurrently, and at least one of the threads modifies the list structurally, it must be synchronized externally.

petersmit.eu


Acties:
  • 0 Henk 'm!

  • m277755
  • Registratie: Februari 2004
  • Laatst online: 24-01-2022

m277755

leest meer dan hij typt

MrHuge schreef op woensdag 20 juni 2007 @ 19:01:
Het lijkt er sterk op dat zo'n collection totaal niet thread-safe is, zelfs niet als je hem alleen maar uitleest.
Gebruikte je een iterator om de collection uit te lezen? Ik kan me voorstellen dat als je twee keer een iterator opvraagt voor een collection dat je dezelfde krijgt en niet een nieuwe. Ik zou het niet echt logisch vinden, maar ik kan het me wel voorstellen. Als je dan twee keer tegelijk gaat itereren gaat het natuurlijk mis.

Acties:
  • 0 Henk 'm!

  • Malthus
  • Registratie: April 2003
  • Laatst online: 23-04 15:30
Anoniem: 140111 schreef op woensdag 20 juni 2007 @ 14:06:
Ik ben echt uitermate benieuwd naar de sourcecode van Malthus, lijkt me bijzonder interessant.
Nog een maandje wachten, dan kun je alle sourcecode zien. :) Ik hoop trouwens dat je er niet teveel van verwacht, want zo bijzonder is die code niet. En ik begin ook net pas met C# en heb echt geen idee hoe ik m'n code echt goed kan optimaliseren, dus ook dat is niet spannend.

Acties:
  • 0 Henk 'm!

  • Dricus
  • Registratie: Februari 2002
  • Laatst online: 07:10

Dricus

ils sont fous, ces tweakers

phsmit schreef op woensdag 20 juni 2007 @ 19:10:
[...]

Met alleen lezen misschien wel, maar lees:

[...]
Dat stuk documentatie ken ik. Ik gebruik hem inderdaad alleen maar om uit te lezen.
m277755 schreef op woensdag 20 juni 2007 @ 19:26:
[...]


Gebruikte je een iterator om de collection uit te lezen? Ik kan me voorstellen dat als je twee keer een iterator opvraagt voor een collection dat je dezelfde krijgt en niet een nieuwe. Ik zou het niet echt logisch vinden, maar ik kan het me wel voorstellen. Als je dan twee keer tegelijk gaat itereren gaat het natuurlijk mis.
Hmz, ik zit verkeerd te typen. Ik gebruik niet Collection, maar List, maar dat maakt voor het probleem niet uit :).

Ik doe verschillende dingen met de list:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
List<Persoon> personen;

// Kijk of een persoon aanwezig is
personen.Contains(eenPersoon);

// Itereer
foreach (Persoon persoon in personen)
{
  // Doe meuk
}

// Prikken met zero-based index
Persoon persoon = personen[eenOfAndereIndex];

Zoals je ziet doe ik alleen maar lees-acties. Toch krijg ik vage exceptions op verschillende plekken in m'n code als ik meerdere threads tegelijk gebruik. Als ik het programma met 1 thread laat draaien gaat alles vlekkeloos (alleen wel bijna 2x zo traag ;)).

Najah, ik ga me er verder niet meer druk om maken. Ik heb nu een mooie werkende implementatie in Java die ook nog eens wat beter opgezet is. Daarnaast performt de Java versie beter dan de C# versie, dus redenen genoeg om de C# versie overboord te gooien.

Stel niet uit tot morgen wat je vandaag nog tot morgen kunt uitstellen...


Acties:
  • 0 Henk 'm!

Anoniem: 220429

Mheunen schreef op woensdag 20 juni 2007 @ 14:29:
Ik ben ook iets in elkaar aan het knutselen voor deze opgave, maar heb geen ervaring met programmeren van algoritmes. Normaal is mijn code rechtoe rechtaan. Een oplossing produceren zal niet zo moeilijk zijn, maar wat minder eenvoudig zal worden voor mij is het maximaliseren van de score. Waar kan ik online meer leren over het programmeren van algoritmes voor problemen als deze?
Eerste halte google. Dan een paar combinaties intikken die bestaan uit woorden zoals: algoritme, sheduling, optimizing,.. Van daaruit kun je in principe iets meer kerngerichtere termen leren, zoals evolutionair algoritme, dynamisch programmeren,.. En nog verder bin packing, set packing,...

Een iteratief proces dus. En als je bepaalde zaken dan meester wilt worden, kun je de boeken opzoeken die handelen over een bepaald onderwerp. En dan ben je redelijk goed bezig, denk ik. :)

Acties:
  • 0 Henk 'm!

  • neonlamp
  • Registratie: November 2004
  • Laatst online: 10-06-2023
_wm_, er lijkt iets aan de hand met je validator. Momenteel staat bij de officiële testset 3 keer dezelfde output.ini met verschillende scores.

Deze output staat geklasseerd met 428, 427 en 426 punten.

Als ik die output opnieuw invoer dan geeft je validator 426 punten, wat ook de score is die mijn berekening geeft.

Enig idee waarom die 427 en 428 er gekomen zijn?

Ik denk trouwens dat het de enige output is die meerdere keren voorkomt...
code:
1
2
3
4
5
6
7
8
9
10
cat validatorlinks.txt | sort | uniq | wc -l
608

cat validatorlinks.txt | wc -l
610

cat validatorlinks.txt | sort | uniq -D
20070618223325363689.ini
20070618223325363689.ini
20070618223325363689.ini

Acties:
  • 0 Henk 'm!

  • liquid_ice
  • Registratie: Februari 2001
  • Laatst online: 08:34
Mheunen schreef op woensdag 20 juni 2007 @ 14:29:
Ik ben ook iets in elkaar aan het knutselen voor deze opgave, maar heb geen ervaring met programmeren van algoritmes. Normaal is mijn code rechtoe rechtaan. Een oplossing produceren zal niet zo moeilijk zijn, maar wat minder eenvoudig zal worden voor mij is het maximaliseren van de score. Waar kan ik online meer leren over het programmeren van algoritmes voor problemen als deze?
Als je enkele pagina's in het verleden duikt hier, dan vind je een setje links die ik gepost hebt met uitleg over het genetisch algoritme, dat zou je kunnen gebruiken.

Klus page: http://klusthuis.blogspot.com


Acties:
  • 0 Henk 'm!

  • liquid_ice
  • Registratie: Februari 2001
  • Laatst online: 08:34
Net m'n eerste output file gevalideerd (van officiele test set) en heb wel 2 punten :D :D :D
bij de validator van WM, maar die van EdwinG meld dat ik 142 mensen niet geplaatst heb en geeft me -1420 punten.

en de windows validator van (Dreamer-1982) meld dat ik een persoon in m'n output heb die niet in deelnemers.ini zit.

Jammer dat de resultaten van de validaters ZO uiteen lopen.

Maandag doe ik m'n afstudeerpresentatie en daarna heb ik wel wat meer tijd.

[ Voor 52% gewijzigd door liquid_ice op 22-06-2007 23:29 ]

Klus page: http://klusthuis.blogspot.com


Acties:
  • 0 Henk 'm!

  • m277755
  • Registratie: Februari 2004
  • Laatst online: 24-01-2022

m277755

leest meer dan hij typt

zou het kunnen dat je spaties print tussen de mensen in kamers? Als ik me niet vergis heeft wm zijn validator aangepast zodat dat geen probleem meer is, maar dreamer-1982 die van hem niet (die van edwinG) weet ik niet.

De validator van dreamer is handig omdat je weinig hoeft te doen om een score te krijgen, die van wm kost wat meer moeite, maar hij geeft wat meer overzicht en je score wordt bijgehouden :) Met die van edwinG heb ik zoals gezegd geen ervaring

Voor de veiligheid lijkt het me beter om geen spaties te printen, je weet nooit of de contestleiding van spaties houdt :+

Acties:
  • 0 Henk 'm!

  • EdwinG
  • Registratie: Oktober 2002
  • Laatst online: 25-06 20:35
Eerder in het topic zijn links geplaatst met specificaties van de opbouw van .ini bestanden. Daar staat juist dat tussen de values minstens 1 spatie moet zitten (na de komma), en mogelijk spaties rond het = teken.

Omdat die spatie om het = teken niet verplicht zijn, kunnen namen eigenlijk niet beginnen met een spatie.
Zelf gebruik ik dan ook trim() om de namen te ontdoen van alle spaties aan het begin en het einde. Als het goed is zal mijn validator daar ook geen onderscheid in maken.

@liquid_ice, kun je mij de .zip sturen? <naam> [at] mytweakers.net

Bezoek eens een willekeurige pagina


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 11:18

Creepy

Tactical Espionage Splatterer

Eeh... een spatie is niet verplicht na een komma, kijk de startpost er maar eens op na. En met logisch nadenken lijkt het me dat een naam niet kan beginnen of eindigen met een spatie.
Whitespace (behalve \r en \n) voor of na een naam, voor of na een komma en voor of na een = wordt gewoon genegeerd. Dus voor de uiteindelijke validator die de entries gaat checken zal het een worst zijn of er ergens voor of achter spaties staan.

[ Voor 20% gewijzigd door Creepy op 23-06-2007 13:25 ]

"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


Acties:
  • 0 Henk 'm!

  • liquid_ice
  • Registratie: Februari 2001
  • Laatst online: 08:34
Ik print nergens spaties, behalve als ze in de naam zitten.

@Creepy, bedankt voor de verduidelijking.

mogen deelnemers de officiele validater na der hand toetsen aan de spelregels ALS iemand zo eigenwijs is om te denken dat dat mogelijk niet klopt?

Klus page: http://klusthuis.blogspot.com


Acties:
  • 0 Henk 'm!

  • Mheunen
  • Registratie: April 2005
  • Laatst online: 29-11-2024
liquid_ice schreef op donderdag 21 juni 2007 @ 12:43:
[...]
Als je enkele pagina's in het verleden duikt hier, dan vind je een setje links die ik gepost hebt met uitleg over het genetisch algoritme, dat zou je kunnen gebruiken.
Thx, ik heb de links gevolgd. De theorie is in grote lijnen wel duidelijk/ logisch. Ben benieuwd of ik tijdig een stuk code kan bouwen die ergens toe leidt. Anders ga ik de ingezonden codes maar eens bekijken.

Acties:
  • 0 Henk 'm!

  • liquid_ice
  • Registratie: Februari 2001
  • Laatst online: 08:34
maak het jezelf vooral makelijk is mijn devies.
Het is leuker om iets te hebben en een beetje mee te kunnen doen dan dat je de meest defensieve en correcte code hebt voor het inlezen (en verder geen tijd hebt gehad voor iets).

Klus page: http://klusthuis.blogspot.com


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 11:18

Creepy

Tactical Espionage Splatterer

liquid_ice schreef op zaterdag 23 juni 2007 @ 16:55:
Ik print nergens spaties, behalve als ze in de naam zitten.

@Creepy, bedankt voor de verduidelijking.

mogen deelnemers de officiele validater na der hand toetsen aan de spelregels ALS iemand zo eigenwijs is om te denken dat dat mogelijk niet klopt?
Hm... daar zullen we het eens over gaan hebben. Volgens mij zijn de controle programma's van de eerste twee contest ook niet vrijgegeven.

In principe is het vrij simpel na te gaan aangezien we alle outputs, broncode en executables van alle entries online zetten. Zo kan je met een eigen geschreven validator zo checken of de door ons toegekende score klopt of niet.

"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


Acties:
  • 0 Henk 'm!

  • liquid_ice
  • Registratie: Februari 2001
  • Laatst online: 08:34
Als mensen het met hun eigen validator gaan checken zullen er redelijk wat zijn met net een puntje anders ofzow.
Kan je daarna hun weer gaan uitleggen wat er fout is in hun validator.

Maarja, it's your call.

@EdwinG: heb je al uitgevonden waarom jou validator mijn ini's niet accepteerd?

[ Voor 16% gewijzigd door liquid_ice op 24-06-2007 11:56 ]

Klus page: http://klusthuis.blogspot.com


Acties:
  • 0 Henk 'm!

Anoniem: 222622

MrHuge schreef op woensdag 20 juni 2007 @ 19:01:
Nou, ik ben dus begonnen in C# met een evolutionair algoritme. Ging allemaal goed qua punten (max 389 punten gehaald op de testset). De problemen begonnen toen ik de performance ging optimaliseren met behulp van multithreading (ik heb een dual-core CPU). M'n lijst met deelnemers uit deelnemers.ini wordt bijgehouden in een Collection<CPersoon>. Het lijkt er sterk op dat zo'n collection totaal niet thread-safe is, zelfs niet als je hem alleen maar uitleest.

Na lang zoeken naar de fout zonder hem te vinden kreeg ik er zo de balen van dat ik het hele zooitje opnieuw heb geimplementeerd in Java. Op zich de eerste keer dat ik een serieus proggie probeer te maken in Java, maar ach, met 10 jaar programmeer ervaring in andere OO talen (waaronder C++) is Java vrij gemakkelijk aangeleerd.

Wat een genot, dat Java! Niet teveel toeters en bellen bovenop de standaard OO implementatie, gewoon lekker zuiver OO toegepast (niet 100% zuiver, maar zuiverder dan gemiddeld ;)). De documentatie vind ik ook een stuk beter dan de MSDN. Alles duidelijk uitgelegd. In veel gevallen heb je niet eens een voorbeeld nodig om de documentatie te begrijpen. En (niet onbelangrijk): De class ArrayList is gewoon lekker thread-safe :D.

Met deze Java implementatie van m'n evolutionaire algoritme zit ik in 1,5 a 2 minuten rond de 360 punten. Niet slecht, in ieder geval weer lekker een voor mij redelijk nieuwe programmeertaal beter leren kennen, en dat is altijd winst :).
Java is inderdaad een fantastische taal, groot gelijk dat je het gebruikt hiervoor. Ook de performance valt me niet tegen, ik weet er 369 punten in 13 seconden uit te slepen momenteel.

Over het multi-thread gebeuren: het is maar de vraag of je hier winst uithaalt. Je zou verwachten dat de JVM rekening houdt met meerdere processoren. Als je dit desondanks toch wilt doen, dan moet je gewoon goede synchronisatie toepassen. Ik weet niet of je bekend bent met dit onderwerp in Java, maar het komt erop neer dat je alleen kunt synchroniseren op een object, dus niet op klasse-niveau. Veel mensen maken de denkfout om dit op klasse niveau te doen, maar als de instanties verschillen, dan ga je op een gemene manier de boot in, omdat je er niet direct achter komt. Wat dus het beste werkt:

code:
1
2
3
4
synchronizes(System.out) {
             //doe je ding
}
//hier wachtende threads notifyen


Lees nog maar eens na op internet, heb eventueel nog een document voor je van een of andere college.

Verder heb ik ook problemen gehad met het itereren over een lijst die door meerdere Threads gebruikt wordt, je krijgt dan al snel een ConcurrentModifactionException. Na een tijdje begreep ik dat dit veroorzaakt werd door de Iterator, welke een easy-fail mechanisme heeft: bij meerdere Threads gewoon een Exception gooien. Als je er gewoon met een for-loop overheen itereert, dan gaat het prima. Dus zoiets:

code:
1
2
3
4
            for(int i=0; i<houses.size(); i++) {
            house = houses.get(i);
                        //doe hier iets leuks met house
            }


Goed, genoeg technisch geblaat; op internet is genoeg te vinden. Succes!

Acties:
  • 0 Henk 'm!

  • EdwinG
  • Registratie: Oktober 2002
  • Laatst online: 25-06 20:35
liquid_ice schreef op zondag 24 juni 2007 @ 11:52:
@EdwinG: heb je al uitgevonden waarom jou validator mijn ini's niet accepteerd?
Nog niet, morgen heb ik daar weer tijd voor.

Bezoek eens een willekeurige pagina


Acties:
  • 0 Henk 'm!

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 08:54

NetForce1

(inspiratie == 0) -> true

Anoniem: 222622 schreef op zondag 24 juni 2007 @ 12:14:
Verder heb ik ook problemen gehad met het itereren over een lijst die door meerdere Threads gebruikt wordt, je krijgt dan al snel een ConcurrentModifactionException. Na een tijdje begreep ik dat dit veroorzaakt werd door de Iterator, welke een easy-fail mechanisme heeft: bij meerdere Threads gewoon een Exception gooien. Als je er gewoon met een for-loop overheen itereert, dan gaat het prima. Dus zoiets:

code:
1
2
3
4
            for(int i=0; i<houses.size(); i++) {
            house = houses.get(i);
                        //doe hier iets leuks met house
            }


Goed, genoeg technisch geblaat; op internet is genoeg te vinden. Succes!
Begrijp je ook waarom een iterator fail-fast is? Als ik het zo eens lees ben ik bang van niet nl. Die exception wordt gegooid op het moment dat je in thread A door je iterator loopt terwijl thread B de onderliggende list bijgewerkt heeft. De code die hier post zal idd geen exception gooien in dat geval, maar het is nu niet gedefinieerd welke waarden er in de list zitten. Je zult dus je synchronization beter moeten regelen. Of bijv. een kopie maken van de lijst als je alleen leest, en de lijst verder niet wilt bijwerken.

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


Acties:
  • 0 Henk 'm!

Anoniem: 222622

NetForce1 schreef op maandag 25 juni 2007 @ 09:40:
[...]

Begrijp je ook waarom een iterator fail-fast is? Als ik het zo eens lees ben ik bang van niet nl. Die exception wordt gegooid op het moment dat je in thread A door je iterator loopt terwijl thread B de onderliggende list bijgewerkt heeft. De code die hier post zal idd geen exception gooien in dat geval, maar het is nu niet gedefinieerd welke waarden er in de list zitten. Je zult dus je synchronization beter moeten regelen. Of bijv. een kopie maken van de lijst als je alleen leest, en de lijst verder niet wilt bijwerken.
Jazeker begrijp ik dat; het punt is dat ik het alleen voor read-only gebruik, en slechts 1 Thread dingen aanpast; desondanks krijg ik dan die excepties, wat dus overdreven is. Java is kennelijk te bezorgd ;)

Verder krijg je deze excepties ook als je een Thread afbreekt, en vervolgens over de lijst gaat itereren waar die Thread mee bezig was. Dit gebeurt namelijk als mijn timer-Thread het algoritme afbreekt wanneer de tijd in gevaar komt, en daarna nog even de resterende personen indeelt.

Ik ben het met je eens, dat als je meerdere Threads hebt die dingen in 1 lijst aanpassen, dat je dan synchronisatie moet toepassen.

Acties:
  • 0 Henk 'm!

  • Dricus
  • Registratie: Februari 2002
  • Laatst online: 07:10

Dricus

ils sont fous, ces tweakers

Anoniem: 222622 schreef op maandag 25 juni 2007 @ 12:15:
[...]
Ik ben het met je eens, dat als je meerdere Threads hebt die dingen in 1 lijst aanpassen, dat je dan synchronisatie moet toepassen.
Volgens mij begrijp je het toch niet helemaal :). Als je met meerdere threads gebruik maakt van 1 lijst en er minstens 1 thread is die de lijst aanpast, dan moet je al synchronisatie gebruiken. Als je dat niet doet krijg je of excepties (als je met iterators werkt), of (als je met .get werkt) je loopt risico op raar gedrag, bijvoorbeeld doordat een lezende thread bezig is met een entry uit de lijst die door een schrijvende thread al verwijderd is.

Stel niet uit tot morgen wat je vandaag nog tot morgen kunt uitstellen...


Acties:
  • 0 Henk 'm!

  • Darkwings
  • Registratie: Mei 2007
  • Laatst online: 25-06 11:33
M'n computer is bijna een week kapot geweest en ik ga vrijdag op vakantie, dus ik vrees dat het mij niet meer gaat lukken nog een fatsoenlijke inzending af te maken :(

Misschien als ik terug ben vakantie nog even snel... wel jammer, heb er toch vrij veel tijd ingestoken al.

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 11:18

Creepy

Tactical Espionage Splatterer

liquid_ice schreef op zondag 24 juni 2007 @ 11:52:
Als mensen het met hun eigen validator gaan checken zullen er redelijk wat zijn met net een puntje anders ofzow.
Kan je daarna hun weer gaan uitleggen wat er fout is in hun validator.

Maarja, it's your call.
Ik verwacht eerlijk gezegd dat als er mensen zijn die de scores niet vertrouwen direct hun eigen validator of een andere validator gaan gebruiken om te kijken of hun score klopt. Dus de vraag om uitleg zal er zoiezo wel komen.
Mocht er een fout in onze validator zitten dan zullen we de score's opnieuw moeten berekenen. Ga je klagen dat de score niet klopt terwijl je eigen validator de mist in gaat dan wordt je publiekelijk aan de schandpaal gezet >:)

"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


Acties:
  • 0 Henk 'm!

Anoniem: 222622

MrHuge schreef op maandag 25 juni 2007 @ 13:02:
[...]

Volgens mij begrijp je het toch niet helemaal :). Als je met meerdere threads gebruik maakt van 1 lijst en er minstens 1 thread is die de lijst aanpast, dan moet je al synchronisatie gebruiken. Als je dat niet doet krijg je of excepties (als je met iterators werkt), of (als je met .get werkt) je loopt risico op raar gedrag, bijvoorbeeld doordat een lezende thread bezig is met een entry uit de lijst die door een schrijvende thread al verwijderd is.
Ik snap het Threads gebeuren allemaal prima, alleen is in mijn geval het geen probleem als ik met twee Threads door dezelfde lijst heen loop. Dit gebeurt bijvoorbeeld om om de zoveel seconden de score te laten zien, terwijl het algoritme in een andere Thread doorgaat, en soms klopt die niet helemaal, maar dat neem ik voor lief. Het synchroniseren kost teveel tijd in mijn geval.

Acties:
  • 0 Henk 'm!

  • Malthus
  • Registratie: April 2003
  • Laatst online: 23-04 15:30
Anoniem: 222622 schreef op dinsdag 26 juni 2007 @ 14:12:
Ik snap het Threads gebeuren allemaal prima, alleen is in mijn geval het geen probleem als ik met twee Threads door dezelfde lijst heen loop. Dit gebeurt bijvoorbeeld om om de zoveel seconden de score te laten zien, terwijl het algoritme in een andere Thread doorgaat, en soms klopt die niet helemaal, maar dat neem ik voor lief. Het synchroniseren kost teveel tijd in mijn geval.
Ik was toevallig ook op zoek naar informatie over het gebruik van een tweede thread (dan kan ik m'n window tenminste updaten terwijl het programma verder rekent). Daarbij kwam ik de volgende draad op dit forum tegen: \[C#] Hoe een form element benaderen vanuit een andere class (het gaat over C#, maar mogelijk werkt het met Java ongeveer hetzelfde.

Het komt er eigenlijk op neer dat de thread die het algoritme uitvoert de gegevens doorgeeft aan de andere thread, dus als ik het goed begrijp precies het tegenovergestelde van wat jij doet.

Acties:
  • 0 Henk 'm!

  • liquid_ice
  • Registratie: Februari 2001
  • Laatst online: 08:34
Heeft iemand de het score verloop schema op http://www.dricus.com/Bungalow_v7.gif bekeken?
voor mijn gevoel is het niet echt logisch opgezet (kan ook aan mij liggen hoor).
Eerst word er iets berekend per bungalow, dan per persoon, dan weer per bungalow, dan per ingedeelde persoon en daarna weer per ingedeelde deelnemer...

Kan je niet beter eerst de bungalows (dan per bungalow de voorkeur en vegatarische punten) berekenen, daarna de personen (ingedeelt, per ingedeelde de (niet)roomies en partner punten)

Zo loop je maar 2 keer door de lijsten heen...
Is dit nou gewoon een stuk sneller, of zie ik iets over het hoofd?

Klus page: http://klusthuis.blogspot.com


Acties:
  • 0 Henk 'm!

  • Pete
  • Registratie: November 2005
  • Laatst online: 15-12-2024
Het is aan jouw hoe je het implementeerd. Als jij het wil combineren is er niemand die je tegenhoud. Maar ik vind het ver gaan om te zeggen dat het onlogisch is :)

Het handige aan dit schema is dat je er een goed beeld bij krijgt hoe je de punten moet berekenen. Ik denk dat deze chart geholpen heeft bij het intepreteren van de startpost/puntentelling.

petersmit.eu


Acties:
  • 0 Henk 'm!

  • Dricus
  • Registratie: Februari 2002
  • Laatst online: 07:10

Dricus

ils sont fous, ces tweakers

liquid_ice schreef op donderdag 28 juni 2007 @ 14:49:
Kan je niet beter eerst de bungalows (dan per bungalow de voorkeur en vegatarische punten) berekenen, daarna de personen (ingedeelt, per ingedeelde de (niet)roomies en partner punten)
Het doel van dit schema is vooral om de puntentelling meer inzichtelijk te maken, niet om 1-op-1 te implementeren (kan wel natuurlijk). Een efficiënte implementatie mag iedereen lekker zelf verzinnen :P.

Stel niet uit tot morgen wat je vandaag nog tot morgen kunt uitstellen...


Acties:
  • 0 Henk 'm!

  • liquid_ice
  • Registratie: Februari 2001
  • Laatst online: 08:34
Mijn excuses om het meteen "onlogisch" te noemen...

maar het maakt de punten telling zeker wel duidelijk, wat dat betreft is het zeker een goed schema.

Maar is het schema officieel goedgekeurd door de wedstrijdleiding?
(heb geen zin om 36 pagina's door te zoeken naar het antwoord)

[ Voor 30% gewijzigd door liquid_ice op 28-06-2007 15:28 ]

Klus page: http://klusthuis.blogspot.com


Acties:
  • 0 Henk 'm!

  • The Fox NL
  • Registratie: Oktober 2004
  • Laatst online: 09:44
_wm_, een opmerking over je online validator

Bij de officiele testset staat bovenaan 20070618223325363689.ini met 428 punten. Maar de betreffende output.ini is er een met een score van 426 (de eerste score van 426 van J, bovenaf gezien).

(Of is dit een feature ;))

Acties:
  • 0 Henk 'm!

  • Serpie
  • Registratie: Maart 2005
  • Laatst online: 01-07-2023
Nou ik had het al eerder aangegeven maar heb nog wat geprobeerd maar ik ga het helaas niet redden, ik heb wel iets draaiend maar alleen getest op de testset, en mijn code ziet er nog zo bar slecht uit dat ik het niet in ga sturen. Volgende week vakantie, en ik was erg druk met mijn practicum opdracht voor school.

Ik moet eerlijk zeggen dat de opdracht me ook minder kon boeien dan de vorige opdracht (helaas mislukt maarja). De eerste heb ik niet meegedaan maar die had me ook erg leuk geleken. Ik hoop dus op een leuke(re) volgende opdracht (voor mij dan) en dan ga ik nog een poging wagen.

Iedergeval success natuurlijk voor iedereen die wel mee doet, en natuurlijk toch mijn complimenten voor de organisatie. Ik vind het concept geweldig en ik hoop dat jullie er mee door blijven gaan!

[ Voor 15% gewijzigd door Serpie op 28-06-2007 22:31 ]


Acties:
  • 0 Henk 'm!

  • liquid_ice
  • Registratie: Februari 2001
  • Laatst online: 08:34
ik heb nog een vraagje over de punten telling.

Als 1 van de roomies van iemand op z'n kamer is, krijgt hij dan ook nog de extra punten als de andere roomies in het huisje zijn?

SORRY, zelf al gevonden:
+1 Als geen van de roomies in dezelfde kamer is ingedeeld, maar wel een of meerdere in het zelfde huis. Deze regel gaat ook op wanneer iemand's partner een roomie heeft opgegeven.

[ Voor 39% gewijzigd door liquid_ice op 29-06-2007 12:29 ]

Klus page: http://klusthuis.blogspot.com


Acties:
  • 0 Henk 'm!

  • liquid_ice
  • Registratie: Februari 2001
  • Laatst online: 08:34
M'n proggy kan inlezen, controlleren van ingelezen files, initializatie meeting maken, elimineren van mindere meetings, valideren, en wegschrijven.

Ook kunnen meerdere meetings worden gemaakt d.m.v een random, maar dat werkt nog niet helemaal (random werkt wel als ik er doorheen loop, maar niet als ik er met run gewoon ineens doorheen ga). (of iets anders is het probleem)
code:
1
2
Random random = new Random();
NewKid.Mutate(random.Next(0, NewKid.Members.Count), random.Next(0, NewKid.Members.Count));

Tevens moet de grote loop van het genetisch algoritme worden gemaakt.

Dit is een dag werk, maar ik ben zo op vakantie en ga het niet halen om er nog aan te werken (en ben de 21 pas terug).

Ik heb barweinig commentaar toegevoegd, maar als iemand interesse en tijd heeft mag ie het van mij afmaken (en zo MEDE de eer nemen van het winnen ;)).
Ik plaats zo een link voor als er iemand geintereseerd is.
[update]
Mail me op: snip voor het project
[/update]
Het is in C# met Microsoft Visual Studio 2005 gemaakt.

PS : Als iemand er commentaar over heeft wil ik het ook wel horen :D

[ Voor 4% gewijzigd door RobIII op 10-07-2007 02:31 ]

Klus page: http://klusthuis.blogspot.com


Acties:
  • 0 Henk 'm!

  • Eskimootje
  • Registratie: Maart 2002
  • Laatst online: 11:51
ajb geen code plaatsen tot de contest is afgelopen dat is niet leuk...

Acties:
  • 0 Henk 'm!

  • liquid_ice
  • Registratie: Februari 2001
  • Laatst online: 08:34
Mensen mochten toch samenwerken...
Ik ga het nu niet halen en als iemand de komende 2 weken tijd heeft mag ie het van mij afmaken...

Mensen kunnen zelf kiezen of ze het downloaden dan of niet.
of zijn er meer mensen hier tegen?

[ Voor 27% gewijzigd door liquid_ice op 04-07-2007 23:03 ]

Klus page: http://klusthuis.blogspot.com


Acties:
  • 0 Henk 'm!

  • Malthus
  • Registratie: April 2003
  • Laatst online: 23-04 15:30
liquid_ice schreef op woensdag 04 juli 2007 @ 22:54:
Dit is een dag werk, maar ik ben zo op vakantie en ga het niet halen om er nog aan te werken (en ben de 21 pas terug).

Ik heb barweinig commentaar toegevoegd, maar als iemand interesse en tijd heeft mag ie het van mij afmaken (en zo MEDE de eer nemen van het winnen ;)).
Ik plaats zo een link voor als er iemand geintereseerd is.
Misschien is het een idee om de code naar een geïnteresserde te mailen. Dan hebben de andere deelnemers in ieder geval niet de verleiding om in jouw code te gluren. :)

In ieder geval een fijne vakantie!

Acties:
  • 0 Henk 'm!

  • liquid_ice
  • Registratie: Februari 2001
  • Laatst online: 08:34
@Malthus: goed idee, maar uuhhhh...
Op vakantie heb ik geen (of maybe 1/2 keer een half uurtje I-net).

Maar zoals een BICT-er beaamt (Jaah, sorry heb vandaag m'n diploma gekregen) is hier een oplossing:
stuur een bericht naar: snip en ik stuur je de link terug waar het project te downloaden is.

Van mij mag het als je verder wilt werken, maar ook als je een nieuwsgierig aagje bent.

[ Voor 64% gewijzigd door RobIII op 10-07-2007 02:31 ]

Klus page: http://klusthuis.blogspot.com


Acties:
  • 0 Henk 'm!

  • m277755
  • Registratie: Februari 2004
  • Laatst online: 24-01-2022

m277755

leest meer dan hij typt

het waarschijnlijk geen goed idee om je e-mail adres zo ongecodeerd op internet te zetten, zeker op een bekend forum als dit. ;)

Verder zou het denk ik een goed idee zijn om je code aan maximaal 1 persoon te mailen. Je kan het moeilijk samenwerken noemen als een aantal mensen los van elkaar wel dezelfde basis hebben. O-)

Acties:
  • 0 Henk 'm!

  • webschaapje
  • Registratie: Mei 2007
  • Laatst online: 10-06-2024
Mailde zojuist mijn inzending. Ik gebruik een Genetisch Algoritme...

Nu eerst op vakantie. 8) Ben benieuwd naar de resultaten :P

Acties:
  • 0 Henk 'm!

  • liquid_ice
  • Registratie: Februari 2001
  • Laatst online: 08:34
@m277755, zo heeft iedereen z'n eigen ideeen...
Kan moeilijk met iedereen rekening houden.
Als de organizatie het niet eens is hiermee, dan mogen ze m'n mail adres hier verwijderen van mij...

Daarnaast, denk je werkelijk dat liquid.contest mijn normale mail is ;)
Ik heb dat adres natuurlijk speciaal aangemaakt voor dit doel.

Klus page: http://klusthuis.blogspot.com

Pagina: 1 ... 9 ... 11 Laatste

Dit topic is gesloten.