मुझे इन तारों को हटाने में मदद करें!


12

मेरे तार सब उलझ गए हैं!

क्या यह कष्टप्रद नहीं है जब तार सभी उलझ जाते हैं? ठीक है, यह सिर्फ मेरे लिए हुआ है, इसलिए मैं उनकी मदद करने में मदद करूंगा! आपकी सुविधा के लिए, मैंने उन सभी को डिवाइस से डिस्कनेक्ट कर दिया है, लेकिन वे सभी अभी भी आउटलेट से जुड़े हुए हैं। आपकी चुनौती यह पता लगाना है कि उन्हें कैसे सुलझाना है!

इनपुट

इनपुट में रिक्त स्थान, पाइप और Xs (दोनों मामले) शामिल होंगे। इनपुट कुछ इस तरह दिखाई देगा:

| | | |
 X  | |
| |  x 
|  X  |
| | | |

एक कैपिटल एक्स का मतलब है कि बाएं तार दाएं तार से अधिक पार करता है, और एक लोअरकेस एक्स का मतलब विपरीत होता है। पहली और आखिरी लाइनें हमेशा रहेंगी | | | |...। आप इनपुट को अल्पविराम द्वारा अलग किए गए स्ट्रिंग, स्ट्रिंग्स की एक सरणी आदि के रूप में ले सकते हैं। प्रारूप सख्त नहीं है, जब तक कि यह समझ में नहीं आता है और इसमें कोई अतिरिक्त जानकारी नहीं है।

उत्पादन

इस चुनौती के लिए, न केवल मुझे यह जानने की जरूरत है कि मुझे कितना समय लगेगा, मुझे यह जानना होगा कि वास्तव में क्या करना है। तो, चरित्र आर या एल के साथ पूर्णांक जोड़े की एक सूची आउटपुट करें, केस असंवेदनशील, जो यह दर्शाता है कि दो तारों को किस तरह से जोड़ा गया है और किस तरह से (आर का अर्थ है दाएं से बाएं, और इसके विपरीत एल के लिए)। आपको मुझे यह बताने की ज़रूरत है कि उन्हें अनसुना करने का कौन सा तरीका है; मैं खुद यह पता नहीं लगा सकता। आउटपुट बहुत लचीला है, जब तक कि आप पूर्णांक जोड़े + वर्ण के सभी को सही क्रम में आउटपुट करते हैं और आप किसी भी अतिरिक्त बकवास पाठ (कोष्ठक, अल्पविराम, आदि ठीक नहीं हैं) का उत्पादन नहीं करते हैं। तार शून्य या एक अनुक्रमित हो सकते हैं, लेकिन सूचकांक बाईं ओर से शुरू होना चाहिए। ध्यान दें कि आपको नीचे से ऊपर की ओर नहीं, ऊपर की ओर से खोलना चाहिए। आउटपुट शैली सुसंगत होनी चाहिए, और कृपया निर्दिष्ट करें कि यदि आप स्पष्ट नहीं हैं तो आप कैसे आउटपुट कर रहे हैं। चरित्र का मामला सुसंगत नहीं है,

नमूना आउटपुट

ऊपर उदाहरण इनपुट के लिए, आउटपुट कुछ इस तरह होगा:

2 3 R
3 4 L
1 2 R

यहां आउटपुट स्वरूप अंतरिक्ष से अलग मूल्यों की एक नई पंक्तिबद्ध सूची है। यह 1-अनुक्रमित है।

आगे विनिर्देशों

यह एक्स और एक्स दोनों क्रम में एक दूसरे के ऊपर खड़ी खड़ी मान्य है। चूंकि मैं आलसी हूं, इसलिए मैं अनावश्यक रूप से तारों को स्विच नहीं करना चाहता, इसलिए इन मामलों के लिए कुछ भी आउटपुट न करें; अगर मुझे लगता है कि, मैं उन्हें सीधे लाने के लिए तारों को धीरे से खींचूंगा।

यह भी कई एक्स और एक्स खड़ी खड़ी होने के लिए मान्य है, और जब तक न तो तार अन्य क्रॉसिंग में शामिल हो, मुझे कोई अतिरिक्त चाल नहीं चाहिए (क्योंकि मैं आलसी हूं)। इस प्रकार, यदि वर्ण X X x X x xकिसी अन्य क्रॉसिंग के बिना एक कॉलम में दिखाई देते हैं, तो आउटपुट अभी भी रिक्त होना चाहिए!

यदि यह स्पष्ट नहीं है, तो आर एक्स को हटा देता है और एल एक्स को समाप्त कर देता है।

