Pathfinding - Contest [Beendet]

Übersicht Sonstiges Projekte

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Noobody

Betreff: Pathfinding - Contest [Beendet]

BeitragSa, Aug 02, 2008 0:03
Antworten mit Zitat
Benutzer-Profile anzeigen
So, nachdem der Sudoku - Contest mit äusserst geringer Beteiligung zu Ende ging, läute ich hiermit einen neuen Wettbewerb ein.

Aufgabe: Schreibe eine Funktion FindPath, die den kürzesten Pfad zwischen zwei Punkten findet. Es werden vier Parameter übergeben: StartX, StartY, EndX, EndY, die die Koordinaten des Start- und Endpunktes darstellen.
Als Rückgabewert wird ein String erwartet, der den Pfad von Start bis Ziel darstellt. Die Richtungen sind als Ziffern (nicht als umgewandelte ASCII - Werte!) in den String einzufügen, wobei die Anordnung der Ziffer auf dem Numpad der Richtung entspricht - erlaubt sind also auch Diagonalschritte.
Beispiel: Ein Pfad von "663239874" wäre Rechts-Rechts-Schräg rechts runter-Runter-Schräg rechts runter-Schräg rechts rauf-Rauf-Schräg links rauf-Links
Im Falle, dass kein Weg möglich ist, der Zielpunkt also nicht zu erreichen ist, muss ein leerer String ("") zurückgeliefert werden.

Wichtig: Bei gewissen Algorithmen wie A* wird unter Umständen der Pfad von Ende zu Ziel ermittelt - ein solcher "umgekehrter" Pfad wird nicht als Lösung akzeptiert und muss umgewandelt werden.

Ausserdem muss die Funktion eine Karte beachten, die im Array MapData gespeichert ist. Dieses Array legt fest, ob an der Position X, Y eine Wand steht oder nicht. Ein Wert ungleich Null entspricht einer Wand, eine Null steht für freien Raum. Der Pfad darf nicht durch eine Wand hindurchführen bzw. in einer enden, falls der Endpunkt in einer Wand ist (also eigentlich nicht erreichbar ist).
Die beiden globalen Variablen MapWidth und MapHeight legen fest, wie gross die aktuelle Karte ist. Das Array beginnt bei 0, hat also die Grösse MapWidth - 1, MapHeight - 1.

Die Funktion wird gegen die anderen Funktionen jeweils auf verschieden grossen Maps mit einer verschieden grossen Anzahl Wänden antreten, wobei auch der Fall eintreten kann, dass gar kein Weg zum Ziel führt oder es gar keine Hindernisse auf der Karte gibt.
Der Sieger ist die Funktion, die für alle Karten zusammengerechnet am wenigsten Zeit benötigt hat.

Erlaubte Programmiersprachen sind B3D und B+ (BMax kann ich leider nicht testen).

Der Contest dauert bis zum 31. August 23:59, ihr habt also ziemlich genau einen Monat Zeit.

Dem Gewinner winkt unter anderem der Titel "King of Pathfinding 2008" und die Ehre, den nächsten Contest zu eröffnen, sofern er dies wünscht.

Viel Erfolg!

Edit: Was ich noch vergass zu erwähnen: Ihr dürft selbstverständlich globale Variablen, zusätzliche Arrays und Types benutzen, wenn ihr wollt.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
  • Zuletzt bearbeitet von Noobody am Di, Sep 02, 2008 8:17, insgesamt 3-mal bearbeitet

TimBo

BeitragSa, Aug 02, 2008 0:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ich habe mal eine Frage....

wenn ich eine map habe

s 1
0 0

s=start

kann dann der Spieler schräg nach unten gehen, oder muss der erst runter und dann rechts gehen.

Ich habe mich noch nie mir Pathfinding beschäftigt XD

Viele Grüße
TimBo
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

Noobody

