कीचड़ मोल्ड्स गिन सकते हैं!


10

पृष्ठभूमि

कीचड़ के सांचे कमाल के हैं। यदि आप उन्हें खाद्य स्रोतों के साथ एक सतह पर रखते हैं, तो वे भोजन खोजने के लिए अपनी निविदाएं फैलाएंगे, जिसके बाद वे स्रोतों के बीच कनेक्शन का एक नेटवर्क बनाते हैं। इस चुनौती में, आप भोजन की तलाश में एक कीचड़ मोल्ड का अनुकरण करेंगे। इसके अलावा, यह विशेष सांचा एक बार बंद हो जाएगा जब यह पर्याप्त मिल जाएगा।

इनपुट

आपके इनपुट Lआपकी भाषा के मूल प्रारूप में 2D पूर्णांक निर्देशांक और एक nonnegative पूर्णांक की एक सूची होगी N। सूची Lडुप्लिकेट-मुक्त होने की गारंटी है, लेकिन इसे क्रमबद्ध नहीं किया जा सकता है। इनपुट N0 और लंबाई के बीच L, समावेशी है।

सूची Lखाद्य स्रोतों के लिए निर्देशांक के एक समूह का प्रतिनिधित्व करती है। उदाहरण के लिए, सूची

[(0,0),(2,-1),(3,1),(0,4),(5,5)]

के रूप में नेत्रहीन व्याख्या की जा सकती है

     o
o


   o
o
  o

उत्पादन

आपका आउटपुट K2D डुप्लिकेट की एक और डुप्लिकेट-मुक्त सूची है जो इनपुट के समान प्रारूप पर समन्वयित करता है। यह कीचड़ मोल्ड द्वारा गठित नेटवर्क का प्रतिनिधित्व करता है, और यह निम्नलिखित शर्तों को पूरा करेगा:

  • के चौराहे Lऔर Kआकार बिल्कुल है N
  • सेट Kपूर्णांक ग्रिड (ऑर्थोगोनल या विकर्ण आसन्न के माध्यम से) के सबसेट के रूप में जुड़ा हुआ है।
  • यदि किसी भी समन्वय Kको हटा दिया जाता है, तो यह पहले दो स्थितियों को संतुष्ट नहीं करता है।

ध्यान दें कि यदि N = 0, आउटपुट एक खाली सूची होनी चाहिए।

उपरोक्त सूची के लिए स्वीकार्य आउटपुट का एक उदाहरण Lऔर N = 4होगा

[(0,0),(0,1),(0,2),(0,3),(0,4),(1,4),(2,4),(3,3),(3,2),(3,1),(3,5),(4,5),(5,5)]

जिसकी कल्पना की जा सकती है

   xxO
Oxx
x  x
x  x
x  O
O
  o

जहां प्रत्येक Oदोनों में प्रतिनिधित्व एक समन्वय Lऔर K, और प्रत्येक xएक समन्वय में प्रतिनिधित्व Kनहीं बल्कि में L। अन्य आउटपुट भी स्वीकार्य हैं, और "निविदा" को कम से कम संभव नहीं होना चाहिए। उदाहरण के लिए, यह भी एक स्वीकार्य समाधान है:

   xxOxx
Oxx     x
  x    x
 x    x
x  o x
O   x
  Ox 

नियम

इनपुट और आउटपुट दोनों ही सूचियाँ होंगी, सेट या अन्य डेटाटिप्स नहीं। निर्देशांक स्वयं सूचियों या ट्यूपल्स हो सकते हैं। जरूरत पड़ने पर आप दोनों इनपुट के क्रम को बदल सकते हैं।

आप एक पूर्ण कार्यक्रम या एक फ़ंक्शन लिख सकते हैं। सबसे कम बाइट गिनती जीतता है, और मानक खामियों को रोक दिया जाता है।

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

आपके प्रोग्राम को सभी लागू मूल्यों के लिए इन सूचियों पर काम करना चाहिए N

[]
[(2,3)]
[(0,0),(1,0),(0,1),(1,1)]
[(0,0),(2,-1),(3,1),(0,4),(5,5)]
[(0,0),(1,0),(2,0),(3,0),(0,3),(1,3),(2,3),(3,3)]
[(0,0),(1,0),(2,0),(3,0),(0,3),(1,3),(2,3),(3,3),(0,1),(0,2),(3,1),(3,2),(8,1),(8,2),(-5,1),(-5,2)]
[(0,0),(20,0),(15,15),(-10,4),(-10,3),(0,-5),(7,6),(7,7),(8,8),(9,8),(10,-2),(-1,12),(-3,10)]
[(0,0),(1,0),(2,0),(3,0),(5,0),(6,0),(7,0),(0,9),(1,9),(2,9),(3,8),(4,9),(5,10),(6,10),(7,9),(3,3),(4,4),(5,5)]

कल्पना:

===
o
===
oo
oo
===
     o
o     


   o  
o     
  o   
===
oooo


oooo
===
     oooo     
o    o  o    o
o    o  o    o
     oooo     
===
                         o     


         o                     

       o                       

                  oo           
                 o             
                 o             

o                              
o                              


          o                   o

                    o          


          o                    
===
     oo 
ooo o  o
   o    


     o  
    o   
   o    


oooo ooo

जवाबों:


3

CJam, 77 95 बाइट्स

मुझे लगता है कि यह थोड़ा अधिक गोल्फ हो सकता है, लेकिन यहाँ जाता है:

q~$<_{{:X;]{[X\]z::-~mhW*}$~:Y{_)Y1{_@=X@=}:B~-g-{+__X=!\}:C~1B=!&}g{_(Y0B-g-\C0B=!&}g}*]_&}L?p

इनपुट पसंद आता है N <Array of coordinate array>। उदाहरण के लिए:

4 [[0 0] [1 5] [2 1] [0 3] [5 0] [5 5]]

आउटपुट:

[[० ५] [१ ५] [० ४] [० ३] [० ०] [० २] [० १] [१ १] [२ १]

एल्गोरिथम :

एल्गोरिथ्म बहुत सीधा है और आगे बढ़ता है:

  • इनपुट समन्वय सारणी को क्रमबद्ध करें। यह निर्देशांक को पहले पंक्ति और फिर स्तंभ द्वारा क्रमबद्ध करता है।
  • अब हम पहले Nअंक लेते हैं
  • अब हम इन Nबिंदुओं पर कम करते हैं। गंतव्य अंतिम बिंदु है और स्रोत उस अंतिम बिंदु का समापन बिंदु है।
  • फिर हम शीर्ष-बाएं सबसे बिंदु से शुरू करते हैं, अगले बिंदु पर इसके सीधे या सीधे ऊपर तक दाएँ (या बाएं) चलते हैं।
  • फिर हम अगले बिंदु तक पहुंचने के लिए नीचे चलते हैं।
  • यह गारंटी है कि एक ही पंक्ति में उपरोक्त बिंदु पर कोई खुला बिंदु नहीं छोड़ा जाएगा। यह सुनिश्चित करता है कि हम चुने गए किसी अन्य बिंदु को नहीं छूते हैं N। क्लोज पॉइंट को चुनना भी सुनिश्चित करता है कि दूसरा नियम सही है।

इसे यहाँ ऑनलाइन आज़माएँ

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