#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:
Die Methode FindIndexInDiagonalSchema müsste so aussehen:
C#-Code
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); } }