एक ही पंक्ति में दो वायर क्रॉसिंग हो सकते हैं, जिस स्थिति में इन दोनों स्वैप का क्रम मायने नहीं रखता है। आपको कभी ऐसा कुछ नहीं मिलेगा | X X |(इसका कोई मतलब नहीं है क्योंकि इसका मतलब है कि मध्य तार को उसके बाएं और दाएं दोनों तरफ तारों के ऊपर से पार किया जा रहा है)।

हमेशा क्रॉसिंग नहीं होते ...

इनपुट एक एकल पाइप हो सकता है। हालांकि, इनपुट कभी खाली नहीं होगा।

20 दिसंबर को सबसे छोटा वैध समाधान जीत!

और ज्यादा उदाहरण

जैसा कि मैंने वादा किया था:

उदाहरण 1

इनपुट

| | | | | |
| |  X   x 
 X  |  x  |
|  x  |  X 
 X   X  | |
| | | | | |

उत्पादन

1 2 R
3 4 R
2 3 L
5 6 R
1 2 R
4 5 L
3 4 R
5 6 L

उदाहरण 2

इनपुट

| | |
 X  |
|  x 
| | |
|  X 
|  x 
| | |

उत्पादन

2 3 L
1 2 R

उदाहरण 3

इनपुट

|

आउटपुट रिक्त है। हां, आपको इस मामले से निपटना होगा।

उदाहरण 4

इनपुट

| |
 X 
 x 
 X 
 x 
 X 
 x 
 X 
 x 
 X 
 x 
| |

आउटपुट रिक्त है। सिर्फ मनोरंजन के लिए :)।

उदाहरण 5

इनपुट

| |
 X 
 X 
 x 
 X 
 x 
 x 
| |

आउटपुट अभी भी खाली है ...


4
क्या एक ही पंक्ति में दो जोड़ी तारों का उलझना संभव है?
जेम्स होल्डरनेस

1
@JamesHolderness हाँ, यह है। इस मामले में, आदेश कोई फर्क नहीं पड़ता। मैं प्रश्न में स्पष्ट कर दूंगा। धन्यवाद!
२३:३४ पर हायपरनीट्रीनो

@JamesHolderness किया!
हाइपरन्यूट्रिनो 22

जवाबों:


1

Befunge, 173 बाइट्स

इनपुट को चुनौती विवरण में दिए गए सटीक प्रारूप में स्टडिन से पढ़ा जाता है, हालांकि यह महत्वपूर्ण है कि हर पंक्ति सही लंबाई हो और अंतिम पंक्ति में एक नई पंक्ति (यानी उस पंक्ति के अंत में ईओएफ नहीं) शामिल होनी चाहिए।

$1>>05p~$~:55+-#v_
$_^#`"N":+1g50$<>:2+3%1-05g6g+0v>!#:v#
vg50-1*2p51:-1_^#:<*2!!-*84p6g5<
 +#,.#$"R"\#\-#+5<^g51$_:0`6*\25g\v@_:#!.#:1#,
