คุณสอนชั้นเรียนของนักเรียนที่มีความชอบที่น่าสนใจสำหรับวิธีการจัดเก้าอี้ของพวกเขา มีข้อกำหนดเฉพาะ 3 ข้อที่พวกเขามีสำหรับวิธีการจัดเก้าอี้:
พวกเขาส่วนใหญ่จะถูกจัดเรียงในรูปสี่เหลี่ยมผืนผ้าแม้ว่ามันจะหมายความว่าเก้าอี้บางตัวว่างเปล่า
จะต้องมีเก้าอี้ว่างน้อยที่สุดเท่าที่จะทำได้
พวกเขาจะต้องเป็น "squarey" ที่สุด Squarey-ness พิจารณาจากระยะห่างระหว่างความกว้างและความสูงของสี่เหลี่ยมผืนผ้าต่ำกว่าดีกว่า ตัวอย่างเช่นสี่เหลี่ยมผืนผ้าที่มีสี่เหลี่ยมจัตุรัสเป็น
4x7
3
จะมีความเฉพาะเจาะจงมากขึ้น "คะแนน" ของข้อตกลงคือระยะห่างระหว่างความกว้างและความสูงบวกกับจำนวนเก้าอี้ที่ว่างเปล่า
ลองยกตัวอย่าง สมมติว่าคุณมีนักเรียน 13 คน คุณสามารถจัดเก้าอี้ด้วยวิธีใดวิธีหนึ่งต่อไปนี้:
1x13
2x7
3x5
4x4
1x13
ไม่กว้างมาก อันที่จริง 1 และ 13 อยู่ห่างกัน 12 เราจึงให้ข้อตกลงนี้ 12 คะแนน นอกจากนี้ยังมีเก้าอี้ว่าง 0 ตัวดังนั้นเราจึงเพิ่ม 0 คะแนนทำให้ข้อตกลงนี้มีคะแนน 12 ไม่ดีเท่าไหร่
2x7
ดีกว่าอย่างแน่นอน 2 และ 7 อยู่ห่างกันเพียง 5 เราจึงให้ข้อตกลงนี้ 5 คะแนน อย่างไรก็ตามถ้าคุณจัดเก้าอี้สองแถวเจ็ดแถวจริง ๆ จะใช้เก้าอี้ 14 อันหมายความว่าเก้าอี้หนึ่งอันจะว่างเปล่า ดังนั้นเราจึงเพิ่มหนึ่งจุดโดยให้ข้อตกลงนี้มีคะแนน 6
เราทำได้เช่น3x5
กัน 3 และ 5 อยู่ห่างกัน 2 จุดดังนั้นจึงมีคะแนน 2 ใช้เวลา 15 เก้าอี้หมายความว่าเรามีเก้าอี้สองตัวเพิ่มอีก +2 คะแนนสำหรับคะแนน 4
ตัวเลือกสุดท้าย, 4x4
. 4 และ 4 อยู่ห่างกัน 0 เราจึงให้ +0 คะแนนนี้ 4x4 ใช้เก้าอี้ 16 ตัวดังนั้นเก้าอี้ 3 ตัวจึงว่างเปล่ารวมเป็น 3 คะแนนนี่เป็นทางออกที่ดีที่สุด
ในกรณีที่เน็คไททางออกที่ดีที่สุดคือตัวที่มีเก้าอี้ว่างน้อย
ความท้าทาย
คุณต้องเขียนโปรแกรมหรือฟังก์ชั่นที่ใช้จำนวนเต็มและจัดเรียงเก้าอี้ที่เหมาะสมสำหรับนักเรียนจำนวนนั้น IO สามารถอยู่ในรูปแบบที่สมเหตุสมผล นี่คือตัวอย่างผลลัพธ์สำหรับนักเรียนจำนวนใดก็ได้ตั้งแต่ 1 ถึง 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)
ตามปกตินี่คือ code-golf ดังนั้นจึงใช้ช่องโหว่มาตรฐานและผู้ชนะคือคำตอบที่สั้นที่สุดในหน่วยไบต์