Schnelle Frage:Warum bekomme ich zwei verschiedene Ergebnisse für das gleiche Design?
Ich habe ein Bündel (Wolke) von Koordinaten und ich neige dazu, die vier Eckkoordinaten des ganzen Bündels zu finden. Und Ecke meine ich:
MyDesiredResult = {SmallestX, BiggestY, BiggestX, SmallestY}
Ich benutze diese Old Routine meine Werte zu erhalten und es ist die richtige:
double smallestX = MyCloud[0].X; // assing X of first element to my result controller
var tempCoordPoint = MyCloud[0]; // assign first element to my result controller
for (int i = 0; i < MyCloud.Count; i++)
{
if (smallestX > MyCloud[i].X) // find minimum X
{
smallestX = MyCloud[i].X;
tempCoordPoint = MyCloud[i];
}
}
MyResult.Add(tempCoordPoint); // add to my list
Allerdings würde ich, dass viermal (für die vier Treffer) tun müssen. So versuche ich, meinen Code zu optimieren, indem es auf diese New Routine Veränderung, die ich nur einmal verwenden:
List<CoordPoint> MySortedList = MyCloud.Select(c => new CoordPoint { X = c.X, Y = c.Y, Z = c.Z, Color = c.Color }).ToList();
MySortedList.Sort((c1, c2) => c1.X.CompareTo(c2.X)); // sort on X
var temp = MySortedList[MySortedList.Count - 1]; // hold biggest X in a temp variable
MyResult.Add(MySortedList[0]); // add smallest X to my result
MySortedList.Sort((c1, c2) => c1.Y.CompareTo(c2.Y)); ; // sort on Y
MyResult.Add(MySortedList[MySortedList.Count - 1]); // add biggest Y to my result
MyResult.Add(temp); // add biggest X to my result
MyResult.Add(MySortedList[0]); // add smallest Y to my result
Aber es gibt unterschiedliche Ergebnisse. Ich möchte eine Beispieleingabe, eine aktuelle Ausgabe und eine gewünschte Ausgabe zeigen. Ich kann die Beispieleingabe überspringen (große Last) und die Ergebnisse anzeigen. Kann mir jemand auf das hinweisen, was ich falsch mache?
Für den gleichen Eingang:
Ergebnis aus Alt Routine:
(0, 4), (15, 12), (23, 6), (19, 0)
Ergebnis aus New Routine:
(0, 4), (18, 12), (23, 6), (18, 0)
Sie haben angegeben, dass zwei verschiedene Code-Snippets zu unterschiedlichen Ergebnissen führen, jedoch nichts über die korrekten Ergebnisse aussagen. – Servy
@Servy tat ich. Siehe vorher den Ergebnisteil "_P.S Die alte Routine ist die richtige! _". Und die neue Routine sollte nicht zu anderen Ergebnissen führen! Das ist das Problem. –
Die grundlegende Prämisse Ihrer Frage sollte nicht in einem Post-Skript sein. – Servy