Testfälle 4.5

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.

Testfälle 4.5
Da ich mir fast sicher bin, dass meine closestPointHelper und closestPoint Methoden richtig funktionieren hab ich ein paar Tests für diese geschrieben.
Meine closestPair will leider noch nicht so, wie sie soll…

ClosestPairTester
feedback wäre nett :slight_smile:

1 Like

All pass (sofern deine vorgerechneten Ergebnisse stimmen).

Eine Rechnung stimmt aber nicht.
Deine dritte Ausgabe bzw. dein dritter Test. Der Abstand zwischen den Punkten (7|8) und (5,6) beträgt nicht 2, sondern 2.82…

Danke für den Test.


Meinst du den pd punkt, welchen ich da reingebe ?
Da habe ich einfach willkürlich einen Wert reingeschrieben, nur um zu testen, falls pd schon der kleinste ist der nicht doch überspeichert wird.
Denn aus der Liste ist der Punkt (8|7.5) näher an (7|8) als (5|6) oder ?


Achso, wenn du das willkürlich gemacht hast, ok.
Aber dann solltest du möglichst weit entfernte Punkte einsetzen, damit du da keinen Punkt erwischst, der doch näher dran wäre.

Du könntest das so verbessern:

System.out.println(((Arrays.toString(ClosestPair.closestPointHelper(new double [] {7,8},new double [] {5,6,[b]ClosestPair.distance(new double [] {7,8}, new double [] {5,6})[/b]},ps3)).equals("[8.0, 7.5, 1.118033988749895]")) ? "pass" : "fail"));   

Das macht den Programmtext aber nicht wirklich übersichtlicher.


darf der code der hochgeladen wird eine veraenderte main besitzen?
zur korrekten ueberpruefung des gesamten codes ist es ja zwindgend notwendig die main zu veraendern… :wink:


Die main()-Methode wird von den EST-Tests immer ignoriert, sofern sie kompiliert.


Ja, wir raten aber dringend dazu, nochmal mit der offiziellen main-Methode zu testen.


Hier eine um den Ratschlag des meisterT und einen Test auf closestPair erweiterte Testklasse,
wobei ich mir bei meiner Methode keineswegs sicher bin (!) und deshalb auf eure Ergebnisse gespannt bin!

https://dl.dropboxusercontent.com/u/42537720/ClosestPairTester.java

BTW / OFFTOPIC:
Ists Absicht, dass die Forenzeit nicht umgestellt wurde, und ist das auch bei den AUD-Servern so ? =D

1 Like

Hier gings zwar um die Zeit der anderen Jahreshälfte, die Lösung ist dennoch die selbe. :wink:


@mo19waho: bei closestPointHelper und closestPoint kommt bei mir das gleiche raus, bei closestPair jedoch nicht…allerdings hab ich closestPair auch noch nicht :slight_smile:


Das Problem bei dem closestPairTester ist doch, dass wenn mehrere Punktepaare die gleiche minimale Distanz haben, es egal ist welche man ausgibt. Dh. es kann sein dass der Code richtig ist, aber weil nicht das gleiche Punktepaar zurückgegeben wird, zeigt der Test ein fail an. Oder täusche ich mich?


Läuft bei mir alles mit “pass” durch, ist aber auch kein wunder hab ja auch die ps Arrays angelegt :smiley:
Ich denk mal da hast du recht, dass wohl das am letzten nahe Punktepaar ausgegeben wird ist meiner nach die naheliegendste Ausgabe.


Dann müsste, aber trotzdem bei allen die distance jeweils richtig drinstehen (?!):

System.out.println(“closestPair Test: // CAUTION: BETA! 0.2”);
System.out.println(ClosestPair.closestPair(ps5)[4] == 0.7071067811865476 ? “pass” : “fail”);
System.out.println(ClosestPair.closestPair(ps6)[4] == 1.4142135623730951 ? “pass” : “fail”);//0.7071067811865476
System.out.println(ClosestPair.closestPair(ps3)[4] == 0.7071067811865476 ? “pass” : “fail”);
System.out.println(ClosestPair.closestPair(ps4)[4] == 2.0027353794248506 ? “pass” : “fail”);
System.out.println(ClosestPair.closestPair(ps2)[4] == 1.4142135623730951 ? “pass” : “fail”);
System.out.println(ClosestPair.closestPair(ps)[4] == 1.4142135623730951 ? “pass” : “fail”);


Ja klar, dennoch würde es ja aber dann nicht unbedingt ein “pass” geben sondern ein “fail”.


Nein, mo19waho hat schon recht.
Sollten zufaelligerweise zwei verschiedene Paare dieselbe euklidische Distanz haben, so sind beide valide Rueckgabewerte (nach Aufgabenspezifikation). Da in der TestClass nur jeweils die Distanz verglichen wird, nicht aber die einzelnen Punkte, ergibt sich kein ‘fail’, falls unterschiedliche Paare (derselben Distanz) zurueckgegeben werden (Ausgehend davon, dass deren Distanz die Minimale im Array ist :p)

E: uebrigens danke fuer die Tests


Ja stimmt, ich sollte genauer lesen …


Guten Abend,

herzlichen Dank für die Testfälle!

Bis auf die closestPair Test: läuft alles mit pass durch. (Ein testfall auch mit pass, der rest leider mit fail)

Ich habe die Distanzen mal angeschaut und dort herausgefunden, dass diese immer gleich den Distanzen sind, welche in den Testfällen angegeben sind, jedoch werden bei mir andere Punkte ausgegeben. d.h. meine Implementation sollte dann auch richtig sein, oder?


Solange die Distanz der Punkte gleich ist, wuerde ich behaupten, dass deine Implementation stimmt (keine Gewaehr).


Damit habe ich überall pass, aber was soll der kommentierte Wert bei Zeile 3?
Vielen Dank für die Testfälle ! :smiley: