Inzendingen en uitslagen
Inzendingen
Hieronder vind je alle inzendingen die we binnen de deadline hebben ontvangen. De volgorde van deze lijst van inzendingen is alfabetisch en zegt niets over de behaalde score.
Download: hier
Taal/omgeving: C++
Quote uit bijgaande email:
Bij deze mijn inzending, ik heb geen backtracing gebruikt, dus er zit een limiet aan de kwaliteit van de oplossing. Echter zou hij binnen een uur moeten stoppen wanneer blijkt dat hij langer nodig zou hebben voor de beste oplossing.
Arty_Shock
Download: hier
Taal/omgeving: C#
Quote uit bijgaande email:
De opdracht is gemaakt met behulp van Visual Studio 2005 en vereist dat de testmachine is voorzien van Microsoft.Net framework 2.0. De executable is op te starten vanaf de commandline en verwacht een words.txt bestand in de current directory. Als eerste parameter is eventueel een pad op te geven naar een ander inputbestand. Output van de gridxx.txt bestanden vindt ook in de current directory plaats. Mja, dat was het wel.
Download: hier
Taal/omgeving: Java
Quote uit bijgaande email:
Hier mijn oplossing. Resultaten zullen redelijk zijn, maar ik heb zeker
genoten van de opdracht.
Ik stuur een executable JAR-file mee op, gegenereerd door Eclipse, waar
zowel de gecompileerde bestanden als de sources in zitten. Ik had
begrepen uit forum-posts dat dit voldoende is voor jullie?!?
Ik stop er geen readme bij, want er valt niet meer te doen dan de
JAR-file te starten in de map waar ook de 'words.txt' file staat. (Zoals
in de opdracht omschreven.) En er zit, naar mijn idee, voldoende
code-documentatie tussen ze source files om de werking uit te leggen.
Download: hier
Taal/omgeving: Java
Download: hier
Taal/omgeving: PHP
Quote uit bijgaande email:
Hierbij mijn inzending voor de 2e programmeer contest. Net zoals vorige keer weer geschreven in php. Gemaakt en getest op Linux, maar werkt ook prima onder Windows. Helaas door tijdgebrek een erg eenvoudig systeem geworden.
Als bij het uitvoeren blijkt dat bestanden met de naam gridXX.txt al bestaan, zullen deze aan het begin verwijderd/geleegd worden. Informatie over fouten verschijnen gewoon in het scherm, en wordt niet opgeslagen.
Download: hier
Taal/omgeving: C#
Quote uit bijgaande email:
DotNetFramework 2 zou voldoende moeten zijn.
Download: hier
Taal/omgeving: C++
Quote uit bijgaande email:
Ik was eerst niet van plan om mijn programma in te zenden (het is ook niet helemaal af)
maar omdat het anders zonde van de tijd zou zijn...
In bijlage zit een rar-file (hernoemd voor eventuele attachment blockers).
Wanneer je de file unpackt zitten er 2 .sln files in voor VS.NET 2003 en VS.NET 2005.
Ik heb het programma ook geport naat linux, maar die versie heb ik op deze PC niet bij.
In de rar-file zitten ook GoTWords.exe en een run.bat script.
De reden is dat de exe volgende commandline opties heeft:
GoTWords.exe <file> [<set nummer>]
(ik was te lui om multi-threading en timing support in mijn prog te steken)
De run.bat laat toe om een words.txt file met een maximum van 40 sets
tegelijk te starten. (mochten er meer zijn dan kan de eenvoudige structuur van
run.bat aangepast worden).
Het programma stopt na 10000 iteraties wat voor 1 set soms wel een kwartier kan duren.
Daarom ook dat het run.bat script meerdere instanties tegelijk opstart.
Jullie zullen waarschijnlijk het programma moeten stoppen als het de
toegestane tijd overschrijdt.
Download: hier
Taal/omgeving: C++
Quote uit bijgaande email:
Hierbij treffen jullie mijn inzending aan bovengenoemde contest. Bijgevoegd
is een .zip file met daarin twee Win32/W2K executables en wat C++ code.
File _README.TXT geeft een beschrijving hoe het programma te gebruiken is.
Download: hier
Taal/omgeving: Visual FoxPro
Quote uit bijgaande email:
Onderstaande link bevat mijn inzending voor deze contest.
Op de valreep is het toch nog gelukt om mijn oorspronkelijke routine terug op te bouwen. Dat brengt natuurlijk ook weer wat bugs met zich mee.
Het had wel als extra voordeel dat ik nu ook code heb ingebouwd om in geval van gecrashte threads dat grid door een andere thread nogmaals te laten berekenen.
De zip bevat een mapje source met de code en een mapje Distribution met de executables. In de root staat een omschrijving van het programma.
Het is op zich heel simpel, plaats het geheel in een mapje waar het proces schrijfrechten op heeft, zet een words.txt over mijn testbestand heen en start GoT.exe
Het programma zal zelf een mapstructuurtje aanmaken en wat hulptabellen genereren. De grid01 t/m grid99 bestanden worden in de hoofdmap geplaatst.
In het bestand log.txt is te zien hoe het programma "loopt" De laatste regels daarvan worden in een formpje getoond.
De resterende tijd die wordt weergegeven is indicatief al zal hij ovr het algemeen eerder te negatief zijn dan dan hij extra tijd neemt.
Wanneer tijdens de uitvoer de systeemtijd wordt aangepast negeert het programma dat en gaat gewoon verder tot zijn tijd op is.
Door op het kruisje te drukken geef je een abort commando waarmee de threads stoppen.
Het programma is alleen getest op Windows XP. Helaas heb ik geen Vista tot mijn beschikking.
Download: hier
Taal/omgeving: Java
Quote uit bijgaande email:
Hierbij mijn inzending voor the tweede programmeercontest. De source zit deze keer wel goed in de jar ingepakt. Het makkelijkste is echter gewoon een word.txt bij deze jar in de map zetten en dan de jar starten. Dit kan makkelijk met "java -jar WordGrid.jar".
Download: hier
Taal/omgeving: Java
Quote uit bijgaande email:
bij deze mijn inzending voor de programming contest. Ik zou jullie graag willen waarschuwen. Wegens het tijdgebrek heb ik de code niet meer kunnen oppoetsen. Normaliter ging ik ze voor deze reden niet insturen--echt het is afschuwelijk :) .
De jar bevat de source bestanden en is zo uitvoerbaar. Het programma stopt niet uit zichzelf, maar ik denk dat het bij deze implementatie sowieso niet op een paar seconden zal steken :) . Het lijkt me aangeraden om de jar in een console of IDE te draaien, zodanig dat men toch nog enige vorm van I/O heeft (buiten het schrijven van de bestanden natuurlijk). Het programma aanvaardt geen invoerargumenten en is zo robuust als de gemiddelde kaartentoren :+. Het programma vereist dat het words.txt bestand in dezelfde directory staat als de executable zelf. De output wordt ook in deze directory geplaatst.
Download: hier
Taal/omgeving: C
Quote uit bijgaande email:
Ik heb uiteindelijk te weinig tijd gehad om van de code nog wat fatsoenlijk leesbaars van te maken.
De code werkt, maar daar is dan ook alles mee gezegd :P
Compilen kan met GCC, ik heb zelf DevC++ gebruikt.
Download: hier
Taal/omgeving: VB.NET 2.0
Quote uit bijgaande email:
Hierbij de inzending voor Serpie
De zip bevat 2 mappen, source waar de source in zit en in de map inzending zit de exe voor de contest.
Het is geschreven in vb.net 2.0, je hebt dus het dotnet 2.0 framework nodig om hem te runnen, daarnaas geen vereisten.
Download: hier
Taal/omgeving: C++
Quote uit bijgaande email:
Bij deze mijn inzending voor Programming Contest nummer 2! Executables voor 32-bits Windows zijn bijgevoegd:
- checker.exe: berekent score voor grids in huidige directory
- player.exe: single-threaded player (GCC 3.4)
- player-mt.exe: multi-threaded player (ICC 9.1)
- player-mt-sse3.exe: multi-threaded player voor Pentium 4 met SSE3 instructies (ICC 9.1)
Gek genoeg is de performance van de eerste lokaal verreweg het beste (Intel's binary is maar liefst 30% trager!), maar die is helaas niet multithreaded (aangezien ik GCC 4.2 met OpenMP niet gecompileerd kreeg onder Windows). Gebruik dus bij voorkeur de multi-threaded versies op een multicore systeem (die met SSE3 zou het snelste moeten zijn, maar kan ik lokaal niet testen), en de single-threaded versie op een singlethreaded (en/of niet-Intel) systeem.
Ik kwam er net achter dat er een stomme bug in m'n inzendig zit. Hij doet niet
zoveel zinnigs als de uitvoerbestanden ("gridXX.txt" enzo) niet aanwezig
zijn. Gelieve die dus van te voren aan te maken, om er ueberhaupt resultaten
uit te krijgen. Ze worden dan vanzelf overschreven met een oplossing.
Verder niets bijzonders; gewoon starten in de goede directory en afwachten maar.
Download: hier
Taal/omgeving: R-Project
Quote uit bijgaande email:
Mijn inzending! Hij runt in R, dat is dus een taal! Er zit een README
bij waar hopelijk duidelijk in staat hoe je het moet runnen.
wwwhizz
Download: hier
Taal/omgeving: Java
Quote uit bijgaande email:
Hierbij mijn inzending voor de programming contest deeltje 2. Het is geschreven in java, en zal dus ook moeten worden uitgevoerd in java... Ik heb geprobeerd er een .jar van te maken maar dat gaf allerlei foutmeldingen en toen had ik er geen zin meer in... Dan maar een .rar :+
Wat ik heb gedaan:
- Ik zorg eerst er voor dat overlap binnen het begin en eind van een woord wordt weggefilterd (dmv een trie)
- Vervolgens sorteer ik de woorden die dat oplevert op lengte en begin met de grootste (in een arraylist)
- Dan ga ik dat lijstje af en zoek voor elk woord de positie met de meeste overlap en zet ze dan in een tweedimensionaal array (die eventueel wordt vergroot)
- Aan het eind van het lijstje maak ik er een bestand van en ga verder met de volgende
- Steeds worden wat leuke stats gemeld over het zojuist gemaakte grid (kan er eventueel wel uit om het nog íetsje sneller te maken)
- Aan het eind wordt nog even vermeld hoelang hij er mee bezig is geweest...
Zie ook readme.txt.
Het opstarten kan gewoon in een console/Command Window dmv het commando 'java WordGrid' (zonder quotes natuurlijk); ik heb het in Windows XP gemaakt met de Java SDK 6.0 en Eclipse.
Download: hier
Taal/omgeving: Java
Uitslagen
And the votes are in!
We hebben alle inzendingen één keer volledig laten lopen met deze woordenlijst.
Na het runnen van de tests, wat overigens op -NMe-'s pc gebeurd is, zijn Creepy, -NMe- en ik ieder voor zich in de code van alle inzendingen gedoken, en hebben daar scores aan gehangen. We hebben daarbij onder andere gelet op coding style, de aanwezigheid of afwezigheid van goed, duidelijk commentaar, en de kwaliteit van het gebruikte algoritme. We hebben hier voor iedereen punten aan toegekend, en op basis daarvan nog wat categoriën gevuld met scores.
En dan nu, zonder verder uitstel: de scores!
Scores
- Soultaker met 331 punten.
Hoewel deze inzending in de eerste instantie gediskwalificeerd werd omdat Soultaker er vanuit ging dat de grid-bestanden van tevoren al bestonden, bleek al snel dat het wél de beste oplossing was. Na veel gediscussiëer werd besloten hem te diskwalificeren, tot we erachter kwamen dat we eigenlijk nergens in de regels hadden gesteld dat het die bestanden door het programma aangemaakt moesten worden. Soultaker heeft dus toch gewonnen, maar is wel door het oog van de naald gekropen. 
Run-tijd: 52 minuten.
- KoW met 448 punten.
KoW wist nét binnen de tijd alle grids te voltooien en weg te schrijven, met een zeer mooie score. Een verdiende tweede plaats.
Run-tijd: 57 minuten.
- zwippie met 470 punten.
zwippie's oplossing volgt die van KoW op de voet, maar was wel iets sneller klaar. Nek aan nek, maar toch derde.
Run-tijd: 51 minuten.
- wwwhizz met 626 punten.
Bijzonder snelle inzending die bovendien een zeer respectabele score wist neer te zetten.
Run-tijd: 1½ minuut.
- Arjan met 694 punten.
Slimme oplossing die tijdens de run kijkt hoeveel tijd er nog is en daar het verdere programmaverloop op aanpast. Mooi geprogrammeerd!
Run-tijd: 54 minuten.
- MarcJ met 714 punten.
De winnaar van onze vorige contest wist het dit keer niet klaar te spelen om alle grids af te krijgen. Hoewel hij een respectabele score neerzet, kreeg hij maar 67 grids af, waarna het programma gecancelled werd.
Run-tijd: 1 uur.
- Arty_Shock met 757 punten.
Degelijke, snelle oplossing. Goede middenmoter wat betreft score, toppertje wat betreft tijd.
Run-tijd: 2 minuten.
- Fiander met 764 punten.
Deze app wierp meteen een foutmelding op, maar bleef toch doorlopen en wist uiteindelijk 81 grids aan te maken voordat de applicatie na een uur gecanceled werd.
Run-tijd: 1 uur.
- EdwinG met 899 punten.
In dit script werd, net als bij de vorige contest, de uitvoer pas op het allerlaatste moment weggeschreven. Erg riskant, maar ook dit keer pakte het niet verkeerd uit. EdwinG's inzending wist alle grids te maken binnen de gestelde tijd.
Run-tijd: 45 minuten.
- cobratbq met 1282 punten.
cobratbq wist 48 grids te parsen binnen een uur, waarna de applicatie gestopt werd.
Run-tijd: 1 uur.
- H!GHGuY met 1453 punten.
Deze inzending was creatief in de zin dat de applicatie 40 verschillende processen (en vensters) opende die ieder voor zich een eigen grid op gingen lossen. Helaas betekende die creativiteit niet meteen ook een voordeel, aangezien er maar 26 grids gemaakt waren voordat de applicatie na een uur gestopt werd.
Run-tijd: 1 uur.
- hij (buiten mededinging) met 1673 punten.
Omdat hij in zijn eerste inzending vergeten was een debugwaarde aan te passen kregen we twee inzendingen van hem. Aangezien de eerste inzending geldt kan deze inzending niet meetellen voor een prijs, maar we noemen hem wel in de scores. Helaas kreeg deze inzending het ook niet klaar om meer dan 12 grids te maken binnen de gestelde tijd.
Run-tijd: 1 uur.
- Nick The Heazk met 1728 punten.
Ook Nick's inzending wist na een uur niet meer dan 12 grids te produceren.
Run-tijd: 1 uur.
- hij met 1780 punten.
Dit is hij's eerste inzending, waarin hij slechts 6 grids af kreeg door een fout ingestelde waarde in zijn programma.
Run-tijd: 1 uur.
- DaCoTa met 1864 punten.
DaCoTa's script had na een uur gedraaid te hebben geen grids voltooid; wel was er een half geplaatst grid, waar nog score aan verbonden is.
Run-tijd: 1 uur.
- Robbbert met 1881 punten.
Na nog geen seconde gedraaid te hebben wist dit programma ons te vertellen dat groep 17 te weinig woorden bevatte, en daarom stopte wegens een foute woordenset. Nou bevatte groep 17 exact 5 woorden, dus dat lijkt op een klein foutje. Aangezien het programma meteen afsloot in plaats van verder te gaan met de andere groepen werden er geen grids aangemaakt.
Run-tijd: 1 seconde.
- Serpie met 1881 punten.
Ook Serpie's inzending gaf er na een minuutje de brui aan. Er zou een exception zijn geweest die niet afgehandeld werd. Ook voor deze inzending was er dus geen grid-uitvoer.
Run-tijd: 1 minuut.
- veldsla met 1881 punten.
Ook veldsla's inzending, die geschreven was in/voor het minder bekende R-Project, gaf helaas vrijwel direct een foutmelding. Wederom geen grids en dus de maximale score.
Run-tijd: 1 seconde.
Java-inzendingen werden uitgevoerd met JRE 6.0 (non-server) en de PHP-inzending met PHP 5.2.0.
Beoordeling van de snelheid
Het beoordelen van de snelheid van een programma is natuurlijk vrij lastig aangezien het vergelijken van twee applicaties die geschreven zijn in verschillende talen nogal wat weg heeft van appels met peren vergelijken. Gelukkig was er wel een overduidelijke winnaar in deze categorie, zoals je in het schema hierboven ook kunt zien.
Arty_Shock en wwwhizz liggen wat tijd betreft dicht bij elkaar, maar wwwhizz had toch nét iets snellere code en bovendien een lagere (en dus betere) score.
Beoordeling van de robuustheid
Zoals gezegd hebben we ook de robuustheid van de code bekeken. Daarvoor hebben we bekeken wie er het beste omging met onverwachte problemen zoals het niet bestaan van invoerbestanden of het aanwezig zijn van corrupte invoer. Lang niet iedereen hield daar evenveel rekening mee (aangezien dat ook niet hoefde), maar vooral EdwinG, MarcJ, Robbert en KoW hielden wel rekening met het onverwachte.
KoW was degene die er met kop en schouders bovenuit stak en de meeste onverwachte problemen wel opving en heeft dus deze categorie gewonnen.
Beoordeling van de code
Onderstaande punten zijn berekend door het gemiddelde te nemen van de jury-beoordelingen. De punten zijn uitgedeeld op een schaal van 1 tot en met 10. Wanneer twee personen dezelfde score hadden bepaalde de score in de categorie "meest defensieve code" de exacte volgorde.
De precieze motivatie blijven we jullie schuldig, maar voor de scores hebben we gekeken naar leesbaarheid en netheid en de aanwezigheid van zinnig commentaar.
- Soultaker met een 9.
- MarcJ met een 8.
- cobratbq met een 8.
- zwippie met een 8.
- Arjan met een 8.
- KoW met een 7.
- EdwinG met een 7.
- Nick The Heazk met een 7.
- Serpie met een 7.
- Arty_Shock met een 7.
- wwwhizz met een 7.
- veldsla met een 7.
- Robbbert met een 6.
- hij met een 6.
- Fiander met een 6.
- H!GHGuY met een 6.
- DaCoTa met een 5.
Prijzen?!
Ik weet dat we gezegd hadden dat er geen prijzen te vergeven waren voor de winnaars. Echter, in de loop van de contest werd de Devschuur crew benaderd door de redactie van de Frontpage. P_de_B wilde een artikel schrijven over de contest en de redactie wilde daar voor de winnaars prijzen aan verbinden. Dit is echter éénmalig voor deze contest; de volgende contest zal weer, net als contest 1, prijzenloos zijn.
Onze winnaars nog eens op een rijtje:
- Soultaker in de categorie "laagste score"; als winnaar van de hoofdcategorie wint hij ook de hoofdprijs: een 22" breedbeeldmonitor van Samsung. Soultaker, gefeliciteerd!
- wwwhizz in de categorie "snelste code"; als winnaar van één van de subcategoriën krijgt wwwhizz een jaarabonnement op Tweakers.net.
- KoW krijgt voor zijn winst in de categorie "meest defensieve code" ook een jaarabonnement op Tweakers.net.
- Soultaker krijgt, omdat hij naast de meest effectieve code ook de meest nette code heeft, óók een jaarabonnement op Tweakers.net.
Afsluiting
We willen jullie graag ook dit keer bedanken voor het tot een succes maken van deze contest. Wij als crew hebben ons erg vermaakt met de organisatie, en we hopen dat dat ook voor jullie geldt voor wat betreft het meedoen. We hopen jullie allemaal weer terug te zien bij de derde contest, die zometeen van start gaat! 
[
Voor 146% gewijzigd door
RobIII op 23-05-2007 15:24
]