BeitragSa, Aug 02, 2008 0:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Selbstverständlich kann er das - er könnte sogar noch bei einer Konstellation von Code: [AUSKLAPPEN]
S 1
1 0

noch schräg rechts runter gehen - Bedingung ist einfach, das der Pfad nirgends durch eine Wand hindurchführt oder in einer endet.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

TimBo

BeitragSa, Aug 02, 2008 0:30
Antworten mit Zitat
Benutzer-Profile anzeigen
ok Danke ^^
ich werde versuchen eine Funktionale Funktion zu schreiben,
aber ich denke nicht, das sie sonderlich schnell sein wird XD
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.
 

Dreamora

BeitragSa, Aug 02, 2008 0:31
Antworten mit Zitat
Benutzer-Profile anzeigen
naja in einem normalen pfadfinde code wäre das eine massive wand da man nicht über ein feld ins 0 gelangen kann denn alle relevanten pfade sind blockiert. Liegt daran, dass wenn wir es mit einer tile map zu tun hätten und einer spielfigur, so könnte die da nicht durchs "nichts" durchgehen um an den wänden vorbei zu kommen.


diagonal is normalerweise nur dann eine interpolationslösung wenn

01
00

ist, dann könnte man diagonal gehen.

danke für die detailiertere Spezifikation Smile
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Eingeproggt

BeitragSa, Aug 02, 2008 0:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Auch wenn ich ehrlich gesagt grad nicht an eine Teilnahme denke (Ich kenne nur A* und den würde wohl irgendwer außer mir auch hier abgeben^^) hätt ich da mal ne Frage bezüglich den Aufgabenstellungen, die nicht möglich sind (Endpunkt liegt in einer Wand):

Was soll die Funktion dann tun? So nah wie möglich drangehen oder einen "Fehler-String" ausgeben?

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Noobody

BeitragSa, Aug 02, 2008 0:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ein Weg gar nicht möglich ist (ein Endpunkt in der Wand gehört auch dazu), wird ein leerer String (also "") erwartet (und ich dachte, ich hätte im ersten Post bereits alles erklärt, was es zu erklären gibt Smile ).

Auch wenn der A* vermutlich mehrmals kommt, ist das doch kein Grund zur nicht-Teilnahme; schliesslich kommt es ja auf die Implementation an, die sehr unterschiedlich sein kann.
Ich sähe gern ein paar Teilnehmer hier, also kann ich dich nur ermutigen!
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

Dreamora

BeitragSa, Aug 02, 2008 1:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Gibt es eine Einschränkung bezüglich der benutzten Programmiersprache?
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Noobody

BeitragSa, Aug 02, 2008 9:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Erlaubt sind B3D und B+.

(ich editier das neue Zeug noch in den ersten Post rein)
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

Ava

Gast

BeitragSa, Aug 02, 2008 10:10
Antworten mit Zitat
Zitat:
Erlaubt sind B3D und B+


Na klasse ... da kommt mal nen Contest, der mir gefällt ... und dann sowas Confused
*Contest-Code in die Tonne klopp* Evil or Very Mad

Noobody

BeitragSa, Aug 02, 2008 10:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem ist eben, dass ich BMax - Codes nicht testen kann.
Dazu müsste sich jemand anderes melden, der nicht teilnimmt; nur wäre das dann eben auf einem anderen PC unter anderen Bedingungen etc.
Ausserdem, selbst wenn ich mir die BMax - Demo runterladen würde, ich habe keine Ahnung von BMax und könnte vermutlich auch kein entsprechendes Testbett schreiben...
Wenn mir allerdings jemand dabei helfen würde, wäre eine Teilnahme von BMax sogar noch möglich.

Ich hoffe, ich stosse hier niemanden vor den Kopf, wenn ich BMax auch noch zulasse - das ganze Hin und Her mit den erlaubten Programmiersprachen ist leider meine Schuld, weil ich beim Verfassen des ersten Posts nicht daran gedacht hatte.
Das heisst, alle Blitzvarianten sind jetzt erlaubt (mehr Verwirrung kann ich jetzt kaum noch stiften *gg*).
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Firstdeathmaker

