हलकों की एक सूची को देखते हुए, सबसे छोटे आयत वाले क्षेत्र का उत्पादन करें


28

आपको रेडी की सूची दी जाएगी, आपको सबसे छोटी आयत के क्षेत्र को आउटपुट करना होगा, जिसमें वे सभी फिट होंगे।

उदाहरण के लिए, दी गई सूची को [5,3,1.5]आप आउटपुट करेंगे 157.460

यह छवि है:

चौड़ाई 15.7460 है और ऊँचाई 10 है, इसलिए क्षेत्रफल 157.460 है

नियम:

  • आप स्टडिन या फ़ंक्शन तर्क के माध्यम से सूची प्राप्त करते हैं, स्टडआउट या फ़ंक्शन रिटर्न के माध्यम से उत्तर देते हैं।

  • त्रिज्या में अधिकतम 2 दशमलव स्थान होंगे।

  • सूची में 2 और 6 के बीच की लंबाई होगी।

  • आउटपुट 3 दशमलव स्थानों या उससे अधिक के लिए सटीक होना चाहिए।

  • यदि आपको आवश्यकता है, तो you = 3.1416।

परीक्षण के मामलों:

बाइट्स में सबसे छोटा कोड जीतता है।



1
मुझे एक वस्तुनिष्ठ मानदंड नहीं दिख रहा है
माल्टीसेन

यह हमारे सबसे केंद्रीय नियमों में से एक है
माल्टसेन

2
@ टाइम कोड सबसे ज्यादा बाइट्स में इसे कोड करने के लक्ष्य के साथ कोड गोल्फ है। मुझे लगता है कि यह एक अच्छा कोड गोल्फ चुनौती बना देगा, क्योंकि इसमें एक सटीक कल्पना है।
1

मैं सलाह देता हूं कि "गोल नहीं काटे गए" स्थिति से छुटकारा पाएं क्योंकि यह कार्य के लिए परिधीय है, और कुछ भाषाएं बस ऐसा कर सकती हैं जबकि अन्य को इसे बनाने के लिए अतिरिक्त कोडिंग की आवश्यकता होती है। मुझे यकीन नहीं है कि यदि आप इसे 3 दशमलव से अधिक स्थानों पर आउटपुट करने के लिए ठीक करना चाहते हैं, लेकिन मेरा सुझाव है कि मुझे भी अनुमति दें।
xnor

जवाबों:


16

पायथन 2 + PySCIPOpt , 267 बाइट्स

from pyscipopt import*
R=input()
m=Model()
V,C=m.addVar,m.addCons
a,b,c=V(),V(),V()
m.setObjective(c)
C(a*b<=c)
P=[]
for r in R:
 x,y=V(),V();C(r<=x);C(x<=a-r);C(r<=y);C(y<=b-r)
 for u,v,s in P:C((x-u)**2+(y-v)**2>=(r+s)**2)
 P+=(x,y,r),
m.optimize()
m.printBestSol()

यह काम किस प्रकार करता है

इस प्रकार हम इस समस्या को लिखें: कम से कम चर से अधिक एक , , , एक्स 1 , y 1 , ..., एक्स एन , y n , जहां

  • अब ;
  • आर मैंएक्स मैंएक - r मैं और आर मैंy मैं - y मैं , 1 ≤ के लिए मैंn ;
  • ( एक्स मैं - एक्स जे ) 2 + ( y मैं - y जे ) 2 ≥ ( आर मैं + आर जे ) 2 , 1 ≤ के लिए j < मैंn

