macht jemand beim icfp04 mit?



  • SeriousSam schrieb:

    Nachdem die Tore geschlossen sind...

    Hier ist was ich eingeschickt habe: http://www.acid-code.ch/~samuel/icfp04.zip

    Und wehe jemand kritisiert meinen Programmierstil. 🙄 Dafür, dass ich fast normal geschlafen habe und erst am Samstag morgen begonnen habe ist das wohl nicht so übel.

    Habt Spass 🙂

    Hmmm...soviel Code hab ich gar nicht. Hab auch keinen richtigen Preprozessor
    sondern hab mir nur ne Klasse 'Instruction' gemacht, welche mir die
    entsprechenden Informationen bereitstellt, allerdings hat die gar nicht soviel
    Code. Ich komme im Moment nur auf 18kbyte Code, da fehlen zwar noch en paar
    kleine Funktionen, welche ich noch fertigschreiben muss, aber soviel wird das
    nicht mehr.

    Da stell ich mir dann doch jetzt schon im Voraus die Frage, ob mein Code richtig
    sein kann.

    Mir ist auch gar nicht eingefallen, den Code nur einfach so runterzuschreiben,
    ich hab mir gleich direkt Gedanken ueber Objekte gemacht (hab da World, Cell,
    Ant und Instruction), wahrscheinlich waere ich sonst doch noch schneller zu mehr
    gekommen, aber das hatte SideWinder ja schon weiter o. gesagt gehabt.

    Naja, mein Notebook ist heut wieder angekommen und dann werd ich mich mal gleich
    ranmachen, den Code fertig zu schreiben. Falls interesse besteht, werd ich den
    dann auch mal zum Download zur Verfuegung stellen.

    mfg
    v R



  • Schade, zu spät gelesen. Sonst hätte ich natürlich mitgemacht und gewonnen. Nächstes Jahr bitte eher Vorstellen und mit Aussagekräfitgerem Titel !!!!!



  • Physikstudent schrieb:

    Schade, zu spät gelesen. Sonst hätte ich natürlich mitgemacht und gewonnen. Nächstes Jahr bitte eher Vorstellen und mit Aussagekräfitgerem Titel !!!!!

    Bitte deine Ameisenversion in 3 Tagen hier abliefern - die müssen dann gegen den icfp04-Gewinner ran 🙂

    MfG SideWinder



  • Nee, da fehlt der Anzreiz.



  • Physikstudent schrieb:

    Nee, da fehlt der Anzreiz.

    Ich dachte schon du hättest einen dringenden Termin 🤡 😉

    MfG SideWinder



  • ich sag euch mal meinen plan:
    die marker verwende ich wie folgt:
    m4: feld ist bewertet
    m0-m3: bewertung (interpretiert als binärzahl zwischen 0 und 15)
    m5: ameisenstraße

    trifft ne ameise auf ein unbewertetes feld, bewertet es diese anhand eines sichbaren nachbarn mit this->wert = nachbar->wert+1

    dadurch kann jede amaeise im falle eines futterfundes optimal schnell heimlaufen, sie muß ja nur stets auf ein niederwertigeres als das aktuelle feld tappen. sie wird sicher bei feld 0 ankommen.

    ups, alle werte sind modulo 16, aber egal. die funtion < ist halt entsprechend zu bauen.

    feld 0 ist in ner "festung", die so aussieht:

    + +
    + 0
     + +
    

    in feld 0 kann nie ne fremde ameise gehen, denn da stirbt sie sofort.
    meine ameisen gehen einfach rein, worauf der stopfen (s)

    + +
    s 0
     + +
    

    sofort wegrennt. die reingegangene ameise legt auf feld 0 die beute ab und springt zum programmcode von s (sie wird der neue stopfen).

    ne ameise, die futter fand, legt auf ihrem rückweg immer Marker 0 5 ab, eine ameisenstraße. findet ne gelangweilte ameise ne straße, geht sie die straße hinauf (entsprechend der bewertungen) und am be futterfund geht sie heim (legt neue strasse dazu). ist aber am ende gar nix, löscht sie den straßenmarker am endfeld. so verschwinden straßen zu inzwischen leeren plätzen allmächlich.

    da klappt sogar alles soweit fast. allein mein problem ist, daß sich manchmal ne ameise, die zu feld 0 will, um futter abzuliefern, auf feld s landet und dann den ausgang der festung blockiert.



  • Aber sollte das nicht eigentlich _nicht_ passieren, denn du hast doch dieses Feld
    belegt solange keine Ameise auf Feld 0 ist?

    Merkwuerdiges Verhalten. Bin leider immernoch nicht soweit, meine Simulation fertig
    zu uebersetzen. Morgen hab ich die ersten beiden Schulstunden frei, da werd ich
    dann auch nochwas daran arbeiten.

    Wer weiss, vielleicht werden in diesen beiden Stunden meine Killerameisen geboren 😃

    mfg
    v R



  • Noch ne Frage zu clearMarkerAt():

    Was genau wird hier gemacht? Soll hier current_marker-1 gesetzt werden, oder
    soll current_marker auf 'no_marker' gesetzt werden?

    [Nachtrag]
    Lesen sollte gelernt sein und zusaetlich, sollte man selbiges auch mal konzentriert
    tun, dann haette ich die frage nicht gestellt 🙂
    [/Nachtrag]

    mfg
    v R



  • Jetzt muss ich doch nochmal was fragen, koennen Marker von Red und Black zugleich
    gesetzt sein?

    mfg
    v R



  • virtuell Realisticer schrieb:

    Jetzt muss ich doch nochmal was fragen, koennen Marker von Red und Black zugleich
    gesetzt sein?

    ja.



  • virtuell Realisticer schrieb:

    Aber sollte das nicht eigentlich _nicht_ passieren, denn du hast doch dieses Feld
    belegt solange keine Ameise auf Feld 0 ist?

    ja, aber wenn ne ameise auf feld 0 geht, dann geht die stopfenmeise weg. bevor die ameise von feld 0 auf s gehen kann, huscht von schräg eine dritte ameise auf s und blockiert ab dann dauerhaft, da sie bestrebt ist, auf feld 0 zu kommen.
    normalerweise geht wegen des gelände-gefälles keine ameise mit futter einfach so dahin. und nur die mit futter sind so bestrebt, feld 0 zu erreichen, dass sie blockierend wirken.
    dass die dritte ameise dahin will, kann zwei gründe haben:
    - auf dem heimweg war stau und sie wich aus. ausweichen müssen ameisen auf dem rückweg aber können, da oft die ameisenstraße vom gegenverkehr blockiert ist.
    - hinter feld s war ein fein und blockierte... meine ameisen wucherten mit der zeit um das ganze lager und umstellten und killten den feind... und erzeugt beim sterben 3 food!... ne non-food-meise betritt das feld (die dürfen ja, denn non-food-meisen achten nicht auf richtungen (außer wenn sie auf ner straße sind))... sie wird food-meise und strebt gegen 0 und blockiert.



  • mein ameisencode hat leider sicher noch einige fehler drin. aber der plan war, dass einige ameisen ein wegnetz bauen, sodass ameisen mit food schnell zurückfinden. dann gabs noch ein paar ameisen, die versuchen food vom gegner aus dessen hügel zu schaffen und ein paar, die den eigenen hügel bewachen sollten. aber irgendwann kommt es auch zu stau, oder die ameisen geraten auf dem rückweg in einen zyklus. mal schauen, ev. verbesser ich den code noch.

    hat jemand noch ameisen, gegen die ich antreten kann?



  • SeriousSam schrieb:

    hat jemand noch ameisen, gegen die ich antreten kann?

    wget http://tampe.cc/ant/all_ants.zip
    alle einsendungen, die die teilnehmer der liste namens icfp04-discuss@lists.seas.upenn.edu veröffentlicht haben.

    ich hole mir gerade humes stricmp.h, weil die leute so oft kleingeschrieben haben und teste dann mal ein paar.



  • volkard schrieb:

    ich hole mir gerade humes stricmp.h, weil die leute so oft kleingeschrieben haben und teste dann mal ein paar.

    ist viel zu viel arbeit, so nen case insensitive string zu bauen. vergleichen geht ja schnell. aber dann vertragen die sich nicht mit istream...

    aber dann hab ich die abteilung für fürchterlich riskanten code gefragt und bekam folgende lösung:

    //tust du immer machen "string foo;...;if(foo=="hallo)"also string links, 
    //dann tut jetzt dein ganzer parser gehen
    bool operator==(string const& a,char const* b){
    	return stricmp(a.c_str(),b)==0;
    }
    


  • Schade...
    Ich merk jetzt erst, wie viele Fehler ich gemacht habe.

    Hier eine deutlich gründlichere Version: http://www.acid-code.ch/~samuel/seriousant3.ant



  • hier meine version, die ich abgegeben habe.
    www.volkard.de/volkard.ant



  • Hallo,

    [OT]
    Ausschnit aus Volkards Ameisencode

    Drop 0
    Drop 0
    Turn Left 251
    Turn Left 252
    Turn Left 253
    Sense Ahead 254 253 Friend
    Turn Left 255
    Turn Left 256
    Turn Left 257
    Move 400 257
    

    War das beabsichtigt, oder hab ich zu viel Phantasie ?
    [/OT]

    Sry, für das unqualifizierte Posting.



  • Gibt es eigentlich schon ein offizielles Programm mit dem ich die Ergebnisse/das Verhalten der Ameisen in meinem Program testen kann? Ich find da irgendwie nichts auf der Seite von denen.
    Bei mir stimmt glaub ich noch irgendwas mit den Markern nicht, aber die Ameisen ohne Marker machen ihren Job schon einwandfrei.

    Vorallem die PersistANT.ant sammelt in dem 100x100 Beispiel-Level bei mir gut 70% - 90% des Futters in 100000 Runden, wenn sie mit der Standard-Random Ameise spielt.

    Aber mit einer State-Maschine ein gute Ameise zu schreiben find ich schon recht heftig - mit einer richtigen Scriptsprache wäre das bei den selben Funktionen viel einfacher umzusetzen.



  • illuminator schrieb:

    Gibt es eigentlich schon ein offizielles Programm mit dem ich die Ergebnisse/das Verhalten der Ameisen in meinem Program testen kann?

    nee. aber wenn dein prog exakt die gleiche ausgabe macht, wie dump.all, dann wird es schon ok sein.
    zur not kannste meines haben.

    Aber mit einer State-Maschine ein gute Ameise zu schreiben find ich schon recht heftig - mit einer richtigen Scriptsprache wäre das bei den selben Funktionen viel einfacher umzusetzen.

    das IST ja der task! man mußte sich schnell nen praktikable skriptsprache basteln, um fett zu siegen.



  • das IST ja der task! man mußte sich schnell nen praktikable skriptsprache basteln, um fett zu siegen.

    Ich hab mir schon überlegt ob man nicht einen Compiler der State-Maschine ausgibt schreiben könnte. Aber sowas hab ich noch nie gemacht, wäre wohl nicht so einfach...

    Na egal, es ging mir ja eh nicht um den Wettbewerb an sich (hab Montag mittag angefangen) sondern ich fand es einfach interessant, KI interessiert mich im allgemeinen sehr stark.

    Also dein Programm würde mich interessieren, ich lade mal meines hoch, sobald ich den bug gefunden hab, der bewirkt das z.B. deine Ameise offensichtlich nicht funktioniert (sie bleibt am start stehen).

    -> nh-illuminator das_@_zeichen gmx.de


Anmelden zum Antworten