WPC13
-
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.
-
Umdrehen?
-
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.
Du sagst es: "Zufällig". Der Standard definiert die Semantik eines Programms. Wenn die Semantik eines Ausdrucks nicht definiert ist, dann kann da natürlich auch was passieren. Normalerweise etwas, das von den speziellen Eigenschafter der Implementation, des Rechners, des Betriebssystems oder der Mondphase abhängt, aber es ist eben "undefiniertes Verhalten". Ein Programm ist standardkonform, wenn es nicht von undefiniertem Verhalten abhängt.
u.a. Abschnitt 1.4§1
-
ness schrieb:
Umdrehen?
Ich sagte, wenn du dich nicht mehr bewegen kannst. Das umfasst u.a. auch, dass umdrehen und weglaufen nicht geht. Weil du z.B. auf dem Startfeld eingekeilt bist o.ä.
-
Ich glaube der Jester wird
field_[x][y] = FieldState(field_[x][y] | 3);
noch in
field_[x][y] = FieldState(field_[x][y] | monster);
ändern
-
ja, werde ich tun. Das war ein Fehler.
Kommt davon wenn man den Code bis spät in die Nacht hackt. Es soll natürlich nicht immer in nem Loch wohnen.Danke für den Hinweis.
-
Bashar 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.
Du sagst es: "Zufällig". Der Standard definiert die Semantik eines Programms. Wenn die Semantik eines Ausdrucks nicht definiert ist, dann kann da natürlich auch was passieren.
Nun erzeugt dieser Ausdruck aber nicht per se undefiniertes Verhalten.
Bye, TGGC (Wähle deine Helden)