কাউকে শৃঙ্খলাবদ্ধ করা হয়েছে?


26

Defenestration হ'ল উইন্ডো থেকে কাউকে বা কিছু ছুঁড়ে ফেলার কাজ।
- উইকিপিডিয়া

ইনপুট

ইনপুটটিতে দুটি অংশ থাকবে:

  • একটি মেঝে পরিকল্পনা এবং ঘর / বিল্ডিংয়ের ভিতরে থাকা কোনও ব্যক্তি।

    • v><^তীর দ্বারা নির্দেশিত দিক নির্দেশ করে কোনও ব্যক্তিকে উপস্থাপন করে। ইনপুটটিতে ঠিক একজন ব্যক্তি থাকবে।

    • -এবং |দেয়াল উপস্থাপন, এবং #একটি উইন্ডো প্রতিনিধিত্ব করে। খালি জায়গা।

    ইনপুটটির এই অংশটি একটি একক স্ট্রিং, বা একটি অ্যারে / তালিকা / ইত্যাদি হিসাবে নেওয়া যেতে পারে। লাইন। কোনও পিছনে বা শীর্ষস্থানীয় স্থান কখনও হবে না এবং ইনপুটটি সর্বদা একটি আয়তক্ষেত্র হবে।

    উদাহরণ:

    -----###---
    |         |
    |     ^   |
    -----------
    
  • একটি পূর্ণসংখ্যা ≥ 1 নির্দেশ করে যে ব্যক্তি কতদূর (চরিত্রগুলিতে) ভ্রমণ করে।

আউটপুট

আউটপুট হওয়া উচিত

  • 1যদি ব্যক্তি একটি উইন্ডোটির "অভ্যন্তরে" শেষ হয় (অর্থাত্ ইনপুটটিতে নির্দিষ্ট দূরত্বটি এগিয়ে যাওয়ার পরে, ব্যক্তিটি একটি এর উপরে থাকে #)।

  • 2যদি ব্যক্তিটি নির্মূল করা হয়ে থাকে (একজনের সংস্পর্শে আসুন #এবং তারপরে আরও চালিয়ে যান)।

  • 3যদি ব্যক্তি কোনও দেয়ালে আঘাত করে (একটি -বা তার সংস্পর্শে আসুন |Once একবার প্রাচীরে আঘাত করার পরে, ব্যক্তিটি থেমে যায় এবং এর মাধ্যমে অবিরত থাকে না)।

  • 0 যদি উপরের কোনওটি সত্য না হয় (এবং সমস্ত ব্যক্তি যা করেছে তা হ'ল খালি জায়গায় ভ্রমণ করা)।

অনুমিতি

নিম্নলিখিত সমস্তই সত্য বলে ধরে নেওয়া যেতে পারে:

  • ব্যক্তি কখনই ইনপুট অঞ্চলটির "সীমার বাইরে" ভ্রমণ করবে না।

  • Defenestrated হওয়ার পর ব্যক্তি অন্য সংস্পর্শে আসবে না #বা -/ |(আপনার সম্পর্কে যদি চিন্তা করতে হবে তা না 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
@ সিও'বাউHas someone been for-sparta'd?
বিড়াল

আমার সম্পাদনাটি কেন প্রত্যাখ্যান হয়েছিল):
বিড়াল

@ কেট কারণ এটি অন্য কারও প্রশ্নের একটি সম্পাদনা, তাদের অবশ্যই ইনপুট থাকতে হবে।
কনর ও'ব্রায়েন

উত্তর:


10

জাভাস্ক্রিপ্ট (ES6), 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')

@ নিনজাবার্মনকিকে 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

._ಠ আমি ঠিক প্রায় একই জিনিস পোস্ট করতে চলেছি।
কনর ও'ব্রায়েন

@ সিও'বা হা, আমি জানি যে খুব ভাল লাগছে ...
ব্যবহারকারী 81655

উত্তম উত্তর, বিটিডব্লিউ! খুব সুদর্শন.
কনর ও'ব্রায়েন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.