पांच चरित्र ASCII का नक्शा


9

नोट: इस पोस्ट में, शब्द 'वर्ण' और 'रंग' का अर्थ अनिवार्य रूप से एक ही है

यह तस्वीर:

उदाहरण का नक्शा

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

....'''333
.eeee'''3e
..dddd33ee
%%%dd####e

(ascii अक्षर के लिए रंग मैपिंग)

चार रंग प्रमेय में कहा गया है कि "समतल क्षेत्रों में किसी भी विमान को अलग करने के लिए, एक नक्शा नामक एक आकृति का निर्माण किया जाता है, नक्शे के क्षेत्रों को रंगीन करने के लिए चार से अधिक रंगों की आवश्यकता नहीं होती है ताकि किसी भी निकटवर्ती क्षेत्र में एक ही रंग न हो।" क्षेत्रों को आसन्न कहा जाता है यदि वे एक सामान्य सीमा साझा करते हैं जो एक कोने नहीं है, जहां कोने तीन या अधिक क्षेत्रों द्वारा साझा किए गए बिंदु हैं। " - विकिपीडिया ( लिंक )

इसका मतलब यह है कि चार रंगों का उपयोग करके नक्शे को रंगना संभव होना चाहिए ताकि कोई भी दो भाग जो एक किनारे को साझा न करें एक रंग साझा करें।

केवल चार रंगों का उपयोग करके मानचित्र को रंग देने के लिए एल्गोरिथ्म जटिल है, इसलिए इस चुनौती में आपके कार्यक्रम को केवल पांच या उससे कम रंगों का उपयोग करके मानचित्र को रंगने की आवश्यकता है।

पिछला नक्शा इस तरह दिखाई दे सकता है:

उदाहरण के पांच रंग नक्शा

जिसका प्रतिनिधित्व किया जा सकता है

....'''333
.eeee'''3e
..dddd33ee
333dd....e

या समकक्ष

@@@@$$$!!!
@^^^^$$$!^
@@<<<<!!^^
!!!<<@@@@^

चुनौती:

आस्की पात्रों से बना एक "मानचित्र" (जहां प्रत्येक वर्ण एक अलग रंग का प्रतिनिधित्व करता है) को देखते हुए, नक्शे को "पुनरावर्ती" करें (विभिन्न अस्सी वर्णों का उपयोग करके मानचित्र का प्रतिनिधित्व करें) ताकि यह केवल पांच या उससे कम रंगों का उपयोग करे।

उदाहरण:

इनपुट:

%%%%%%%%%%%%##########$$$$$$$$%%
*****%%%####!!!!!!!%%%%%%%%%#^^^
(((((((***>>>>??????????%%%%%%%%
&&&&&&&&$$$$$$$^^^^^^^))@@@%%%%%
^^^^^^%%%%%%%%%%%%##############

संभावित उत्पादन:

11111111111122222222223333333311
44444111222255555551111111112444
22222224441111444444444411111111
55555555222222255555553355511111
22222211111111111122222222222222

स्पष्टीकरण:

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

सैंडबॉक्स लिंक


2
मैं देखता हूं, कम से कम आपके उदाहरण में, "मैप्स" वास्तव में प्लेनर ग्राफ नहीं हैं, यह देखते हुए कि गैर-सन्निहित क्षेत्र एक ही रंग के प्रतीत होते हैं। इसका मतलब है कि आप आसानी से एक ग्राफ बना सकते हैं, जिसे रंग करने के लिए 6 या अधिक रंगों की आवश्यकता होती है। क्या हमें 121इस समस्या से बचने के लिए नक्शे को 3 अलग-अलग क्षेत्रों के रूप में मानना ​​चाहिए, भले ही उदाहरण का अर्थ है अन्यथा, या हमें इसे 2 के रूप में मानना ​​चाहिए, और यह मान लें कि कोई भी मानचित्र नहीं दिया जाएगा जिसे 5 से अधिक रंगों की आवश्यकता है?
MildlyMilquetoast

2
उदाहरण में कोई त्रुटि नहीं है, यह सिर्फ इतना है कि उदाहरण किसी भी तरह से काम कर सकता है - यह गलत नहीं है, बस अस्पष्ट है। यह निर्दिष्ट करने में मदद करेगा कि क्या एक ही वर्ण के साथ लेबल किए गए विभिन्न क्षेत्र नियमों में समान या एकाधिक क्षेत्र हैं।
MildlyMilquetoast

1
मजेदार रूप से पर्याप्त, मैं अभी चार रंग प्रमेय के प्रमाण पर एक निबंध लिख रहा हूं। मुझे कहना है, पाँच रंग प्रमेय के लिए सबूत बहुत कम जटिल है
MildlyMilquetoast

जवाबों:


5

पायथन 2 , 375 361 359 357 355 353 350 347 बाइट्स

e=enumerate
C=set('12345')
def f(s):
 s=[map(ord,l)for l in s]
 for i,v in e(s):
	for j,w in e(v):
	 if{w}-C:
		F,N=g([],s,i,j,w)
		for y,x in F:s[y][x]=min(C-N)
 return s
def g(m,s,i,j,c):
 n={s[i][j]}
 if(n^{c}or(i,j)in m)<1:
	m+=(i,j),
	for x,y in(0,1),(0,-1),(1,0),(-1,0):
	 if len(s)>i+x>-1<j+y<len(s[0]):m,N=g(m,s,i+x,j+y,c);n|=N
 return m,n

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

इनपुट को स्ट्रिंग्स की सूची के रूप में लेता है, और सूचियों की सूची लौटाता है

fनक्शा इनपुट लेता है और इसे रंग gदेता है , सभी जुड़े हुए पात्रों और उनके पड़ोसियों के सेट को, क्षेत्र में एक अलग रंग से रंगा जा सकता है।



@ नोव्स धन्यवाद :-)
टीएफडीएल


@FelipeNardiBatista धन्यवाद :)
TFeld

if~-(n!={c}or(i,j)in m):-2 बाइट्स के लिए
फेलिप नारदी बतिस्ता
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.