क्या किसी को बदनाम किया गया है?


26

अपवित्रता किसी को या किसी चीज को खिड़की से बाहर फेंकने की क्रिया है।
- विकिपीडिया

इनपुट

इनपुट में दो भाग होंगे:

  • एक मंजिल योजना और घर / इमारत के अंदर एक व्यक्ति।

    • v><^तीर द्वारा इंगित दिशा में इंगित करते हुए, एक व्यक्ति का प्रतिनिधित्व करता है। इनपुट में ठीक एक व्यक्ति होगा।

    • -और |दीवारों का प्रतिनिधित्व करते हैं, और #एक खिड़की का प्रतिनिधित्व करता है। खाली जगह है।

    इनपुट के इस हिस्से को या तो एक स्ट्रिंग, या एक सरणी / सूची / आदि के रूप में लिया जा सकता है। लाइनों की। कभी कोई अनुगामी या अग्रणी स्थान नहीं होगा, और इनपुट हमेशा एक आयत होगा।

    उदाहरण:

    -----###---
    |         |
    |     ^   |
    -----------
    
  • एक पूर्णांक inte 1 यह दर्शाता है कि व्यक्ति कितनी दूर (वर्णों में) यात्रा करता है।

उत्पादन

आउटपुट होना चाहिए

  • 1यदि व्यक्ति एक खिड़की के अंदर "अंदर" समाप्त होता है (यानी इनपुट में निर्दिष्ट दूरी आगे बढ़ने के बाद, व्यक्ति शीर्ष पर है #)।

  • 2यदि व्यक्ति को बदनाम कर दिया गया है (एक संपर्क में आए #और फिर आगे जारी रखा गया)।

  • 3अगर वह व्यक्ति एक दीवार से टकरा गया है ( -या उसके संपर्क में आने पर |। एक बार दीवार से टकराने के बाद, व्यक्ति रुक ​​जाता है और उसके माध्यम से जारी नहीं रहता है)।

  • 0 यदि उपरोक्त में से कोई भी सत्य नहीं है (और सभी व्यक्ति ने किया है तो खाली स्थान पर यात्रा करें)।

मान्यताओं

निम्नलिखित में से सभी को सच माना जा सकता है:

  • व्यक्ति इनपुट क्षेत्र के "सीमा से बाहर" कभी नहीं जाएगा।

  • बदनाम होने के बाद, व्यक्ति कभी भी दूसरे #या -/ / के साथ संपर्क में नहीं आएगा |(इसलिए आपको इस बारे में चिंता करने की ज़रूरत नहीं है कि क्या 2 और 1 या 3दोनों सच हैं)।

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

निम्नलिखित "मंजिल योजना" के लिए:

-----
|   |
|###|
|   |
| ^ |
In   Out
1    0
2    1
3    2

इस मंजिल योजना के लिए:

> | # |
In   Out
1    0
2-99 3    * that is, any input 2-99 outputs 3

इस मंजिल योजना के लिए:

||####|#|#|##|<
In   Out
any  3

अंतिम परीक्षण मामला:

|v|
|#|
| |
| |
| |
| |
In   Out
1    1
2-5  2  

7
मैं प्रस्तावित करता हूं कि इस चुनौती का शीर्षक बदलकर डीफेंस्ट्रेशन टेस्टिंग किया जाए।
बिल्ली

1
अनुवर्ती प्रश्न: यह, गड्ढे को छोड़कर।
कॉनर ओ'ब्रायन

2
@ C @O'BʀɪᴇɴHas someone been for-sparta'd?
बिल्ली

मेरे संपादन को अस्वीकार क्यों किया गया):
बिल्ली

@cat क्योंकि यह किसी और के प्रश्न पर एक संपादन है, इसलिए उनके पास इनपुट होना चाहिए।
कॉनर ओ'ब्रायन

जवाबों:


10

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

(p,n)=>eval('l=p.search`\n`+1;m=p.match`[<>v^]`;for(r=d=i=0;i++<n&r<3;r-1?0:d=2)r=(c=p[m.index+i*({v:l,"<":-1,">":1}[m]||-l)])>"#"?3:c>" ";+r||d')

@NinjaBearMonkey के लिए 1 बाइट धन्यवाद !

व्याख्या

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

(p,n)=>                               // p = floor plan as string, n = number of moves
  eval(`                              // use eval to enable for loop without {} or return
    l=p.search\`\n\`+1;               // l = line length
    m=p.match\`[<>v^]\`;              // m = the position and orientation of the person
    for(
      r=                              // r = result at the current step
        d=                            // d = 2 if the person has been defenestrated
          i=0;                        // i = current step
      i++<n&r<3;                      // for each step while the person has not hit a wall
      r-1?0:d=2                       // set d to 2 once the person enters the window
    )
      r=(                             // r = 0 if on " ", 1 if on "#" or 3 if on "|" or "-"
        c=p[m.index+i*                // c = character after current step
          ({v:l,"<":-1,">":1}[m]||-l) // get the index offset of each step
        ]
      )>"#"?3:c>" ";
    +r||d                             // return the result of the current step or d
  `)

परीक्षा


3
मुझे आपका परीक्षण स्निपेट पसंद है!
GamrCorps

ಠ_ the मैं बहुत सटीक एक ही बात पोस्ट करने वाला था।
कॉनर ओ'ब्रायन

@ C @O'Bʀɪᴇɴ Haha, मुझे पता है कि यह सब बहुत अच्छा लग रहा है ...
user81655

अच्छा जवाब, btw! बहुत अकलमंद।
कॉनर ओ'ब्रायन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.