Zentriert und gut gerastert

Beim Umbau meiner Fotogalerie fiel mir ein mathematisch interessanter Aspekt der Anordnung gleich großer Bilder ins Auge. Wie Buchstaben im Fließtext stehen die Vorschaubilder auf den Galerieseiten eines nach dem anderen und rutschen in die nächste Zeile, wenn eine Zeile voll ist. Außerdem ist eingestellt, dass sie zentriert ausgerichtet werden. So ergibt sich immer eines der folgenden Szenarien.

Erster Fall: Die Bilder füllen genau eine bestimmte Zahl von Zeilen und bilden dabei ein rechtwinkliges Raster aus Zeilen und Spalten. Schön!

xxx
xxx
xxx

Fallbeispiel 1

Zweiter Fall: Es sind so wenige Bilder, dass keine Zeile ganz gefüllt wird. Es ist ein einfaches, aber trotzdem einheitliches „Raster“. Schön!

xx

Fallbeispiel 2

Dritter Fall: Die letzte Zeile ist zwar nicht komplett gefüllt, aber das oder die Bilder darin passen trotzdem genau ins Raster der Zeilen darüber. Schön!

xxx
xxx
x

Fallbeispiel 3

Vierter Fall: Die letzte Zeile ist nicht komplett gefüllt und das oder die Bilder darin sind gegenüber dem Raster der anderen Zeilen um eine halbe Bildbreite verschoben. Zwingt man die Bilder ins Raster, sind sie nicht mehr zentriert. Das ist nicht schön.

xxx
xxx
xx

Fallbeispiel 4

Wie lässt sich der vierte Fall trotz begrenztem Einfluss auf die Anzahl der Bilder je Zeile (Webseiten werden auf ganz unterschiedlich großen Monitoren vom kleinen Smartfon bis zum Wandbildschirm betrachtet) vermeiden? Bevor wir zu Antworten kommen, verleihe ich den beteiligten Zahlen Symbole und fange ihre Beziehungen mit einer Formel ein:

Taufe und Formel

Die Zeilenbreite, also wie viele Bilder in einer Zeile Platz hätten, heiße $b$. Die Anzahl der mit Bildern tatsächlich voll gefüllten Zeilen heiße $a$ und die Anzahl der restlichen Bilder $r$. Nennen wir zu guter Letzt die Gesamtzahl der Bilder $n$.

Illustration der Variablen a, b, r

$a,b,n,r$ sind allesamt ganze Zahlen mit $n>0$ und $a\geq 0$ und $r\geq 0$ und $b>r$ und es gilt die Formel:

$$n=a\cdot b+r$$

Kriterien der schönen Rasterung

Den ersten Fall eines schönen Rasters haben wir genau dann, wenn $r=0$ ist. Den zweiten Fall eines schönen Rasters haben wir genau dann, wenn $a=0$ ist. Den dritten Fall eines schönen Rasters haben wir genau dann, wenn $a$ und $r$ größer als null sind sowie $b-r$ eine gerade Zahl ist.

Das dritte Kriterium bedarf vielleicht einer Erklärung: Da $b$ die Anzahl der Plätze je Zeile und $r$ die Zahl der vorhandenen Bilder in der unvollständigen Zeile ist, ist $b-r$ die Anzahl freier Plätze in jener Zeile. Wenn diese Zahl gerade ist, teilen sich die freien Plätze ganzzahlig auf beide Seiten der vorhandenen Bilder auf.

Wenn die Zahl der freien Plätze ungerade ist, können sie nicht ganzzahlig zu gleichen Teilen links und rechts der vorhandenen Bilder liegen. Entweder man halbiert einen freien Platz, sodass die Bilder um diese halbe Bildbreite aus dem Raster tanzen, oder man kann sie nicht richtig zentrieren.

Wer immer das Raster bewahrt

Wie sichert man sich eine schöne Rasterung? Zum Beispiel, indem man eine Zahl von Bildern zusammenstellt, die sich bei jeder Seitenbreite an ein Raster hält. Das triviale Beispiel ist $n=1$:

x

$1=1\cdot 1+0$ für $b=1$

x

$1=0\cdot b+1$ für $b>1$

Ebenso leicht sieht man, dass $n=2$ immer die Anordnung im Raster wahrt:

x
x

$2=2\cdot 1+0$ für $b=1$

xx

$2=1\cdot 2+0$ für $b=2$

xx

$2=0\cdot b+2$ für $b>2$

Die nächsten immer schönen Bilderzahlen sind $n=4$ und $n=6$, was man zum Beispiel durch Auslegen von Spielkarten leicht ausprobieren kann. Als nächste immer schön gerasterte Bilderzahl folgt $n=10$:

x
x
x
x
x
x
x
x
x
x

$10=10\cdot 1+0$ für $b=1$

xx
xx
xx
xx
xx

$10=5\cdot 2+0$ für $b=2$

xxx
xxx
xxx
x

$10=3\cdot 3+1$ für $b=3$

xxxx
xxxx
xx

$10=2\cdot 4+2$ für $b=4$

xxxxx
xxxxx

$10=2\cdot 5+0$ für $b=5$

xxxxxx
xxxx

