Sie unterrichten eine Klasse von Schülern mit interessanten Präferenzen für die Anordnung ihrer Stühle. Es gibt 3 sehr spezifische Anforderungen an die Anordnung der Stühle:
Sie werden meist in einem Rechteck angeordnet, auch wenn dadurch einige Stühle leer werden.
Es müssen so wenig Stühle wie möglich frei sein.
Sie müssen so quadratisch wie möglich sein. Die Rechteckigkeit wird durch den Abstand zwischen der Breite und der Höhe des Rechtecks bestimmt, niedriger ist besser. Beispiel: Ein Rechteck
4x7hat eine Quadratzahl von 3.
Genauer gesagt ist die "Punktzahl" einer Anordnung der Abstand zwischen der Breite und der Höhe plus der Anzahl der Stühle, die leer gehen würden.
Nehmen wir ein Beispiel. Angenommen, Sie haben 13 Schüler. Sie können die Stühle folgendermaßen anordnen:
1x13
2x7
3x5
4x4
1x13ist nicht sehr quadratisch. Tatsächlich sind 1 und 13 12 voneinander entfernt, daher geben wir dieser Anordnung 12 Punkte. Es hat auch 0 leere Stühle, also addieren wir 0 Punkte, was diesem Arrangement eine Punktzahl von 12 gibt. Nicht so toll.
2x7ist sicherlich besser. 2 und 7 sind nur 5 voneinander entfernt, daher geben wir dieser Anordnung 5 Punkte. Wenn Sie jedoch zwei Reihen mit sieben Stühlen arrangieren würden, würde dies 14 Stühle einnehmen, was bedeutet, dass ein Stuhl leer wäre. Also addieren wir einen Punkt und geben diesem Arrangement eine Punktzahl von 6.
Wir könnten es auch tun 3x5. 3 und 5 sind 2 auseinander, also +2 Punkte. Es werden 15 Stühle benötigt, was bedeutet, dass wir zwei zusätzliche Stühle haben, also weitere +2 Punkte für eine Punktzahl von 4.
Letzte Option 4x4. 4 und 4 sind 0 auseinander, also geben wir diese +0 Punkte. 4x4 nimmt 16 Stühle ein, sodass 3 Stühle leer sind, was eine Gesamtpunktzahl von 3 ergibt. Dies ist die optimale Lösung.
Im Falle eines Unentschieden ist die optimale Lösung die mit weniger leeren Stühlen.
Die Herausforderung
Sie müssen ein Programm oder eine Funktion schreiben, die eine Ganzzahl annimmt und die optimale Anordnung der Lehrstühle für diese Anzahl von Schülern ausgibt. IO kann in jedem vernünftigen Format vorliegen. Hier ist eine Beispielausgabe für eine beliebige Anzahl von Schülern von 1 bis 100:
1: (1, 1)
2: (1, 2)
3: (2, 2)
4: (2, 2)
5: (2, 3)
6: (2, 3)
7: (3, 3)
8: (3, 3)
9: (3, 3)
10: (2, 5)
11: (3, 4)
12: (3, 4)
13: (4, 4)
14: (4, 4)
15: (4, 4)
16: (4, 4)
17: (3, 6)
18: (3, 6)
19: (4, 5)
20: (4, 5)
21: (3, 7)
22: (5, 5)
23: (5, 5)
24: (5, 5)
25: (5, 5)
26: (4, 7)
27: (4, 7)
28: (4, 7)
29: (5, 6)
30: (5, 6)
31: (4, 8)
32: (4, 8)
33: (6, 6)
34: (6, 6)
35: (6, 6)
36: (6, 6)
37: (5, 8)
38: (5, 8)
39: (5, 8)
40: (5, 8)
41: (6, 7)
42: (6, 7)
43: (5, 9)
44: (5, 9)
45: (5, 9)
46: (7, 7)
47: (7, 7)
48: (7, 7)
49: (7, 7)
50: (5, 10)
51: (6, 9)
52: (6, 9)
53: (6, 9)
54: (6, 9)
55: (7, 8)
56: (7, 8)
57: (6, 10)
58: (6, 10)
59: (6, 10)
60: (6, 10)
61: (8, 8)
62: (8, 8)
63: (8, 8)
64: (8, 8)
65: (6, 11)
66: (6, 11)
67: (7, 10)
68: (7, 10)
69: (7, 10)
70: (7, 10)
71: (8, 9)
72: (8, 9)
73: (7, 11)
74: (7, 11)
75: (7, 11)
76: (7, 11)
77: (7, 11)
78: (9, 9)
79: (9, 9)
80: (9, 9)
81: (9, 9)
82: (7, 12)
83: (7, 12)
84: (7, 12)
85: (8, 11)
86: (8, 11)
87: (8, 11)
88: (8, 11)
89: (9, 10)
90: (9, 10)
91: (7, 13)
92: (8, 12)
93: (8, 12)
94: (8, 12)
95: (8, 12)
96: (8, 12)
97: (10, 10)
98: (10, 10)
99: (10, 10)
100: (10, 10)
Wie üblich ist dies Codegolf, daher gelten Standardlücken, und der Gewinner ist die kürzeste Antwort in Bytes.