जाहिर है, हम इन बाधाओं पर एक बाहरी अनुकूलन पुस्तकालय का उपयोग कर रहे हैं, लेकिन आप उन्हें किसी भी पुराने NMinimizeआशावादी के लिए नहीं खिला सकते हैं - यहां तक ​​कि इन छोटे परीक्षण के मामलों के लिए भी गणितज्ञ स्थानीय मिनिमा पर अटक जाते हैं। यदि आप बाधाओं को करीब से देखते हैं, तो आप देखेंगे कि वे एक द्विघात-विवश द्विघात कार्यक्रम का गठन करते हैं , और एक गैर-उत्तल QCQP के लिए वैश्विक इष्टतम को खोजना NP- कठिन है। इसलिए हमें कुछ अविश्वसनीय रूप से उच्च शक्ति वाले जादू की जरूरत है। मैंने औद्योगिक-शक्ति सॉल्वर SCIP को चुना , जो कि एकमात्र वैश्विक QCQP सॉल्वर है जिसे मैं अकादमिक उपयोग के लिए मुफ्त लाइसेंस के साथ मिल सकता है। खुशी से, यह कुछ बहुत अच्छा पायथन बाइंडिंग है।

इनपुट और आउटपुट

स्टड पर त्रिज्या सूची पास करें, जैसे [5,3,1.5]। उत्पादन शो objective value:आयत क्षेत्र, x1, x2आयत आयाम, x3आयत क्षेत्र फिर से, x4, x5पहले चक्र केंद्र निर्देशांक, x6, x7दूसरा चक्र केंद्र निर्देशांक, आदि

परीक्षण के मामलों

[5,3,1.5]157.459666673757

5,3,1.5

SCIP Status        : problem is solved [optimal solution found]
Solving Time (sec) : 0.04
Solving Nodes      : 187
Primal Bound       : +1.57459666673757e+02 (9 solutions)
Dual Bound         : +1.57459666673757e+02
Gap                : 0.00 %
objective value:                     157.459666673757
x1                                                 10   (obj:0)
x2                                   15.7459666673757   (obj:0)
x3                                   157.459666673757   (obj:1)
x4                                                  5   (obj:0)
x5                                                  5   (obj:0)
x6                                                  7   (obj:0)
x7                                   12.7459666673757   (obj:0)
x8                                                1.5   (obj:0)
x9                                   10.4972522849871   (obj:0)

[9,4,8,2]709.061485909243

यह ओपी के समाधान से बेहतर है। सटीक आयाम 18 से 29 + 6 .3 हैं।

9,4,8,2

SCIP Status        : problem is solved [optimal solution found]
Solving Time (sec) : 1.07
Solving Nodes      : 4650
Primal Bound       : +7.09061485909243e+02 (6 solutions)
Dual Bound         : +7.09061485909243e+02
Gap                : 0.00 %
objective value:                     709.061485909243
x1                                                 18   (obj:0)
x2                                   39.3923047727357   (obj:0)
x3                                   709.061485909243   (obj:1)
x4                                                  9   (obj:0)
x5                                   30.3923047727357   (obj:0)
x6                                                 14   (obj:0)
x7                                   18.3923048064677   (obj:0)
x8                                                  8   (obj:0)
x9                                                  8   (obj:0)
x10                                                 2   (obj:0)
x11                                  19.6154311552252   (obj:0)

[18,3,1]1295.999999999

18,3,1

SCIP Status        : problem is solved [optimal solution found]
Solving Time (sec) : 0.00
Solving Nodes      : 13
Primal Bound       : +1.29599999999900e+03 (4 solutions)
Dual Bound         : +1.29599999999900e+03
Gap                : 0.00 %
objective value:                       1295.999999999
x1                                   35.9999999999722   (obj:0)
x2                                                 36   (obj:0)
x3                                     1295.999999999   (obj:1)
x4                                   17.9999999999722   (obj:0)
x5                                                 18   (obj:0)
x6                                   32.8552571627738   (obj:0)
x7                                                  3   (obj:0)
x8                                                  1   (obj:0)
x9                                                  1   (obj:0)

बोनस के मामले

[1,2,3,4,5]230.244214912998

1,2,3,4,5

SCIP Status        : problem is solved [optimal solution found]
Solving Time (sec) : 401.31
Solving Nodes      : 1400341
Primal Bound       : +2.30244214912998e+02 (16 solutions)
Dual Bound         : +2.30244214912998e+02
Gap                : 0.00 %
objective value:                     230.244214912998
x1                                   13.9282031800476   (obj:0)
x2                                    16.530790960676   (obj:0)
x3                                   230.244214912998   (obj:1)
x4                                                  1   (obj:0)
x5                                   9.60188492354373   (obj:0)
x6                                    11.757778088743   (obj:0)
x7                                   3.17450418828415   (obj:0)
x8                                                  3   (obj:0)
x9                                    13.530790960676   (obj:0)
x10                                  9.92820318004764   (obj:0)
x11                                   12.530790960676   (obj:0)
x12                                                 5   (obj:0)
x13                                                 5   (obj:0)