$10=1\cdot 6+4$ für $b=6$

xxxxxxx
xxx

$10=1\cdot 7+3$ für $b=7$

xxxxxxxx
xx

$10=1\cdot 8+2$ für $b=8$

xxxxxxxxx
x

$10=1\cdot 9+1$ für $b=9$

xxxxxxxxxx

$10=1\cdot 10+0$ für $b=10$
$10=0\cdot b+10$ für $b>10$

Die letzte ihrer Art

Zehn ist die größte Bilderzahl, bei der nie Bilder aus der Spalte tanzen. Es folgt in drei Teilen ein Beweis, dass keine größere Anzahl das leistet.

Erster Teil: Bei jeder ungeraden Zahl bleibt als Rest eins, wenn man ganzzahlig durch zwei teilt. Man kann die Zahl also immer als $n=a\cdot 2+1$ darstellen. Darin ist $b-r=2-1=1$ ungerade und $r>0$ sowie für ungerade Zahlen ab drei auch $a>0$. Keines der Kriterien für eine schöne Rasterung ist damit erfüllt.

Zweiter Teil: Jede gerade Zahl lässt sich als $n=2\cdot m+0$ mit einer ganzen Zahl $m$ darstellen. Für gerade Zahlen ab vierzehn ist $m\geq 7$. Dann gelten aber auch diese Gleichungen:

$$\begin{aligned} n&=2\cdot(m-1)+2\\ n&=2\cdot(m-2)+4 \end{aligned}$$

Einmal steht $m-1$ und einmal $m-2$ für die Anzahl $b$ der Bilder je voller Zeile. Einer der Werte muss ungerade sein, doch in beiden Fällen ist der Rest $r$, zwei oder vier, gerade. So ist in einem der beiden Fälle $b-r$ ungerade und $a>0$ sowie $r>0$ und keines der Kriterien für eine schöne Rasterung erfüllt.

Dritter Teil: Für zwölf Bilder ist bei $b=5$ keines der Kriterien für eine schöne Rasterung erfüllt. Die Bilder der letzten Zeile brechen also das Raster.

xxxxx
xxxxx
xx

$12=2\cdot 5+2$

Bis zu einer gegebenen Breite

Auch wenn zehn die größte immer gut gerasterte Bilderzahl ist, kann man fragen, ob es größere Zahlen gibt, die zumindest bis zu einer beliebigen vorgegebenen Zeilenbreite $B$ stets gut gerastert sind. Ja, die gibt es. Eine einfache Antwort wäre $n=B!$, denn $B!=1\cdot 2\cdot 3\cdot\ldots\cdot(B-1)\cdot B$ hat stets den Rest $r=0$, wenn man sie durch irgend eine der Zahlen von eins bis $B$ teilt.

$B!$ wird allerdings sehr schnell sehr groß und unhandlich. So kann man stattdessen nach der kleinsten Zahl $n_{\min}(B)$ suchen, die für Zeilenbreiten von eins bis $B$ immer gut gerastert ist und dabei mindestens eine Zeile füllt. Wie findet man diese? Zum Beispiel, indem man bei eins beginnend für jede Bilderzahl $n$ durchprobiert, bis zu welcher Breite $B_{\max}(n)$ sie stets gut gerastert ist …

$n$ $B_{\max}(n)$
1
2
3 1
4
5 1
6
7 1
8 2
9 1
10
11 1
12 4
13 1
14 2
15 1
16 6
17 1
18 6
19 1
20 2
21 1
22 4
23 1
24 4
25 1
26 2
27 1
28 10
29 1
30 6
31 1
32 2
33 1
34 4
35 1
36 12
37 1
38 2
39 1
40 8

Aus dieser Tabelle können wir entnehmen, dass $n_{\min}(12)=36$ ist, denn 36 ist die kleinste Bilderzahl $n$, die mindestens 12 beträgt und bei Zeilenbreiten von 1 bis 12 immer gut gerastert ist. Übrigens geht ebenso $n_{\min}(11)=36$ aus der Tabelle hervor, denn 36 ist auch die kleinste Zahl größer oder gleich 11, bei der die Zeilenbreiten 1 bis 11 immer gut gerastert sind.

Ich habe ein Python-Programm für Bilderzahlen $n$ von 1 bis $10^{10}$ prüfen lassen, bis zu welcher Zeilenbreite sie stets gut gerastert sind, und so die folgenden Werte gefunden.

$B$ $n_{\min}(B)$
1 1
2 2
4 4
6 6
10 10
12 36
14 66
18 196
22 568
24 1008
28 1288
30 8398
32 8730
34 50688
38 124738
46 155296
56 1784476
58 11486476
60 24045750
64 37165588
70 68108038
78 1363196836
88 1865403540

Für ausgelassene $B$ entspricht $n_{\min}(B)$ dem nächst größeren aufgelisteten Wert. Für $B=25$ ist beispielsweise $n_{\min}(25)=n_{\min}(28)=1288$.

Python-Programm

record = 0
n = 0
while n < 10000000000:
	n = n + 1
	b = 1
	r = 0
	while r == 0 or b & 1 == r & 1:
		b = b + 1
		r = n % b
	if b > record:
		record = b
		print [b - 1, n]