Funktion für kompakte Anordnung von 2D-Kacheln
-
Hi!
Ich suche eine Funktion die mir anhand der Anzahl von Kacheln n die nötige Anzahl von Reihen r und Spalten s (und leere Kacheln l) zurückgibt die mindestens nötig sind um die Kacheln (in einer 2D-Anordnung) unterzubringen. Dabei ist l < r <= s.
Beispiele:
n=1 -> r=1, s=1, l=0
n=2 -> r=2, s=1, l=0
n=3 -> r=2, s=2, l=1
n=4 -> r=2, s=2, l=0
...
n=10 -> r=4, s=3, l=2
...
n=36 -> r=6, s=6, l=0
n=37 -> r=7, s=6, l=5l ergibt sich aus n, r und s als l=r*s-n
Wie komme ich an r und s ran? Da steckt garantiert eine symmetrie drin, die ich nicht sehe.
-
Durch rumprobieren mit google spreadsheat bin ich auf
r=CEILING(sqrt(n))
und
s=ROUND(sqrt(n))gekommen. Also aufrunden und runden. Weis nicht ob das für alle n passt, bis n=37 stimmt es jedenfalls.
-
Was die Bedeutung der Quadratwurzel ist, weißt du? Falls ja, dann ist das Auftreten der Rundung einfach die Manifestation der Tatsache, dass du erst die r-te Reihe voll machst, bevor du mit der s-ten Spalte beginnst. Da die r-te Reihe und die s-te Spalte die gleiche Anzahl Elemente besitzen (plus eines, wo sie sich treffen), ist dieser Übergang genau dann, wenn die rs-Schicht der Anordnung halb voll ist.
Falls du die Bedeutung der Quadratwurzel nicht weißt, muss ich wesentlich weiter ausholen.
-
Danke für die Antwort!
Habe versucht, dass geometrisch mal nachzuvollziehen:
Die Quadratwurzel einer Zahl liefert mir die Kantenlänge eines Quadrates.
-> r=sqrt(n)
-> s=sqrt(n)
Ist r (und s) nicht ganzzahlig, so muss ich r Aufrunden, da ich dann eine "angebrochene" Reihe habe.
-> r=CEILING(sqrt(n))Das Runden für s verstehe ich so:
"Das Runden von s ist die Korrektur von s für das Aufrunden von r".
Intuitiv hätte ich erstmal gesagt, dass s abgerundet werden muss, woran man erkennt, dass ich nicht ganz verstanden habe wieso s gerundet werden muss.Werde nochmal hier vorbeischauen, falls du (oder wer anders) noch Lust hat das näher (geometrisch?) zu erklären.
-
Was ist denn dein mathematischer Hintergrund, bzw. wie alt bist du? Ich bin nicht kein Mathelehrer, daher würde es mir schwer fallen, eine didaktisch gekonnte Erklärung für so etwas wie die Wurzel zu geben. Ich kann's versuchen, aber es wäre vermutlich nicht verständlich. So viel Selbsteinsicht habe ich