WPC13
-
Ponto schrieb:
Werden die Welten so erzeugt, wie im Code? Aus der Kenntnis des Generators und einiger Resultate kann man Rückschlüsse auf das Raster ziehen.
Aber eine ernsthafte Frage: Zur Zeit gibt es keine Wände innerhalb des 4x4 Rasters. Bleibt das so?
hm, kann sein, daß ich am Generator noch was ändere. Dann aber nur um besser an das ranzukommen was im Text beschrieben ist: eine Gleichverteilung der einzelnen Elemente.
Es wird keine Wände innerhalb des Rasters geben.
-
net schrieb:
macht doch mal 'ne aufgabe, die jeder in der sprache seiner wahl lösen kann. ist zwar hier ein c/c++ board aber ich denke dass auch manche gern c#, java, delphi, wasweissich nehmen würden.
und wie soll ich das alles dann vergleichen? In jeder Sprache mal schnell das Framework implementieren?
Ich glaube nicht, daß es wirklich weh tut das in C++ zu bauen.
-
Hm, Stochastik war zwar nicht unbedingt mein Lieblingsthema im Matheunterricht, aber die Berechnungsgrundlagen, auf die man hier aufbauen kann, kriege ich glaube ich noch zusammen
Mal schauen, was dabei am Ende herauskommt...
-
Jester schrieb:
volkard schrieb:
darf ich annehmen, daß ++*reinterpret_cast<long*>(this); und andere zugriffe auf private-sachen der basisklasse strikt verboten sind?
ja klar. Sowas hat afaik undefined behavior zur Folge und bewegt sich damit außerhalb der Grenzen von Standard-C++.
Das behauptest du.
Bye, TGGC (Wähle deine Helden)
-
Achso, hier noch'n Standard Bt, mit dem ihr anfangen könnt. Nach volkard seiner Idee, darum ist der so doof.
#ifndef THEL33TBOT_H #define THEL33TBOT_H #include "Agent.h" // inheriting class's header file class TheL33tBot : public Agent { public: TheL33tBot(); ~TheL33tBot(); virtual Action decideNextAction(Sense sense); bool m_Grabbed; }; #endif
#include "TheL33tBot.h" #include <cstdlib> //das geniale Teil hier ist von mir //also nicht vergessen //wer auch immer gewinnt, schuldet mir sein Erstgeborenes TheL33tBot::TheL33tBot() { m_Grabbed= false; } TheL33tBot::~TheL33tBot() { } Agent::Action TheL33tBot::decideNextAction(Sense sense) { if( m_Grabbed ) { return FINISH; } if( sense.glitter ) { m_Grabbed= true; return GRAB; } Agent::Action Blubb[]= {TURN_LEFT, TURN_RIGHT, MOVE}; return Blubb[ rand() % 3 ]; }
Kann man so als Basis nehmen.
Bye, TGGC (Wähle deine Helden)
-
wozu kann man das monster eigentlich umschießen? das feld kann man dann doch eh nicht betreten, weil es immer in einer fallgrube wohnt.
-
Ach es gibt so viele Sache am Framework, die einem das Leben unnötig schwer machen. Und jetzt war auch noch wer zu dumm, seine selbst definierten Konstanten zu benutzen...
Bye, TGGC (Wähle deine Helden)
-
Der Agent startet immer im Feld [1,1]
Also nicht ganz am Rand oder was?
-
Michael E. schrieb:
Der Agent startet immer im Feld [1,1]
Also nicht ganz am Rand oder was?
das ist der rand.
das feld geht von [1,1] bis [4,4].
intern geht es zwar von [0,0] bis [5,5] und hat einen praktischen rand, auf dem meterdicke wände stehen, aber da konnen wir eh nicht hin.
-
volkard
*******#wozu kann man das monster eigentlich umschießen? das feld kann man dann doch eh
#nicht betreten, weil es immer in einer fallgrube wohnt.Steht so nicht drin, es kann in einem Raum mit Fallgrube wohnen, muss aber nicht.
Und du musst den Raum ja auch gar nich betreten, wenn du dein Umfeld prüfst, aha hier stinkts und es geht ein Luftzug, na schieß ich doch einfach den Pfeil in die Richtung.Könnte man denke ich gut A* verwenden, hätte man bei dem Lampenbeispiel auch machen können wenn ich mich recht entsinne
net
***Bau doch ein C Framework, und übernimm die Aufgaben für Jester *g* dann hätten wir wenigstens auch sowas fürs C Forum
-
@Tester:
Lern quoten, verstehe die Aufgabe und lies das Framework. Im Code wird das Monsterfeld auf Grube gesetzt, immer. Das Monster erschiessen bringt -10 Punkte, darum wäre es dumm zu schiessen, wenn es nicht irgend einen Vorteil bietet. Überhaupt, wo soll "die Richtung" sein? A* allein bringt nix, da du nichtmal das Ziel kennst.Bye, TGGC (Wähle deine Helden)
-
TGGC
****Dann ist die Aufgabenstellung nicht konsitent in Bezug aufs Framework.
In der Aufgabenstellung steht folgendes, "[...]wer einen Raum mit einem Loch oder einem lebenden Monster betritt stirbt[...]", da steht für mich ein ganz klares ODER.
Das mit dem Bewertungssystem hab ich überlesen.
tt
-
TheTester schrieb:
Dann ist die Aufgabenstellung nicht konsitent in Bezug aufs Framework.
Korrekt. Und jetzt? Nicht teilnehmen?
Bye, TGGC (Wähle deine Helden)
-
TheTester schrieb:
Steht so nicht drin, es kann in einem Raum mit Fallgrube wohnen, muss aber nicht.
das impliziert aber noch lange nicht, daß das monster manchmal in räumen ist, wo keine grube ist.
das framework ist konsistent mit der aufgabenstellung.
-
TGGC schrieb:
Jester schrieb:
volkard schrieb:
darf ich annehmen, daß ++*reinterpret_cast<long*>(this); und andere zugriffe auf private-sachen der basisklasse strikt verboten sind?
ja klar. Sowas hat afaik undefined behavior zur Folge und bewegt sich damit außerhalb der Grenzen von Standard-C++.
Das behauptest du.
Das definiert der C++ Standard (3.10/15) und damit ist das keine Behauptung sondern ein Fakt. In Ermangelung eines Membertemplates und ohne Änderung des Framework-Codes gibt es keine legale Möglichkeit auf die privaten Elemente der Framework-Klassen zuzugreifen.
-
Die Position des Monsters und des Goldes werden zufällig und gleichverteilt aus den Quadraten außer dem Startquadrat gezogen.
Außerdem enthält jedes Quadrat außer dem Start mit Wahrscheinlichkeit 0.2 ein Loch.Jedes Quadrat außer dem Start (also auch dem des Monsters!) enthält mit 80% Wahrscheinlichkeit kein Loch. So steht es in der Aufgabe.
Bye, TGGC (Wähle deine Helden)
-
HumeSikkins schrieb:
TGGC schrieb:
Jester schrieb:
volkard schrieb:
darf ich annehmen, daß ++*reinterpret_cast<long*>(this); und andere zugriffe auf private-sachen der basisklasse strikt verboten sind?
ja klar. Sowas hat afaik undefined behavior zur Folge und bewegt sich damit außerhalb der Grenzen von Standard-C++.
Das behauptest du.
Das definiert der C++ Standard (3.10/15) und damit ist das keine Behauptung sondern ein Fakt. In Ermangelung eines Membertemplates und ohne Änderung des Framework-Codes gibt es keine legale Möglichkeit auf die privaten Elemente der Framework-Klassen zuzugreifen.
Lösen wir uns von Volkards Beispiel, er sprach ja auch noch von anderen Sachen. Ich mache einfach ((char)0x12345678)= 1000; Was ist daran gegen den Standard? Und wenn dort zufällig die Punktzahl steht? Kann ja mal passieren.
Bye, TGGC (Wähle deine Helden)
-
TGGC schrieb:
Lösen wir uns von Volkards Beispiel, er sprach ja auch noch von anderen Sachen. Ich mache einfach ((char)0x12345678)= 1000; Was ist daran gegen den Standard? Und wenn dort zufällig die Punktzahl steht? Kann ja mal passieren.
es geht auch nicht darum, sondern ganz einfach ums hacken. sowas wie beim letzten mal daß einer internas von vector<vool> nimmt, gehen am sinn der aufgabe vorbei, meine ich. und hier wäre es halt hacks, um sich punkte anzueignen. ich wollte, daß es offiziell ausgesprochen ist, daß das verboten ist.
in der eile der aufgabenstellung mögen manche lücken passiert sein. ist ja nicht so schlimm, wenn die spieler höflich bleiben.
hier eine unhöfliche sache: mein Agent legt sich in jedem zug 1000 welten an (welt-konstruktor ist public), davon nimmt er nur nur die, die auf [1,1] den schatz haben (getSensorInput ist public), mit den guten welten füttert er die eigene (der basisklasse) solve (auch public) und das solve gibt ihm 1000 punkte, wenn er nur klug genug ist, den schatz zu nehmen, wenn er draufsteht. also leetbot von tggc und mir und ein kleiner cheat.
hier eine viel geilere: er legt ein static-feld mit 100 zahlen an und belegt die zufällig mit rand(). und wenn er verliert, belegt er sie nochmal zufällig mit rand(). wenn er aber gewinnt, merkt er sich, daß er gewonnen hat und läßt sich im konstruktor so lange rand() liefern, bis genau die 100 zahlen kamen. weil der zufallszahlengenerator zyklich ist, wird damit der seed auf den stand getan, der auch da war, als die welt das letzte mal gebaut wurde.
-
volkard schrieb:
TGGC schrieb:
Lösen wir uns von Volkards Beispiel, er sprach ja auch noch von anderen Sachen. Ich mache einfach ((char)0x12345678)= 1000; Was ist daran gegen den Standard? Und wenn dort zufällig die Punktzahl steht? Kann ja mal passieren.
es geht auch nicht darum, sondern ganz einfach ums hacken. sowas wie beim letzten mal daß einer internas von vector<vool> nimmt, gehen am sinn der aufgabe vorbei, meine ich. und hier wäre es halt hacks, um sich punkte anzueignen. ich wollte, daß es offiziell ausgesprochen ist, daß das verboten ist.
Doch es geht genau darum. Angeblich sind solche Tricks nämlich alle nicht Standard konform, und damit wäre Hacken bereits verboten. Ich allerdings glaube das nicht und wäre auch für eine Klarstellung der Regeln.
Ausserdem sollte geklärt werden, wie das nun mit dem Moster ist, in der jetzigen Form kann man es ja auch ignorieren.
Bye, TGGC (Wähle deine Helden)
-
Zum Schießen: Wenn du in eine Situation kommst, in der du dich nicht bewegen kannst, ohne ein Feld zu betreten, dass mglw. das Monster enthält, kannst du entweder auf Risiko spielen, aufgeben oder eins der Felder beschießen.