Aufgabe 10.2

Halden und Sternsuche

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Aufgabe 10.2
…und ich hätte mich schon so gefreut, dass ich die Ferien frei hab…


da fragt man sich doch ob die vorurteile der stubenhockerprogrammierfreaks nicht doch vielleicht stimmt wenn man sich so die weinachtsgeschenke unseres lieben algo-teams anschaut -.-
nur so als anmerkung … ich hätte durchaus was besseres zu tun gehabt :wand: :wand:


zumindest wuenschen sie uns ja “Viel Spass und schoene feiertage” mit den neuen Uebungsblatt. Ein tolles Weihnachtsgeschenk :wink: :*)

Naja, euch das gleiche, Feiert schoen :*)


frage: ich soll ja Prioritaetsschlange implementieren…soll ich Schlangeneintrag auch implementieren???


Ja, nämlich in der Datei [m]EinStern.java[/m]:

// ...
public class Knoten implements Schlangeneintrag {
    // TODO
}
// ...

Kann jemanden diesen Pfad bestätigen? (weil is halt blöderweise ein anderes Bild als das aufm Blatt :wink: ):

##############################
##############################
######################  ######
###################### #######
#####################  #######
##################### ########
##################### ########
##################### ########
##################### ########
##################### ########
##################### ########
##################### ########
##################### ########
##################### ########
##################### ########
##################### ########
#############         ########
############  ################
####         #################
##############################

Und Wegkosten von 45?

Edit: Mit rechten Umständen hab ich das mal mit dem Aufgabenblatt überprüft und das Bild was man dort sieht entspricht einem Weg, der deutlich höhere Kosten hat.


Das Bild kann ich bestätigen. Die Kosten auch.
Wieoft bist du die Schleife durchlaufen? 442 mal? Sprich 442 Felder wurden überprüft und in die ClosedList eingetragen? Mir kommt das irgendwie etwas viel vor wenn man bedenkt dass die Karte nur 600 Felder groß ist…


Ich hab 441 Einträge in der closedList.

Ich frag mich grad, ob wir auch mit Karten zurechtkommen sollen, die nicht rechteckig sind?
Bis jetzt überprüf ich zwar im Konstruktor, ob die mir übergebene Karte rechteckig ist, aber für den Fall, das dies nicht so ist erkläre ich das Wegsuchen für ungültig.
D.h. ich aktzeptier im Moment nur rechteckige Karten.


Das ist eine berechtigte Frage… hab ich noch gar nicht drangedacht… ich probier einfach mal ob der Algorithmus damit fertig wird :wink:


Ich musste drei Stellen ändern.
Lustigerweise ist der Algorithmus jetzt kürzer wie vorher :wink:
Aber jetzt kommt er mit beliebigen Karten zurecht.
Da kann man schöne Wege erzwingen, wenn man z.B. einmal nur ein Element in einer Zeile übergibt, da muss er dann folglich ja durch. Und da geht er auch durch. Schon cool :wink:

Vielleicht mal was zum vergleichen:
Wenn ich die vierte Zeile bis auf ein einziges Element “1” komplett lösch, dann hab ich Kosten von 53 und der Weg ist der Folgende:

########ooooooooooooooo#######
##ooooooo#############oo######
##o####################o######
ooo###########################
o
o#############################
oo############################
#o############################
#o############################
#o############################
#o############################
#o############################
#o############################
#o############################
#o############################
#o############################
#o############################
#o############################
#oooo#########################
##############################

Wenn ich die vierte Zeile komlett lösch, dann erhalt ich nen negativen Wert für meine Wegkosten und kein Bild.

Wenn ich die vierte Zeile komplett gelöscht lasse, aber das Ziel auf y = 5 änder, dann erhalte ich Kosten von 40 und das folgende Bild:

##############################
##############################
##############################
##############################

#######################o######
######################oo######
#####################oo#######
#####################o########
#####################o########
#####################o########
#####################o########
#####################o########
#####################o########
#####################o########
#####################o########
#############ooooooooo########
############oo################
####ooooooooo#################
##############################

Also verkürzt hat sich bei mir eigentlich nichts… (wo auch? is ja eh kaum code da, wird ja größtenteils schon in der Halde erledigt und die ist davon ja nicht betroffen…)

Aber was bringt eine nicht-rechteckige Karte hier eigentlich? Ich mein die is ja eh nur am rechten Rand etwas ausgefranst, aber der linke Rand und oben und unten sind sie ja trotzdem „gerade“…

EDIT: Hab grad noch mal in die Aufgabenstellung geguggt… da steht „…in einer einfachen rechteckigen Karte…“
Ich entnehme dem, dass wir nicht-rechtwinklige Karten verbieten müssen…

Was anderes…
In der Aufgabe steht:

Was aber ist wenn kein Weg existiert (weil ich z.B. eine Leere Zeile in der Karte hab)? Sollen wir dann nix ausgeben oder einfach nur die ganze Karte mit ‚#‘ darstellen? Sollen wir im zweiten Fall den Startpunkt mit einem Leerzeichen markieren oder nicht?
Naja, nachdem nix dazu dasteht kann man’s wahrscheinlich wieder mal machen wie man will…

NOCH 'N EDIT: Kann die Bilder bestätigen.


Bei mir hats insofern was verkürzt, weil meine Ausnahmebehandlung, die im Konstruktor auf nicht rechteckig geprüft hat, rausfällt.

Was nicht rechteckige Karten bringen? Keine Ahnung, aber es steht nirgends, dass sie rechteckig sein muss, sondern nur, dass ein zweidimensionales Feld übergeben wird. Deswegen halt…

Wenn kein Weg existiert zeichne ich nichts. Wie gesagt, siehe oben, ich bekomm ja negative Kosten, d.h. ich weiß damit, dass keiner existiert.


Stimmt, hast recht. Hab ich echt dauernd überlesen…
Schade eigentlich :wink:


mal ne ganz blöde frage zur theorie…
sollte man den zweiten punkt von der ausgangs-halde aus bearbeiten oder nachdem man den ersten Punkt fertig hat?

mfg und schon mal happy new year


@st: das frag ich mich auch. Ich habs jetzt jeweils von der Ausgangshalde aus gemacht.


ja, ich habs auch von der Ausgangshalde aus gemacht…

jetzt aber doch nochmal ne frage zum pratkischen teil:
wenn ich das richtig verstehe, muss man ja eine Klasse Halde schreiben, die das Interface Prioritaetsschlange implementiert. Jetzt gibt es ja noch das Interface Schlangeneintrag. Und damit hab ich grad so meine Probleme. Wo soll ich das implementieren? Der Hinweis weiter vorne, dass es beim stern sein soll, hilft mir nicht wirklich weiter, da ich eigentlich zuerst teilaufgabe b fertig machen wollte um zu schauen ob das ueberhaupt funktioniert bevor ich mich an die c setze. Und ich nehme an die Halde wird ein Feld, das so aufgebaut ist wie’s in der Vorlesung gesagt wurde, dass also die Nachfolger i2 und i2+1 sind?
Irgendwie steh ich auf dem Schlauch… :frowning:


Ich hab die Halde zumindest so implementiert…

Wenn du nen Schlangeneintrag zum Testen brauchst, ich hab mal für Tests einen ganz billigen zusammengeschustert, der arbeitet mit Integers…
http://wwwcip.informatik.uni-erlangen.de/~siliwoit

Ach ja, die Theorie hab ich auch jedesmal von der AUsgangshalde aus gemacht.


Ja, hab ich auch so gemacht.
Um deine Halde zu testen empfehle ich dir den Test von liwo!


lieben dank, ich versuch das mal