मुझे न्यूयॉर्क टाइम्स के इस ग्राफिक के डिजाइन से इंटिग्रेट किया गया था, जिसमें प्रत्येक अमेरिकी राज्य को एक ग्रिड में एक वर्ग द्वारा दर्शाया गया है। मुझे आश्चर्य हुआ कि क्या उन्होंने वर्गों को हाथ से रखा था या वास्तव में वर्गों के अनुकूल स्थान (कुछ परिभाषा के तहत) को सन्निहित राज्यों की स्थिति का प्रतिनिधित्व करने के लिए मिला था।
आपका कोड राज्यों (या अन्य मनमानी-आयामी आकृतियों) का प्रतिनिधित्व करने के लिए वर्गों को बेहतर ढंग से रखने की चुनौती का एक छोटा सा हिस्सा लेने जा रहा है। विशेष रूप से, यह मानने वाला है कि हमारे पास पहले से ही सभी भौगोलिक केंद्र या आकृतियों के केन्द्रक हैं। एक सुविधाजनक प्रारूप, और यह है कि इस तरह से आरेख में डेटा का इष्टतम प्रतिनिधित्व वह है जिसमें आकृतियों के केन्द्रक से लेकर वर्गों के केंद्रों तक कुल दूरी है जो उनका प्रतिनिधित्व करते हैं, न्यूनतम है, जिसमें प्रत्येक में सबसे अधिक एक वर्ग है। संभव स्थिति।
आपका कोड किसी भी सुविधाजनक प्रारूप में फ़्लोटिंग-पॉइंट X और Y निर्देशांक 0.0 से 100.0 (समावेशी) के अनूठे जोड़ों की एक सूची लेगा, और डेटा का प्रतिनिधित्व करने के लिए एक ग्रिड में इकाई वर्गों के गैर-नकारात्मक पूर्णांक निर्देशांक को आउटपुट करेगा। , संरक्षण आदेश। ऐसे मामलों में जहां वर्गों की कई व्यवस्थाएं इष्टतम हैं, आप किसी भी इष्टतम व्यवस्था का उत्पादन कर सकते हैं। निर्देशांक के 1 और 100 जोड़े के बीच दिया जाएगा।
यह कोड गोल्फ, सबसे छोटा कोड जीत है।
उदाहरण:
इनपुट: [(0.0, 0.0), (1.0, 1.0), (0.0, 1.0), (1.0, 0.0)]
यह थोड़ा आसान है। हमारे ग्रिड में वर्गों के केंद्र 0.0, 1.0, 2.0 आदि हैं, इसलिए इन आकृतियों को पहले से ही इस पैटर्न में वर्गों के केंद्रों में पूरी तरह से रखा गया है:
21
03
तो आपका आउटपुट बिल्कुल ये निर्देशांक होना चाहिए, लेकिन पूर्णांक के रूप में, आपकी पसंद के प्रारूप में:
[(0, 0), (1, 1), (0, 1), (1, 0)]
इनपुट: [(2.0, 2.1), (2.0, 2.2), (2.1, 2.0), (2.0, 1.9), (1.9, 2.0)]
इस स्थिति में सभी आकृतियाँ वर्ग के केंद्र (2, 2) के करीब हैं, लेकिन हमें उन्हें दूर धकेलने की आवश्यकता है क्योंकि दो वर्ग एक ही स्थिति में नहीं हो सकते। आकार के केन्द्रक से वर्ग के केंद्र तक दूरी को दर्शाना जो इसे दर्शाता है, हमें यह पैटर्न देता है:
1
402
3
तो आपका आउटपुट होना चाहिए [(2, 2), (2, 3), (3, 2), (2, 1), (1, 2)]।
परीक्षण के मामलों:
[(0.0, 0.0), (1.0, 1.0), (0.0, 1.0), (1.0, 0.0)] -> [(0, 0), (1, 1), (0, 1), (1, 0)]
[(2.0, 2.1), (2.0, 2.2), (2.1, 2.0), (2.0, 1.9), (1.9, 2.0)] -> [(2, 2), (2, 3), (3, 2), (2, 1), (1, 2)]
[(94.838, 63.634), (97.533, 1.047), (71.954, 18.17), (74.493, 30.886), (19.453, 20.396), (54.752, 56.791), (79.753, 68.383), (15.794, 25.801), (81.689, 95.885), (27.528, 71.253)] -> [(95, 64), (98, 1), (72, 18), (74, 31), (19, 20), (55, 57), (80, 68), (16, 26), (82, 96), (28, 71)]
[(0.0, 0.0), (0.1, 0.0), (0.2, 0.0), (0.0, 0.1), (0.1, 0.1), (0.2, 0.1), (0.0, 0.2), (0.1, 0.2), (0.2, 0.2)] -> [(0, 0), (1, 0), (2, 0), (0, 1), (1, 1), (2, 1), (0, 2), (1, 2), (2, 2)]
[(1.0, 0.0), (1.0, 0.1), (1.0, 0.2), (1.0, 0.3)] -> [(1, 0), (0, 0), (2, 0), (1, 1)] or [(1, 0), (2, 0), (0, 0), (1, 1)]
[(3.75, 3.75), (4.25, 4.25)] -> [(3, 4), (4, 4)] or [(4, 3), (4, 4)] or [(4, 4), (4, 5)] or [(4, 4), (5, 4)]
आकृतियों के केन्द्रक से लेकर वर्गों के केंद्रों तक की कुल दूरी जो प्रत्येक मामले में उनका प्रतिनिधित्व करती है (कृपया मुझे बताएं कि क्या कोई त्रुटि है!)
0.0
3.6
4.087011
13.243299
2.724791
1.144123
सिर्फ मनोरंजन के लिए:
यहाँ हमारे इनपुट प्रारूप में सन्निहित संयुक्त राज्य अमेरिका के भौगोलिक केंद्रों का प्रतिनिधित्व है, जो कि टाइम्स द्वारा प्रयुक्त पैमाने पर है:
[(15.2284, 3.1114), (5.3367, 3.7096), (13.0228, 3.9575), (2.2198, 4.8797), (7.7802, 5.5992), (20.9091, 6.6488), (19.798, 5.5958), (19.1941, 5.564), (17.023, 1.4513), (16.6233, 3.0576), (4.1566, 7.7415), (14.3214, 6.0164), (15.4873, 5.9575), (12.6016, 6.8301), (10.648, 5.398), (15.8792, 5.0144), (13.2019, 2.4276), (22.3025, 8.1481), (19.2836, 5.622), (21.2767, 6.9038), (15.8354, 7.7384), (12.2782, 8.5124), (14.1328, 3.094), (13.0172, 5.3427), (6.142, 8.8211), (10.0813, 6.6157), (3.3493, 5.7322), (21.3673, 7.4722), (20.1307, 6.0763), (7.5549, 3.7626), (19.7895, 7.1817), (18.2458, 4.2232), (9.813, 8.98), (16.8825, 6.1145), (11.0023, 4.2364), (1.7753, 7.5734), (18.8806, 6.3514), (21.3775, 6.6705), (17.6417, 3.5668), (9.9087, 7.7778), (15.4598, 4.3442), (10.2685, 2.5916), (5.3326, 5.7223), (20.9335, 7.6275), (18.4588, 5.0092), (1.8198, 8.9529), (17.7508, 5.4564), (14.0024, 7.8497), (6.9789, 7.1984)]
इन्हें प्राप्त करने के लिए, मैंने इस पृष्ठ पर दूसरी सूची से निर्देशांक लिया और 0.4 * (125.0 - longitude)हमारे X समन्वय के लिए और 0.4 * (latitude - 25.0)हमारे Y समन्वय के लिए उपयोग किया। यहां बताया गया है कि प्लॉटेड जैसा दिखता है:
उपरोक्त कोड के साथ अपने कोड से आउटपुट का उपयोग करने वाला पहला व्यक्ति वास्तविक वर्गों के साथ आरेख बनाने के लिए इनपुट के रूप में पीठ पर एक पॅट प्राप्त करता है!





(1, 2), नहीं(1, 1)।