#1
28.02.2018 um 08:04 UhrIch habe noch ein Fehler in meinem Code entdeckt: Für Werte in der ersten Spalte werden falsche Zeilen- und Spaltennummer ermittelt.
Die Methode FindIndexInDiagonalSchema müsste so aussehen:
C#-Code
Die Methode FindIndexInDiagonalSchema müsste so aussehen:
static void FindIndexInDiagonalSchema(ulong l, out ulong row, out ulong column)
{
double sqrt = -0.5 + Math.Sqrt(0.25 + 2 * l);
double truncate = Math.Truncate(sqrt);
double d = truncate;//Math.Truncate(sqrt);
ulong step = (ulong)d + 1;
ulong v = (step * step + step) / 2;//Gausssche Summenformel
while (v <= l)
{
v += ++step;
}
if (truncate == sqrt)
{
row = step - 2;
column = 0;
}
else
{
row = l - (v - step + 1);
column = step - (row + 1);
}
}