मोंड्रियन पहेली अनुक्रम


11

एक n X nवर्ग को कई गैर-अनुरूपित पूर्णांक-पक्षीय आयतों में विभाजित करें । a(n)सबसे बड़े और सबसे छोटे क्षेत्र के बीच कम से कम संभव अंतर है।

 ___________
| |S|_______|
| | |   L   |
| |_|_______|
| |     |   |
| |_____|___|
|_|_________| (fig. I)

सबसे बड़ी आयत ( L) का एक क्षेत्र होता है 2 * 4 = 8, और सबसे छोटी आयत ( S) में एक क्षेत्र होता है 1 * 3 = 3। इसलिए, अंतर है 8 - 3 = 5

पूर्णांक को देखते हुए n>2, उत्पादन कम से कम संभव अंतर।

पोस्टिंग के समय अनुक्रम के सभी ज्ञात मूल्य:

2, 4, 4, 5, 5, 6, 6, 8, 6, 7, 8, 6, 8, 8, 8, 8, 8, 9, 9, 9, 8, 9, 10, 9, 10, 9, 9, 11, 11, 10, 12, 12, 11, 12, 11, 10, 11, 12, 13, 12, 12, 12

तो a(3)=2, a(4)=4...

OEIS A276523

संबंधित - यह संबंधित चुनौती गैर-इष्टतम समाधानों की अनुमति देती है, समय की कमी है, और कोड-गोल्फ नहीं है।

अधिक जानकारी के लिए, यह वीडियो नंबरफिल द्वारा देखें

जवाबों:


4

CJam, 178