BeitragSa, Aug 02, 2008 12:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Werd mal schauen, warscheinlich werd ich teilnehmen, aber in BBasic. Bin grad recht fit in Pathfinding.

Was die Algorithmen angeht: Klar ist ja, dass viele A* benutzen werden. Aber wie Noobody schon gesagt hat, die Implementierung zählt. Beim Sudoku Contest war die Lösungsstrategie auch bekannt, und trotzdem waren die Lösungen unterschiedlich schnell.
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Smily

BeitragSa, Aug 02, 2008 13:08
Antworten mit Zitat
Benutzer-Profile anzeigen
ich könnte mit bmax testen.

cu,
Smily0412
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

maximilian

BeitragSa, Aug 02, 2008 13:53
Antworten mit Zitat
Benutzer-Profile anzeigen
BMax auch zu erlauben wäre sehr fragwürdig, weil der BMax-Compiler schon aus dem Stand heraus DEUTLICH (!) schneller ist als BB.

Wenn überhaupt, müsste man 2 seperate Wettbewerbe machen: Einen mit BB und einen mit BMax.
Variety is the spice of life. One day ignore people, next day annoy them.

Noobody

BeitragSa, Aug 02, 2008 23:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, daran habe ich gar nicht gedacht - wie gesagt kenne ich mich mit BMax überhaupt nicht aus und dachte, es sei einfach B2D für alle Plattformen plus OO und erweiterte 2D - Funktionen.
Wenn der BMax - Compiler wirklich sehr viel leistungsstärkere Codes kompiliert, müsste man sich tatsächlich noch etwas einfallen lassen.

Eine Teilung des Wettbewerbs halte ich daher auch für sinnvoll; ich hoffe nur, dass genug Leute von beiden Sprachen teilnehmen.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

StepTiger

BeitragSo, Aug 03, 2008 1:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn die Arrays variabel sind, sollte dann nicht die Größe des Arrays gegeben sein? (Natürlich kann ich das auch überlesen)

Bei mir persönlich ist es so, dass B3D einen MAV anzeigt, sollte ich auf eine nicht vorhandene Arrayposition zurückgreifen wollen.
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

Matthias

BeitragSo, Aug 03, 2008 8:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hay. Das nenne ich jetzt mal wirklich sinvoll. Es gibt genug spielideen bei dennen ein Pfadfinding nötig ist.

Allerdings hätte ich da noch ein paar fragen wie groß soll das Map sein.
Zb wenn ich ein Map wähle das nur 30x30px groß ist, ist das Pfadfinding bedeutend schneller als bei einen 500x500px großen map.

Wird der Code der Algemeinheit zugänglich gemacht. Also sprich hier im Forum gepostet.
Auch spielt es eine Rolle wie das Map aussieht. Wenn ich zb auf einen 30x30px großen Map nur
5Hindernisse habe gehts schneller als wären es 100 Hindernisse.

BladeRunner

Moderator

BeitragSo, Aug 03, 2008 13:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Da alle Copdes mit identischen Testmaps getestet werden ist es ja irrelevant. Und der Contest wäre keiner wenn du nicht den Code offenlegen müsstest Wink
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

DAK

BeitragSo, Aug 03, 2008 14:55
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hoffe wohl, dass zumindest der code vom sieger nach dem contest veröffentlicht wird, da der contest so dann auch denen, die nicht mit machen was bringt... Und einen guten pathfinding-algo kann jeder brauchen.
Gewinner der 6. und der 68. BlitzCodeCompo

BladeRunner

Moderator

BeitragSo, Aug 03, 2008 14:58
Antworten mit Zitat
Benutzer-Profile anzeigen
DAK, im Codearchiv gibt es schon einige gute A-Star-Implementationen - und das für jeden BlitzDialekt.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht Sonstiges Projekte

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group