Sandalyelerinin nasıl düzenlendiği konusunda ilginç tercihlere sahip bir sınıf öğrencisine öğretiyorsunuz. Sandalyelerin nasıl düzenlendiğine ilişkin 3 çok özel gereksinim vardır:
Bazı sandalyeler boş olsa bile, çoğu dikdörtgen şeklinde düzenlenmiştir.
Mümkün olduğunca az boş sandalye bulunmalıdır.
Mümkün olduğunca "kare" olmalıdırlar. Kareliklik, dikdörtgenin genişliği ve yüksekliği arasındaki mesafe ile belirlenir, daha düşüktür. Örneğin, kare kare
4x7
3'tür.
Daha açık olmak gerekirse, bir düzenlemenin "puanı", genişlik ve yükseklik artı boş olacak sandalye sayısı arasındaki mesafedir.
Bir örnek verelim. Diyelim ki 13 öğrenciniz var. Sandalyeleri şu yollardan herhangi biriyle düzenleyebilirsiniz:
1x13
2x7
3x5
4x4
1x13
çok kare değil. Aslında, 1 ve 13 birbirinden 12'dir; Ayrıca 0 boş sandalye var, bu yüzden bu düzenlemeye 12 puan vererek 0 puan ekliyoruz.
2x7
kesinlikle daha iyi. 2 ve 7 aralarında sadece 5 tane var, bu yüzden bu düzenlemeye 5 puan veriyoruz. Bununla birlikte, aslında yedi sandalyeden oluşan 2 sıra ayarladıysanız, bu 14 sandalye alacaktır, yani bir sandalye boş olacaktır. Bu nedenle, bu düzenlemeye 6 puan vererek bir puan ekliyoruz.
Biz de yapabiliriz 3x5
. 3 ve 5 ayrı 2, yani +2 puan. 15 sandalye gerekiyor, yani iki ekstra sandalyemiz olacak, yani 4 puan için başka bir +2 puan.
Son seçenek 4x4
,. 4 ve 4 birbirinden ayrı, bu yüzden +0 puan veriyoruz. 4x4 16 sandalye alır, bu nedenle 3 sandalye toplam 3 puan için boşalır. Bu en uygun çözümdür.
Beraberlik durumunda, en uygun çözüm daha az boş sandalyeye sahip çözümdür.
Meydan okuma
Bir tamsayı alan ve bu sayıda öğrenci için en uygun koltuk düzenini sağlayan bir program veya işlev yazmalısınız. ES herhangi bir makul biçimde olabilir. 1'den 100'e kadar herhangi bir sayıda öğrenci için örnek çıktı:
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)
Her zamanki gibi, bu kod golf, bu yüzden standart boşluklar geçerlidir ve kazanan bayt cinsinden en kısa cevaptır.