2010-10-25 9 views
19

एक हेलीकॉप्टर पैराशूट पर दो ट्रेनों को सीधे सीधी अनंत रेलवे लाइन पर छोड़ देता है।प्रोग्रामिंग डेटा या संचार (तर्क पहेली) के बिना छेड़छाड़ करने के लिए दो ट्रेनों को प्रोग्रामिंग

दो ट्रेनों के बीच एक अपरिभाषित दूरी है।

प्रत्येक एक ही दिशा का सामना करता है, और लैंडिंग पर, प्रत्येक ट्रेन से जुड़ा पैराशूट ट्रेन और डिटेच के बगल में जमीन पर गिर जाता है।

प्रत्येक ट्रेन में माइक्रोचिप होता है जो इसकी गति को नियंत्रित करता है। चिप्स समान हैं।

ट्रेनों के बारे में जानने का कोई तरीका नहीं है कि वे कहां हैं।

ट्रेनों को एक-दूसरे में टक्कर देने के लिए आपको चिप में कोड लिखना होगा।

कोड की प्रत्येक पंक्ति निष्पादित करने के लिए एक घड़ी चक्र लेती है।

आप निम्न कमांड (और केवल इन) का उपयोग कर सकते हैं:

  • म्यूचुअल फंड - ट्रेन आगे
  • एमबी ले जाता है - यदि ट्रेन पिछड़े
  • ले जाता है (पी) - सशर्त है कि अगर संतुष्ट है ट्रेन पैराशूट के बगल में है। इस आईएफ स्टेटमेंट में "तब" नहीं है।
  • गोटो
+8

क्यों बंद करें? यह एल्गोरिदम-निर्माण के बारे में एक साधारण सवाल है जिसका स्पष्ट उत्तर है। – aioobe

+1

अधिक दृश्यता प्राप्त करने के लिए आप एक और टैग "साक्षात्कार-प्रश्न" जोड़ सकते हैं – vrbilgi

+6

सिर्फ इसलिए कि आप प्रोग्रामिंग के बारे में कोई प्रश्न कॉपी और पेस्ट कर सकते हैं, इसका मतलब यह नहीं है कि सवाल अच्छा है। इस प्रश्न को बेहतर स्वरूपण की आवश्यकता है, और शायद ओपी से कुछ शब्द * क्यों * प्रश्न पोस्ट किया गया था। –

उत्तर

25

प्रत्येक ट्रेन कदम आगे धीरे-धीरे जब तक यह एक पैराशूट पाता है बनाओ। जब पिछली ट्रेन को सामने की ट्रेन के पैराशूट मिलते हैं, तो आगे की ट्रेन के साथ पकड़ने के लिए इसे तेजी से आगे बढ़ें।

1. MF 
2. IF(P) 
3. GOTO 5 
4. GOTO 1 
5. MF 
6. GOTO 5 

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

+0

यदि यह 'IF' निर्देश के लिए सही वाक्यविन्यास है, तो यह एक सही उत्तर है। भले ही दूसरे और तीसरे निर्देश एक ही पंक्ति पर हैं, फिर भी यह काम करेगा। –

+0

यह एक कठिन है। इसे एकीकृत नेता चुनाव की समझ की जरूरत है। – none

+1

मुझे नहीं लगता कि यह एक सही उत्तर है। मुझे लगता है कि एमएफ और एमबी ट्रेन की गति को नियंत्रित नहीं करते हैं, लेकिन बस इसे कुछ दूरी पर ले जाएं। – Dialecticus

2
label1: MF 
If (P) 
{ 
    // Do nothing (because of no then?) 
} 
ELSE 
{ 
    MF; 
    MB; 
    GOTO label1; 
} 
label 2:MF 
GOTO label2; 

आगे जाने के 2 बार, पिछड़े 1 बार जब तक पूरा अन्य ट्रेन की पैराशूट पागल की तरह आगे जाने (अन्य टक्कर करने के लिए - यह अभी भी आगे तो पिछड़े है - यह धीमी जाना है, जिसका अर्थ है)। मैं लेबल 2 में एक बार एमएफ का उपयोग करता हूं, इसका मतलब है कि यह एक कदम आगे जाने के लिए 2 घड़ी चक्र लेता है। लेबल 1 में इसे एक चरण आगे जाने के लिए 5 घड़ी चक्र लिया गया। तो अगर हम लेबल 2 में अधिक एमएफ का उपयोग करते हैं तो उनमें से दो तेजी से टक्कर लेंगे।
कोई चर इस्तेमाल नहीं किया गया।

+0

मैंने आपका कोड स्वरूपित किया; कृपया '101010' बटन का उपयोग करें या अगली बार 4 रिक्त स्थान से अपना कोड इंडेंट करें :-) –

+0

बीटीडब्ल्यू मूल रूप से उसी तर्क को @ jchl के समाधान के रूप में उपयोग करता है, सिवाय इसके कि यह ब्लॉक और ईएलएसई का उपयोग करता है, जो स्पष्ट रूप से इस भाषा में मौजूद नहीं है। –

+1

हाँ, मैं इसे देखता हूं। लेकिन जब मैं अपना लिखता हूं तो मैंने उसका समाधान नहीं देखा। अगर मैं जल्द ही पेज को रीफ्रेश करता हूं तो मैं उसके समाधान से खुश हूं। मैं आसानी से समझने के लिए ब्लॉक का उपयोग करता हूं, और प्रश्न में "नहीं तो" के कारण ईएलएसई। – Kiennx

संबंधित मुद्दे