Closed fabianHAW closed 6 years ago
/**
stimmt, in der aufgabenstellung steht, dass der startknoten derjenige ist mit der 2¹⁶⁰ -1 und die wird nicht vergeben..dies ändert aber nichts an der tatsache, dass wir durch die "successor-methode" nun ermitteln ob wir der knoten mit der größten id sind. daher denke ich, dass wir nun in der lage sind, zu bestimmen, ob wir der knoten mit der größten id sind ;)
Mir ist gerade aufgefallen, dass ich hier leider noch einen Denkfehler hatte...
In der Aufgabenstellung steht: "Der Spieler mit dem größten Knotenschlüssel beginnt (Besitzer des Schlüssels (2^160)-1."
Ich habe das beim lesen falsch verstanden. Hierbei geht es um den Knoten, der in seinem Intervall den genannten Schlüssel enthält, somit berechnen wir den Startknoten folgendermaßen:
if((this.impl.getPredecessorID().toBigInteger().compareTo(maxNodekey) == -1) && this.impl.getID().toBigInteger().compareTo(this.impl.getPredecessorID().toBigInteger()) == -1){ System.err.println("I am (" + this.impl.getID() + ") the very first player allowed to shoot!"); }
oh jau, da ist was dran! so habe ich das auch noch nicht interpretiert ;)
allerdings ist die erste bedingung eine zuviel, da diese immer true ist. jeder predecessor ist kleiner als die maximale knotenid. die zweite bedingung hingegen ist korrekt. allerdings muss vorher noch eine weitere abfrage stattfinden. es kann sein, dass es einen knoten gibt der genau die maximale knotenid hat, dann wäre er der knoten der anfängt. d.h. ist der predecessor gleich der maxnode, ist er der der anfängt, sonst der erste knoten im ring.
ok ist nun drin..siehe kommentar https://github.com/Dutzel/TTV-Lab2/issues/4#issuecomment-352174971
funktionalität einbauen, die erkennt ob ein knoten der startknoten ist. startknoten ist definiert durch id=2¹⁶⁰ -1