Anda mengajar kelas siswa dengan preferensi menarik tentang bagaimana kursi mereka diatur. Ada 3 persyaratan sangat spesifik yang mereka miliki untuk mengatur kursi:
Mereka paling diatur dalam persegi panjang, bahkan jika itu berarti beberapa kursi kosong.
Harus ada kursi kosong sesedikit mungkin.
Mereka harus selebar mungkin. Kuadrat ditentukan oleh jarak antara lebar dan tinggi persegi panjang, lebih rendah lebih baik. Sebagai contoh, sebuah persegi panjang yang
4x7
memiliki segi 3 dari 3.
Untuk lebih spesifik, "skor" dari suatu pengaturan adalah jarak antara lebar dan tinggi ditambah jumlah kursi yang akan kosong.
Mari kita ambil contoh. Katakanlah Anda memiliki 13 siswa. Anda dapat mengatur kursi dengan salah satu dari cara berikut:
1x13
2x7
3x5
4x4
1x13
tidak terlalu persegi. Faktanya, 1 dan 13 terpisah 12, jadi kami memberikan pengaturan ini 12 poin. Ini juga memiliki 0 kursi kosong, jadi kami menambahkan 0 poin, memberikan skor 12. pengaturan ini tidak terlalu bagus.
2x7
tentu lebih baik. 2 dan 7 hanya 5 terpisah, jadi kami memberikan pengaturan ini 5 poin. Namun, jika Anda benar-benar mengatur 2 baris tujuh kursi, itu akan membutuhkan 14 kursi, artinya satu kursi akan kosong. Jadi kami menambahkan satu poin, memberikan pengaturan ini skor 6.
Kita juga bisa melakukannya 3x5
. 3 dan 5 terpisah 2, jadi +2 poin. Dibutuhkan 15 kursi, artinya kita akan memiliki dua kursi tambahan, jadi +2 poin lagi, untuk skor 4.
Opsi terakhir 4x4
,. 4 dan 4 terpisah 0, jadi kami memberikan ini +0 poin. 4x4 membutuhkan 16 kursi, jadi 3 kursi kosong, dengan skor total 3. Ini adalah solusi optimal.
Dalam kasus dasi, solusi optimal adalah dengan kursi yang kurang kosong.
Tantangan
Anda harus menulis program atau fungsi yang membutuhkan bilangan bulat dan menampilkan pengaturan kursi yang optimal untuk jumlah siswa tersebut. IO dapat dalam format apa pun yang masuk akal. Berikut adalah contoh output untuk sejumlah siswa dari 1 hingga 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)
Seperti biasa, ini adalah kode-golf, sehingga celah standar berlaku, dan pemenangnya adalah jawaban terpendek dalam byte.