[3,4,5,6,7]553.918025310597

3,4,5,6,7

SCIP Status        : problem is solved [optimal solution found]
Solving Time (sec) : 90.28
Solving Nodes      : 248281
Primal Bound       : +5.53918025310597e+02 (18 solutions)
Dual Bound         : +5.53918025310597e+02
Gap                : 0.00 %
objective value:                     553.918025310597
x1                                   21.9544511351279   (obj:0)
x2                                   25.2303290086403   (obj:0)
x3                                   553.918025310597   (obj:1)
x4                                                  3   (obj:0)
x5                                   14.4852813557912   (obj:0)
x6                                   4.87198593295855   (obj:0)
x7                                   21.2303290086403   (obj:0)
x8                                   16.9544511351279   (obj:0)
x9                                                  5   (obj:0)
x10                                                 6   (obj:0)
x11                                                 6   (obj:0)
x12                                  14.9544511351279   (obj:0)
x13                                  16.8321595389753   (obj:0)

[3,4,5,6,7,8]777.87455544487

3,4,5,6,7,8

SCIP Status        : problem is solved [optimal solution found]
Solving Time (sec) : 218.29
Solving Nodes      : 551316
Primal Bound       : +7.77874555444870e+02 (29 solutions)
Dual Bound         : +7.77874555444870e+02
Gap                : 0.00 %
objective value:                      777.87455544487
x1                                   29.9626413867546   (obj:0)
x2                                   25.9614813640722   (obj:0)
x3                                    777.87455544487   (obj:1)
x4                                   13.7325948669477   (obj:0)
x5                                   15.3563780595534   (obj:0)
x6                                   16.0504838821134   (obj:0)
x7                                   21.9614813640722   (obj:0)
x8                                   24.9626413867546   (obj:0)
x9                                   20.7071098175984   (obj:0)
x10                                                 6   (obj:0)
x11                                  19.9614813640722   (obj:0)
x12                                                 7   (obj:0)
x13                                                 7   (obj:0)
x14                                  21.9626413867546   (obj:0)
x15                                  8.05799919177801   (obj:0)

पिछले एक शर्म की बात है एक मामूली गोलाई त्रुटि देता है, लेकिन अच्छा काम!
टिम

यह मुझे ऐसा लगता है जैसे [१,२,३,४,५] त्रिज्या ३ और त्रिज्या ५ वृत्त को स्पर्श करके भी सुधारा जा सकता है, फिर त्रिज्या ४ / त्रिज्या ५ विकर्ण को थोड़ा घुमाकर (त्रिज्या १ वृत्त) होगा । रास्ते से बाहर ले जाया जा लेकिन वहाँ उस के लिए मृत अंतरिक्ष के बहुत सारे है दोनों मेरी वृत्ति और मेरी गणना संकेत मिलता है कि एक लंबी, पतली आयत त्रिज्या 4 / त्रिज्या 5 हलकों और अधिक कुशलता से एक squarer एक से हो सकते हैं।
स्तर नदी सेंट

@LevelRiverSt मैं सहमत नहीं हूँ। 5 को छूने के लिए 3 को ऊपर ले जाने से 4 दाईं ओर जाएगा (5 से वामावर्त), इसे बाएं न जाने दें (5 से दक्षिणावर्त)। मेरे कार्यक्रम का विन्यास (7 + 4√3) × (9 + 29 (29 + 16 configuration3)) × 13.9282 × 16.5308 .2 230.244 है, जबकि आपका सुझाया कॉन्फ़िगरेशन (30 + 15√3) या 4 × (36 + 3) है √5 + 6√15) / 4 √ 13.9952 × 16.4865 + 230.732।
एंडर्स कासोर्ग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.