Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von [email protected]
Thema: Implementieren eines CDMA-Verfahren in C#
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Dies ist eine Prüfungaufgabe an einer Hochschule -- wenn Lösungen aus dem Internet kopiert werden, wird es als Plagiat gewertet. Ich sag' ja nur ...

Wir stellen übrigens einen Satz von Übungsaufgaben zur Verfügung, die man ohne Risiko und in aller Ruhe lösen kann, die Lösungen werden dann von uns bewertet und Hinweise zur Verbesserung gegeben. Vor Bearbeitung der Prüfungsaufgabe empfiehlt es sich, diese Übungsaufgaben zu bearbeiten.

- thomas

Thema: Labyrinth mit der Breitensuche lösen
Am im Forum: Rund um die Programmierung

Ja klar, Fragen stellen ist natürlich OK. Dann Sorry, das habe ich wohl zu drastisch formuliert.
Dennoch sollte sich niemand von anderen die Aufgabe lösen lassen, wenn's irgendwie geht. :-)
Damit betrügt man sich am Ende doch nur selbst und hat nichts davon.



- thomas

Thema: Labyrinth mit der Breitensuche lösen
Am im Forum: Rund um die Programmierung

Witzig, das ist meine Aufgabe, die es ins Internet geschafft hat.

Gut, ich kann beruhigt sein, die "Lösung" von oben ist höchstens ein Beispiel wie man es nicht machen sollte (allein die Strings und Stringarrays ??? Was zum Geier?)
Das einzig gute an der Lösung ist, dass sie in allen vier Richtungen irgendwas macht, immerhin.
Die Visualisierung ist gelungen, das kann ich auch noch positiv vermerken.

Ich glaube, Gizmo wie auch viele andere, die diese Aufgabe problematisch fanden, haben eine Sache nicht verstanden:

Auf dem Blatt steht ein wichtiger Satz wie:

"Fall ein Item gefunden wurde ist die Breitensuche fertig und bricht ab"

und den überlesen entweder viele, oder sie ignorieren ihn oder sie gehen mit völlig falschen Annahmen an die Sache ran. Oder ich habe die Aufgabe mistig formuliert, ist auch möglich (falls dann jemand einen Hinweis hat, wie es besser geht, nur zu !).
Die Schleife von oben bricht zumindest nicht ab sobald ein Item gefunden wird.

Man soll das Labyrinth nämlich schrittweise abarbeiten, d.h. ich suche das erste Item, laufe da hin.
Von dort aus suche ich das nächste item, laufe da hin. Dann suche ich das übernächste und laufe da hin. Usw., bis das Labyrinth irgendwann leer gefressen ist.

Die falsche Annahme, von der einige hier ausgingen, auch gizzmo vermutlich, ist dass man das Labyrinth auf einmal in einem Schritt mit einer einzigen Suche, einem Baum whatever leersuchen muss. Das geht natürlich nicht! Wer's trotzdem so lösen konnte, und das Labyrinth wurde fix geleert, kein Feld doppelt betreten oder so, Glückwunsch, vermutlich haben Sie gerade das Traveling Salesman Problem in polynomialer Zeit gelöst! (ist Quatsch, das wird nicht gelingen)

Insofern ist auch der Satz

Zitat
Denn wenn es zwei verschiedene Wege gibt vom Start zu einem Punkt X gibt, reicht es nicht von Punkt X aus gemeinsam weiterzusuchen, sondern man muss für jeden Weg, der zu X führt separat weitersuchen (zumindest wenn die Menge der auf beiden Wegen gefressenen Futterstücke sich unterscheidet).

irreführend. Darum geht's hier doch gar nicht (stand auch übrigens mit keinem Wort auf dem Blatt)

Schrittweise ist's aber überhaupt kein Problem: solange noch mind. ein Item im Labyrinth liegt, findet die Breitensuche das Item. Sie findet zudem immer das nächste Item zum Player (was natürlich je nach Situation mehrere sein könnten, dann wird aber einfach das erste in der Queue genommen, bzw. die Suche bricht ja schon ab, sobald auch nur E I N Item gefunden wurde).

Ansonsten, die Aufgabe mit einer Queue, einer Hashtable und einem Stack zu lösen war ein Vorschlag, wie es einigermaßen Brainless geht. Kann man auch variieren, z.B. statt der Hashtable Pointer verwenden.

Und noch was: ab jetzt werde ich höllisch aufpassen was hier passiert und wenn ich eine Lösung der Aufgabe bekomme, die aus dem Internet stammt, ist sie ungültig.

- thomas