>+::25p6g\48*\6p48 *-:!^!:--1*2`0:<

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

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

उसी समय जब हम किसी विशेष तार के लिए मोड़ की प्रक्रिया करते हैं, तो हम तारों के बाईं और दाईं ओर के मोड़ को भी देखते हैं। यदि उनमें से कोई भी गैर-शून्य नहीं है, तो हमें स्टैक पर उन ट्विस्ट को "फ्लश" करने की आवश्यकता है, क्योंकि बाद में उनके लिए विपरीत दिशा में बाद में ट्विस्टर्स को अनवील किया जाना संभव नहीं होगा।

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

एक बार जब हम इनपुट को संसाधित कर लेते हैं, तो तारों को अनटैंक करने के सभी आदेश अब स्टैक पर होंगे। इसका मतलब यह है कि हम उन्हें उल्टे क्रम में पॉप-अप कर सकते हैं ताकि नीचे से ऊपर की तरफ तारों को अनियोजित करने के लिए आवश्यक निर्देशों का उत्पादन हो सके।


यह पूरी तरह से काम करने के लिए प्रकट होता है। बहुत बढ़िया!
हाइपरएनुट्रिनो 21

यह जीतने वाला जवाब है। बहुत बढ़िया! इसके अलावा, मेरे लिए अन्य उत्तरों की जाँच करने के लिए धन्यवाद! :)
हाइपरन्यूट्रिनो

@AlexL। धन्यवाद। यह साइट पर मेरा पहला जीतने वाला उत्तर है। कभी नहीं सोचा था कि Befunge के साथ संभव होगा। :)
जेम्स होल्डरनेस

कोई दिक्कत नहीं है। जीत पर बधाई! मुझे आश्चर्य हो रहा है और साथ ही आपने कितना छोटा जवाब दिया है। :)
हाइपरएन्यूट्रीनो

5

पायथ - 26 25 बाइट्स

बहुत सीधा, शायद मैं फ़िल्टरिंग को गोल्फ कर सकता हूं।

fhhT_m+hB/xrdZ\x2@"RL"}\x

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


बढ़िया कोशिश। दुर्भाग्य से, चरित्र का उत्पादन सही नहीं है; यह हर बार आर लगता है। हालांकि अच्छा प्रयास; संख्या सही ढंग से आ रही है!
हाइपरएन्यूट्रीनो

@AlexL। मैं बेवकूफ हूं, मैंने in
आर्गन

समझा। अच्छा जवाब! एक उत्थान है। :)
HyperNeutrino

2
अगर मैं गलत नहीं हूं, तो यह उस मामले को संभालने के लिए प्रकट नहीं होता है जहां आपके पास एक्स और एक्स खड़ी खड़ी हैं। यह आपको अनावश्यक रूप से तारों को आगे और पीछे स्वैप करने के लिए कहता है।
जेम्स होल्डरनेस

5

जावास्क्रिप्ट (ईएस 6), 178 बाइट्स

f=([t,...a],r=[])=>a[0]?t.replace(/x/gi,(c,i)=>(c=c<'x'?'R':'L',i=++i/2,r.reduce((f,[j,,d],n)=>f||i<j+2&&j<i+2&&(j-i|c==d||r.splice(n,1)&&2),0)<2?r=[[i,i+1,c],...r]:r))&&f(a,r):r

लाइनों का प्रतिनिधित्व करने वाले तारों के एक सरणी के रूप में इनपुट लेता है और मानों के सरणियों की एक सरणी देता है [[2, 3, "R"], [3, 4, "L"], [1, 2, "R"]]। रिवर्स ऑर्डर को खत्म करने में मदद करता है।


आप कहाँ sसे प्राप्त कर रहे हैं मैं इसे repl.it पर चला रहा हूँ और यह मुझे बता रहा है कि a ReferenceError: s is not defined
HyperNeutrino

@AlexL। उफ़, मैं गलती से अपने कोड के पिछले संस्करण में चिपका दिया गया था, जिसे मैंने गोल्फ खत्म नहीं किया था। अब तय होना चाहिए।
नील

@JamesHolderness जब से मैंने अपना जवाब प्रस्तुत किया था, तब से यह प्रश्न बदल गया था, मुझे इसे अपडेट करना होगा।
नील

@JamesHolderness हां। इसके बारे में क्षमा करें, नील। मुझे केवल उस प्रश्न के कुछ हिस्सों को स्पष्ट करने की आवश्यकता थी जो मैंने पहले स्पष्ट नहीं किए थे।
हाइपरन्यूट्रिनो

@JamesHolderness मुझे एहसास है कि, यही वजह है कि मैंने अपने उत्तर को गैर-जटिल के रूप में चिह्नित किया है क्योंकि यह प्रश्न के पिछले पुनरावृत्ति का उत्तर देता है, जब तक कि मैं वर्तमान आवश्यकताओं के लिए इसे अपडेट करने में सक्षम नहीं हूं।
नील

3

पायथन 2, 244 241 बाइट्स

m=[]
for l in input():
 for i in range(len(l)):
  c=l[i];a=i/2+1;L,R=[a,a+1,'LR'[c>'v']],[a,a+1,'RL'[c>'v']];x=m.index(L)if L in m else-1;M=zip(*m[:x+1])
  if c in'xX':
   if x>=0and(a in M[1]or a+1in M[0])<1:del m[x]
   else:m=[R]+m
print m

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

उदाहरण:

इनपुट: ['| | | |', ' X | |', '| | x ', '| X |', ' x | |']

आउटपुट: [[1, 2, 'L'], [2, 3, 'R'], [3, 4, 'L'], [1, 2, 'R']]

संपादित करें: मामले के लिए फिक्स्ड:

इनपुट: ['| | |', ' X |', ' X |', ' x |', '| X', ' X |', ' x |', ' x |', '| | |']

आउटपुट: [[1, 2, 'L'], [2, 3, 'R'], [1, 2, 'R']]


@JamesHolderness को अब ठीक किया जाना चाहिए।
TFeld

ऐसा लग रहा है कि यह अब ठीक से काम कर रहा है!
हाइपरएन्यूट्रिनो 14

@JamesHolderness हाँ, यह एक समस्या की तरह लगता है। कृपया ठीक करें, TFeld। अन्यथा, अच्छा प्रयास!
हाइपरन्यूट्रिनो 19

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