ri_1a*a*L{_:+1&{_[3{_\zW%}*]{_z}%:e<_@={:A0=_1#:X0<{;A1>j}{X>0+0#AzX=0+0#,\,m*1ff+{[_$\~1a*0aX*\+a*A\..-_])s'-&{;}&}%{~j\:X;{Xa&!},Xaf+:$~}%_&}?}{j}?}{;La}?}j{,(},{::*$)\0=-}%:e<

इसे ऑनलाइन आज़माएं । हालांकि यह धीमा है, मैं 6 से ऊपर जाने की सलाह नहीं दूंगा।

यह सत्यापित करने के लिए कि यह वास्तव में काम कर रहा है, आप इस थोड़ा संशोधित कार्यक्रम की जांच कर सकते हैं जो सभी संभावित विभाजनों को प्रिंट करता है (प्रत्येक विभाजन आयत आयाम जोड़े के एक सरणी के रूप में दिखाया गया है)।


वाह, दौड़ने का समय बहुत तेजी से बढ़ता है।
mbomb007

@ mbomb007 हाँ, काफी जानवर-ईश समाधान के लिए अपेक्षित है। मैंने वास्तव में इसे और अधिक कुशल बनाने के लिए अनुकूलन का एक समूह शामिल किया। यदि मैं उन्हें हटा देता हूं, तो मैं इसे थोड़ा छोटा कर सकता हूं (और धीमा और भूख कम करने वाला)।
एडित्सू ने छोड़ दिया क्योंकि SE

6

Befunge, 708 बाइट्स

p&>:10p1-:>20p10g:20g\`v`\g02:-1\p00+1g<>g-#v_10g:*30p"~":40p50p060p070p$>^
1#+\#1<\1_^# !`0::-1$  _:00g3p\:00g2p00^^00:>#:


>>:2-#v_$30p50p60p70g1-70p
^<<<<<:#<<<<<<$$$_v#:!g87g78g79$  _v#!\-1:g88$<_ 98p87g97g*00 v:+!\`*84g++7<
^>$1-:77p1g:2g\3g1>78p97p87p10g97g->88p10g87g-0^!\-1:g89_v#-!\_$1-:v>/88g+7^
^|!-3$<   >\87g/88g+77++p:#v_$
^>:5->v   ^+g89%g78:\g77:-1<>98g88g48*577g387g97g98g88v ^>77g87g97v:^g78\+g<
^ v-4:_$77p88p98p:97p\:87p*^^g79g7>#8\#$_40pv5+"A"g77g< ^14g88g89g<>:87g%98^
^v_$88p98p97p87p:77p60g50g-:40g\`#^_$$>>>>>>>
 >#4!_::80p2g\3g*:90p30g`!v>>>#@>#.>#g^#0
^v:g06p03:-g09\2:g03g05g06_^^_7#<0#<g#<3#<1#<<`g04_$00g1->:#-8#10#\g#1`#:_>$
^>90g\-:0`*+:60p50g:90g-:0`*-:50p-80g70g:1+70p1p\!^

इसे ऑनलाइन आज़माएं!

यह स्पष्ट रूप से आकार के लिए किसी भी पुरस्कार को जीतने वाला नहीं है, लेकिन यह वास्तव में बहुत तेजी से विचार कर रहा है कि यह एक गूढ़ भाषा में एक बुनियादी ब्रूस बल कार्यान्वयन है। Befunge reference दुभाषिया पर यह कुछ सेकंड में n = 6 तक संभाल सकता है। संकलक के साथ यह सुस्त होने से पहले n = 8 तक संभाल सकता है; n = 9 में कुछ मिनट लगते हैं और n = 10 2 घंटे पर बंद होता है।

सिद्धांत रूप में ऊपरी सीमा n = 11 है इससे पहले कि हम मेमोरी से बाहर निकलते हैं (यानी एक बड़ा वर्ग फिट करने के लिए प्लेफ़ील्ड में पर्याप्त जगह नहीं बची है)। हालांकि, उस बिंदु पर, इष्टतम समाधान की गणना करने में लगने वाला समय संभवतः इससे अधिक है कि कोई भी प्रतीक्षा करने को तैयार होगा, भले ही संकलित किया गया हो।

यह देखने का सबसे अच्छा तरीका है कि एल्गोरिथ्म कैसे काम करता है, इसे बेफंगे "विज़ुअल डीबगर्स" में से एक में चलाकर। इस तरह से आप देख सकते हैं कि यह विभिन्न आयत आकारों को उपलब्ध स्थान में फिट करने का प्रयास करता है। यदि आप उस बिंदु पर "फास्ट फॉरवर्ड" करना चाहते हैं जहां इसका एक अच्छा मेल है, तो आप दसवीं पंक्ति (9 यदि शून्य-आधारित) के मध्य के पास 4अनुक्रम में एक ब्रेकपॉइंट लगा सकते हैं $_40p। उस बिंदु पर स्टैक के शीर्ष पर मान वर्तमान क्षेत्र अंतर है।

नीचे एक एनीमेशन है जो n = 5 के लिए इस प्रक्रिया के पहले कुछ फ्रेम दिखा रहा है:

आयत फिटिंग प्रक्रिया को दर्शाने वाला एनीमेशन

प्रत्येक अलग आयत को वर्णमाला के एक अलग अक्षर द्वारा दर्शाया जाता है। हालांकि, ध्यान दें कि अंतिम आयत कभी भी बाहर नहीं लिखी जाती है, ताकि वर्ग का खंड सिर्फ खाली हो जाए।

मैंने कोड का एक डिबग संस्करण भी लिखा है जो वर्तमान लेआउट को हर बार एक नया सबसे अच्छा मैच खोजने का प्रयास करता है ( इसे ऑनलाइन आज़माएं! )। छोटे आकारों के लिए, पहला मैच अक्सर इष्टतम समाधान होता है, लेकिन एक बार जब आप पिछले n = 6 प्राप्त करते हैं तो आपको अंतिम समाधान पर बसने से पहले कई वैध लेकिन गैर-इष्टतम लेआउट देखने को मिलेंगे।

N = 10 के लिए सबसे अच्छा लेआउट इस तरह दिखता है:

H F F F A A A C C I
H F F F A A A C C I
H J G G A A A C C I
H J G G A A A C C I
H J D D D D D C C I
H J D D D D D C C I
H J K K K K K K K I
H J B B B E E E E I
H J B B B E E E E I
H J B B B L L L L L

12 - 4 = 8

1
आप बीफ्यूंज-आरएस के बीच एक भगवान हैं।
R
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.