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


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.