মাল্টি-লেভেল ফ্রি পার্কিং স্পেস সন্ধানকারী


14

বাচ্চাদের সম্পর্কিত ভূমিকা

যখনই আমি আমার বাচ্চাদের একটি বিনোদন পার্কে নিয়ে যাই, পার্কিংয়ের জায়গায় থাকাকালীন স্নায়ুশৃঙ্গের সাথে বাচ্চারা আমাদের পার্কের আরও কাছাকাছিভাবে আরও ঘাবড়ে যায় এবং পার্ক করার কোনও জায়গা খুঁজে পায় না। তাই আমি সিদ্ধান্ত নিয়েছি পার্কিংয়ের সময় ব্যয়কে কমিয়ে আনার জন্য নিকটতম নিখরচায় পার্কিংয়ের জায়গা অনুসন্ধান করার জন্য আমার একটি পদ্ধতি প্রয়োজন।

প্রযুক্তিগত ভূমিকা

এই মত একটি পার্কিং প্রতিনিধিত্ব কল্পনা করুন:

*****************
*               *
* ··CC··C··CC·· *
* ************* *
* ··CCCCCCCCC·· *
*               *
**********E******

এই উপস্থাপনার *অর্থ একটি প্রাচীর, একটি ·নিখরচায় পার্কিং স্পেস, একটি Eপ্রবেশের জায়গা এবং Cএকটি গাড়ি ইতিমধ্যে পার্ক করা। পার্কিংয়ের জায়গার চারপাশে গাড়ি পার্ক করার জন্য প্রতিটি হোয়াইটস্পেস এমন একটি অবস্থান। এখন আসুন বহু-স্তরের পার্কিং লট তৈরি করতে এই ধারণাটি 3 ডি পর্যন্ত প্রসারিত করুন:

    1st floor            2nd floor            3rd floor            4th floor
*****************    *****************    *****************    *****************
*               1    *               2    *               3    *               *
* CCCCCCCCCCCCC *    * CCCCCCCCCCCCC *    * ····C··CCCCCC *    * ······C······ *
* ************* *    * ************* *    * ************* *    * ************* *
* CCCCCCCCCCCCC *    * CCCCCCCCCCCCC *    * ···CCCCCCCCCC *    * ··C·······C·· *
*               *    *               1    *               2    *               3
**********E******    *****************    *****************    *****************

সংখ্যার 1, 2এবং 3মাত্রা মধ্যে সংযোগ প্রতিনিধিত্ব করে। 1সঙ্গে প্রথম তলায় সংযোগ স্থাপন করে থেকে 1দ্বিতীয় তলায় তাই মধ্যে একটি গাড়ী পদবিন্যাস মধ্যে 1দোতলায় অবস্থানে উপস্থিত 1দ্বিতীয় তলায় অবস্থান।

চ্যালেঞ্জ

পূর্ববর্তী দেখানো মত পার্কিংয়ের স্কিম প্রদান, সংক্ষিপ্ততম প্রোগ্রামটি লিখুন যা নীচের অনুযায়ী নিখরচায় মুক্ত পার্কিংয়ের জায়গার দূরত্ব গণনা করে

বিধি

  • ইনপুটটি 3 ডি চর অ্যারে বা 2 ডি স্ট্রিং অ্যারে বা সমতুল্য হবে এবং নিকটতম নিখরচায় পার্কিং স্পেসে পৌঁছানোর জন্য গাড়ীটিকে যে পদক্ষেপ নিতে হবে তার সংখ্যা উপস্থাপন করে আউটপুটটি একক পূর্ণসংখ্যা হবে। যদি আপনি একটি 3D চর অ্যারে পান তবে প্রথম সূচকটি মেঝের নম্বর এবং দ্বিতীয় এবং তৃতীয় সূচকগুলি প্রতিটি তলের জন্য (x, y) অবস্থান উপস্থাপন করতে পারে তবে এটি আপনার উপর নির্ভর করে।
  • এখানে 9 টির বেশি র‌্যাম্প থাকবে না, যার দ্বারা প্রতিনিধিত্ব করা হবে [1-9]
  • গাড়িটি Eঅবস্থান থেকে শুরু হয় (ম্যাপে কেবলমাত্র একটি প্রবেশ পয়েন্ট থাকবে) এবং প্রতিবার চার দিকের একটিতে শ্বেত স্পেস ব্যবহার করে ঘুরে বেড়ায়: উপরে, নীচে, বাম, ডান দিকে। গাড়ী ·অবস্থান এবং [1-9]অবস্থানের পদক্ষেপেও যেতে পারে ।
  • অবস্থানের প্রতিটি পদক্ষেপ (পদক্ষেপ) 1 হিসাবে গণনা করা হয় এবং প্রতিবার গাড়িটি একটি তল থেকে অন্য তলায় যায় 3 হিসাবে গাড়ি অবশ্যই একটি র‌্যাম্প নেবে। এই ক্ষেত্রে, একটি হোয়াইটস্পেস থেকে আন্দোলন পাশে 1থেকে 1নিজেই কি কারণ এই আন্দোলনের গাড়ী প্রদর্শিত ফলে, 3 ধাপ হিসেবে বড়, মোট ছাত্র হল 1অন্যান্য তলায় অবস্থান।
  • গাড়িটি ম্যাট্রিক্সের সীমা ছাড়িয়ে যেতে পারে না।
  • গণনাটি শেষ হবে যখন গাড়িটি পার্ক করা হবে ঠিক একই অবস্থানে থাকবে ·। যদি কোনও অ্যাক্সেসযোগ্য মুক্ত পার্কিং স্পেস না থাকে তবে আপনি শূন্য, একটি নেতিবাচক পূর্ণসংখ্যার, একটি নাল মান বা ত্রুটি ফিরিয়ে দিতে পারবেন।

উদাহরণ

উপরের উদাহরণে ফলাফলটি 32 হবে, কারণ চতুর্থ তলায় যেতে এবং নিকটতম পার্কিং জায়গাতে পার্ক করা সস্তা 3। তৃতীয় তলায় নিকটতম নিখরচায় পার্কিংয়ের স্থানগুলি 33 এবং 34 এর দূরত্বে।

অন্যান্য উদাহরণ:

    1st floor            2nd floor            3rd floor            4th floor
*****************    *****************    *****************    *****************
*               1    *               2    *               3    *               *
* CCCCCCCCCCCCC *    * CCCCCCCCCCCCC *    * ····C··CCCCCC *    * ······C······ *
* ************* *    * ************* *    * ************* *    * ************* *
* CCCCCCCCCCCCC *    * ·CCCCCCCCCCCC *    * ···CCCCCCCCCC *    * ··C·······C·· *
*               *    *               1    *               2    *               3
**********E******    *****************    *****************    *****************

Answer: 28 (now the parking space in the 2nd floor is closer)

    1st floor            2nd floor            3rd floor            4th floor
*****************    *****************    *****************    *****************
*               1    4               2    5               3    6               *
* CCCCCCCCCCCCC *    * CCCCCCCCCCCCC *    * ····C··CCCCCC *    * ······C······ *
* ************* *    * ************* *    * ************* *    * ************* *
* CCCCCCCCCCCCC *    * CCCCCCCCCCCCC *    * ···CCCCCCCCCC *    * ··C·······C·· *
4               *    5               1    6               2    *               3
**********E******    *****************    *****************    *****************

Answer: 24 (now it's better to go to ramp 4 and then to ramp 5 to the third floor)

    1st floor            2nd floor            3rd floor            4th floor
*****************    *****************    *****************    *****************
*               1    *               *    *               3    *               2
* CCCCCCCCCCCCC *    * CCCCCCCCCCCCC *    * ····C··CCCCCC *    * ······C······ *
* ************* *    * ************* *    * ************* *    * ************* *
* CCCCCCCCCCCCC *    * ·CCCCCCCCCCCC *    * ···CCCCCCCCCC *    * ··C·······C·· *
*               *    *               3    *               2    *               1
**********E******    *****************    *****************    *****************

Answer: 16 (now the parking space in the 4th floor is closer)

 1st floor     2nd floor     3rd floor     4th floor     5th floor
************  ************  ************  ************  ************
*CCCCCCCCC 1  *CCCCCCCCC 2  *CCCCCCCCC 3  *·CCCCCCCC 4  *········C *
*          *  *          *  *          *  *          *  *          *
*CCCCCCCCC E  *CCCCCCCCC 1  *CCCCCCCCC 2  *··CCCCCCC 3  *·······CC 4
************  ************  ************  ************  ************

Answer: 29 (both the nearest parking spaces at the 4th and 5th floors are at the same distance)

 1st floor     2nd floor     3rd floor  
************  ************  ************
*CCCCCCCCC 1  *CCCCCCCCC 2  *CCCCCCCCC *
*          *  *          *  *          *
*CCCCCCCCC E  *CCCCCCCCC 1  *CCCCCCCCC 2
************  ************  ************

Answer: -1 (no free parking space)

 1st floor  
************
*          *
*          *
*         E*
************

Answer: -1 (no parking space at all)

 1st floor  
************
* ·····    *
*·      ****
* ····· * E
*********

Answer: -1 (the parking lot designer was a genius)

বিকল্প

  • আপনি পার্কিং লট মানচিত্রের প্রতিনিধিত্ব করতে চান যা কিছু অক্ষর ব্যবহার করতে পারেন, কেবল আপনার উত্তরে নির্দিষ্ট করুন যা আপনার নির্বাচিত অক্ষর এবং সেগুলির অর্থ কি।

এটি , তাই প্রতিটি ভাষার পক্ষে সংক্ষিপ্ততম প্রোগ্রাম / পদ্ধতি / ল্যাম্বদা / যাই হোক না কেন জয়!

আপনার যদি অ্যালগরিদমের সাহায্যের প্রয়োজন হয় তবে দয়া করে আমার # (অলগল্ফড) বাস্তবায়ন সি # তে পরীক্ষা করুন



যেহেতু আমরা স্পষ্টতই পাগল পার্কিং লট ডিজাইনারদের সাথে ডিল করছি, সুতরাং কোনও র‌্যাম্প সরাসরি যেতে পারে, বলুন, 1 তলা থেকে তৃতীয় তলায় যেতে পারে? আমি মনে করি আপনার হয় এই জাতীয় পরীক্ষার কেস যুক্ত করা উচিত (যা বেশ মজাদার হতে পারে) বা ব্যাখ্যা করুন যে এটি ঘটবে না।
আর্নল্ড

2
@ আরনাউল্ড যুক্ত হয়েছে। মোবাইল অ্যাপ্লিকেশন থেকে একটি কঠিন কাজ ...
চার্লি

1
-1 এবার রঙিন ব্লক বা বাচ্চাদের গল্প নেই
লুইস মেন্ডো

1
@ ম্যামজি বলতে চাইছিলাম যে স্ট্যাক এক্সচেঞ্জ মোবাইল অ্যাপ্লিকেশনটির সীমিত ইউআই ব্যবহার করে প্রশ্নের পাঠ্যকে নতুন পরীক্ষার কেস যুক্ত করা একটি কঠিন কাজ ছিল ...
চার্লি

উত্তর:


6

জাভাস্ক্রিপ্ট (ES6), 199 বাইট

চ্যালেঞ্জটিতে বর্ণিত অক্ষরগুলি ব্যবহার করে অক্ষরগুলির অ্যারের অ্যারে হিসাবে একটি ইনপুট নেয়। রিটার্নস0 পার্কিংয়ের নিখরচায় জায়গা না থাকলে।

a=>(m=g=(c,t,f,x,y,F=f||a.find(r=>r.some((a,i)=>~(y=i,x=a.indexOf(c)))),r=F[y])=>r&&(c=r[x])&&(r[x]=g,c>'z'?m=m<t?m:t:!f|c<1?[0,-1,0,1].map((d,i)=>g(0,-~t,F,x+d,y+~-i%2)):+c&&g(c,t+2),r[x]=c))('E')|m

এটি অনলাইন চেষ্টা করুন!

কিভাবে?

পুনরাবৃত্ত ফাংশন জি () ইনপুট হিসাবে গ্রহণ করে:

  • : আমরা কেবল কোনও তল রেখেছি বা আমরা প্রক্রিয়াটির একেবারে শুরুতে থাকলে প্রবেশের পয়েন্টটির চরিত্রটি আমরা খুঁজছি; 0 অন্যথায়
  • T : প্যাচসমূহ মোট সংখ্যা এখন পর্যন্ত (প্রথমদিকে undefined )
  • f , x , y : বর্তমান মেঝেতে একটি পয়েন্টার এবং এই মেঝেতে বর্তমান স্থানাঙ্ক; আমরা যদি নতুন তল খুঁজছি তবে সেগুলি সমস্ত অপরিজ্ঞাত

তাহলে সংজ্ঞায়িত করা হয়, কেবলমাত্র আমরা বর্তমান তলায় কপি এফ । অন্যথায়, আমাদের প্রবেশ তদন্ত সি না পাওয়া পর্যন্ত প্রতিটি তল এবং প্রতিটি সারিতে পুনরাবৃত্তি করে আমাদের নতুন তল এবং নতুন স্থানাঙ্কগুলির সন্ধান করতে হবে :

F = f || a.find(r => r.some((a, i) => ~(y = i, x = a.indexOf(c))))

আমরা আর বর্তমান তলে বর্তমান সারি হিসাবে সংজ্ঞায়িত করেছি :

r = F[Y]

পরবর্তী পদক্ষেপটি নিশ্চিত করা হয় যে (x, y) এ বর্তমান ঘর সি নির্ধারিত হয়েছে:

r && (c = r[x]) && ...

যদি এটি হয় তবে আমরা এটিকে জি তে সেট করে পর্যালোচনা হিসাবে চিহ্নিত করেছি, এটি এমন একটি মান যা আগত পরীক্ষাগুলির কোনওটিকেই ট্রিগার করে না:

r[x] = g

তাহলে একটি বিনামূল্যে পার্কিং স্পেস, আমরা পুনরাবৃত্তির বন্ধ। এবং যদি মোট চলনের সংখ্যাটি আমাদের আগের সেরা স্কোরের চেয়ে কম হয়, আমরা সেই অনুযায়ী মিটার আপডেট করি :

c > 'z' ? m = m < t ? m : t : ...

আমরা শুধু (একটি নতুন মেঝে পৌঁছে গেছেন এমন হয় অনির্দিষ্ট ) অথবা একটি স্থান, আমরা প্রতিটি পার্শ্ববর্তী কক্ষের জন্য একটি recursive কল প্রক্রিয়া:

!f | c < 1 ?
  [0, -1, 0, 1].map((d, i) =>
    g(0, -~t, F, x + d, y + ~-i % 2)
  )
:
  ...

অন্যথায়, সিটি যদি র‌্যাম্প চিহ্নিতকারী হয় (অর্থাত্ একটি শূন্য নয়), আমরা নতুন মেঝেতে পৌঁছানোর জন্য একক পুনরাবৃত্ত কলটি প্রক্রিয়া করি:

+c && g(c, t + 2)

অবশেষে, আমরা বর্তমান কক্ষটিকে এর প্রাথমিক মানটিতে পুনরুদ্ধার করি যাতে এটি অন্যান্য পুনরাবৃত্তির পথে আবার দেখা যায়:

r[x] = c

3

কোটলিন , 768 বাইট

ব্যবহৃত সময়কাল। পরিবর্তে ·. আশা করি আমি আরনোল্ডের উত্তরটি বুঝতে পারলাম কারণ 500 বাইট হারাতে ভাল লাগবে।

fun s(l:List<List<CharArray>>)={val b=listOf(l.size-1,l[0].size-1,l[0][0].size-1)
val e=Int.MAX_VALUE
var r=e
var t=listOf(e,e,e)
val d=Array(b[0]+1){Array(b[1]+1){Array(b[2]+1){e}}}
val f={c:Char,n:List<Int>->var a=t
(0..b[0]).map{f->(0..b[1]).map{r->(0..b[2]).map{var s=listOf(f,r,it)
if(l[f][r][it]==c&&!s.equals(n))a=s}}}
a}
fun m(p:List<Int>,c:Int){if(p[0]in 0..b[0]&&p[1]in 0..b[1]&&p[2]in 0..b[2]&&d[p[0]][p[1]][p[2]]>c){d[p[0]][p[1]][p[2]]=c
val h=l[p[0]][p[1]][p[2]]
when(h){' ','E'->(-1..1 step 2).map{m(listOf(p[0],p[1]+it,p[2]),c+1)
m(listOf(p[0],p[1],p[2]+it),c+1)}
'.'->if(r>c)r=c
in '1'..'9'->{val n=f(h,p)
d[n[0]][n[1]][n[2]]=c+2
(-1..1 step 2).map{m(listOf(n[0],n[1]+it,n[2]),c+3)
m(listOf(n[0],n[1],n[2]+it),c+3)}}}}}
m(f('E',t),0)
if(r<e)r
else-1}()

এটি অনলাইন চেষ্টা করুন!


2

পাওয়ারশেল, 299 292 বাইট

ধারণা করা হচ্ছে মানচিত্রটি আয়তক্ষেত্রাকার

এটি xপরিবর্তে ব্যবহার করে ·। পেতে ·, আপনাকে এএসসিআইআই (ইউটিএফ -8 নয়) হিসাবে স্ক্রিপ্ট সংরক্ষণ করতে হবে এবং এটিকে প্রতিস্থাপন করতে xহবে ·

filter f{$l=($_-split"
")[0].length
$p,$d,$e='x','\d',' '|%{"$_(?=E)|(?<=E)$_|$_(?=[\s\S]{$l}E)|(?<=E[\s\S]{$l})$_"}
for($r=1;$_-notmatch$p;$r++){$m=$_-replace'F','E'-replace'G','F'-replace'H','G'
if($m-match$d){$m=$m-replace$Matches[0],'H'}$m=$m-replace$e,'E'
if($m-eq$_){return -1}$_=$m}$r}

অবহেলিত এবং স্ক্রিপ্ট স্ক্রিপ্ট:

filter f{
    #Write-Host "`nStep:`n$_" # uncomment this to display each step

    $l = ($_ -split "`n")[0].length
    $p,$d,$e = 'x', '\d', ' '| % {"$_(?=E)|(?<=E)$_|$_(?=[\s\S]{$l}E)|(?<=E[\s\S]{$l})$_"}

    for($r = 1;$_ -notmatch $p;$r++) {
        $m = $_ -replace 'F', 'E' -replace 'G', 'F' -replace 'H', 'G'
        if ($m -match $d) {
            $m = $m -replace $Matches[0], 'H'
        }
        $m = $m -replace $e, 'E'

        if ($m -eq $_) {
            return -1
        }

        $_=$m
    }
    $r
}

@(
    , (2, @"
****
*x E
****
"@)
    , (1, @"
****
* xE
****
"@)
    , (1, @"
****
* x*
* E*
****
"@)
    , (1, @"
****
* E*
* x*
****
"@)
    , (-1, @"
****
2 E1
*  *
****
"@)
    , (28, @"
*****************
*               1
* CCCCCCCCCCCCC *
* ************* *
* CCCCCCCCCCCCC *
*               *
**********E******
*****************
*               2
* CCCCCCCCCCCCC *
* ************* *
* xCCCCCCCCCCCC *
*               1
*****************
*****************
*               3
* xxxxCxxCCCCCC *
* ************* *
* xxxCCCCCCCCCC *
*               2
*****************
*****************
*               *
* xxxxxxCxxxxxx *
* ************* *
* xxCxxxxxxxCxx *
*               3
*****************
"@)
    , (16, @"
*****************
*               1
* CCCCCCCCCCCCC *
* ************* *
* CCCCCCCCCCCCC *
*               *
**********E******
*****************
*               *
* CCCCCCCCCCCCC *
* ************* *
* xCCCCCCCCCCCC *
*               3
*****************
*****************
*               3
* xxxxCxxCCCCCC *
* ************* *
* xxxCCCCCCCCCC *
*               2
*****************
*****************
*               2
* xxxxxxCxxxxxx *
* ************* *
* xxCxxxxxxxCxx *
*               1
*****************
"@)
    , (29, @"
************
*CCCCCCCCC 1
*          *
*CCCCCCCCC E
************
************
*CCCCCCCCC 2
*          *
*CCCCCCCCC 1
************
************
*CCCCCCCCC 3
*          *
*CCCCCCCCC 2
************
************
*xCCCCCCCC 4
*          *
*xxCCCCCCC 3
************
************
*xxxxxxxxC *
*          *
*xxxxxxxCC 4
************
"@
    )
    , (-1, @"
************
*          *
*          *
*         E*
************
"@)
    , (-1, @"
************
* xxxxx    *
*x      ****
* xxxxx * E 
*********   
"@)
) | % {
    $e, $m = $_
    $r = $m|f
    "$($e-eq$r): $r $e"
}

আউটপুট:

True: 2 2
True: 1 1
True: 1 1
True: 1 1
True: -1 -1
True: 28 28
True: 16 16
True: 29 29
True: -1 -1
True: -1 -1

16 টি পদক্ষেপ সহ পার্কিংয়ের জন্য বর্ধিত আউটপুট:

Step:
*****************
*               1
* CCCCCCCCCCCCC *
* ************* *
* CCCCCCCCCCCCC *
*               *
**********E******
*****************
*               *
* CCCCCCCCCCCCC *
* ************* *
* xCCCCCCCCCCCC *
*               3
*****************
*****************
*               3
* xxxxCxxCCCCCC *
* ************* *
* xxxCCCCCCCCCC *
*               2
*****************
*****************
*               2
* xxxxxxCxxxxxx *
* ************* *
* xxCxxxxxxxCxx *
*               1
*****************

Step:
*****************
*               1
* CCCCCCCCCCCCC *
* ************* *
* CCCCCCCCCCCCC *
*         E     *
**********E******
*****************
*               *
* CCCCCCCCCCCCC *
* ************* *
* xCCCCCCCCCCCC *
*               3
*****************
*****************
*               3
* xxxxCxxCCCCCC *
* ************* *
* xxxCCCCCCCCCC *
*               2
*****************
*****************
*               2
* xxxxxxCxxxxxx *
* ************* *
* xxCxxxxxxxCxx *
*               1
*****************

Step:
*****************
*               1
* CCCCCCCCCCCCC *
* ************* *
* CCCCCCCCCCCCC *
*        EEE    *
**********E******
*****************
*               *
* CCCCCCCCCCCCC *
* ************* *
* xCCCCCCCCCCCC *
*               3
*****************
*****************
*               3
* xxxxCxxCCCCCC *
* ************* *
* xxxCCCCCCCCCC *
*               2
*****************
*****************
*               2
* xxxxxxCxxxxxx *
* ************* *
* xxCxxxxxxxCxx *
*               1
*****************

Step:
*****************
*               1
* CCCCCCCCCCCCC *
* ************* *
* CCCCCCCCCCCCC *
*       EEEEE   *
**********E******
*****************
*               *
* CCCCCCCCCCCCC *
* ************* *
* xCCCCCCCCCCCC *
*               3
*****************
*****************
*               3
* xxxxCxxCCCCCC *
* ************* *
* xxxCCCCCCCCCC *
*               2
*****************
*****************
*               2
* xxxxxxCxxxxxx *
* ************* *
* xxCxxxxxxxCxx *
*               1
*****************

Step:
*****************
*               1
* CCCCCCCCCCCCC *
* ************* *
* CCCCCCCCCCCCC *
*      EEEEEEE  *
**********E******
*****************
*               *
* CCCCCCCCCCCCC *
* ************* *
* xCCCCCCCCCCCC *
*               3
*****************
*****************
*               3
* xxxxCxxCCCCCC *
* ************* *
* xxxCCCCCCCCCC *
*               2
*****************
*****************
*               2
* xxxxxxCxxxxxx *
* ************* *
* xxCxxxxxxxCxx *
*               1
*****************

Step:
*****************
*               1
* CCCCCCCCCCCCC *
* ************* *
* CCCCCCCCCCCCC *
*     EEEEEEEEE *
**********E******
*****************
*               *
* CCCCCCCCCCCCC *
* ************* *
* xCCCCCCCCCCCC *
*               3
*****************
*****************
*               3
* xxxxCxxCCCCCC *
* ************* *
* xxxCCCCCCCCCC *
*               2
*****************
*****************
*               2
* xxxxxxCxxxxxx *
* ************* *
* xxCxxxxxxxCxx *
*               1
*****************

Step:
*****************
*               1
* CCCCCCCCCCCCC *
* ************* *
* CCCCCCCCCCCCC *
*    EEEEEEEEEEE*
**********E******
*****************
*               *
* CCCCCCCCCCCCC *
* ************* *
* xCCCCCCCCCCCC *
*               3
*****************
*****************
*               3
* xxxxCxxCCCCCC *
* ************* *
* xxxCCCCCCCCCC *
*               2
*****************
*****************
*               2
* xxxxxxCxxxxxx *
* ************* *
* xxCxxxxxxxCxx *
*               1
*****************

Step:
*****************
*               1
* CCCCCCCCCCCCC *
* ************* *
* CCCCCCCCCCCCCE*
*   EEEEEEEEEEEE*
**********E******
*****************
*               *
* CCCCCCCCCCCCC *
* ************* *
* xCCCCCCCCCCCC *
*               3
*****************
*****************
*               3
* xxxxCxxCCCCCC *
* ************* *
* xxxCCCCCCCCCC *
*               2
*****************
*****************
*               2
* xxxxxxCxxxxxx *
* ************* *
* xxCxxxxxxxCxx *
*               1
*****************

Step:
*****************
*               1
* CCCCCCCCCCCCC *
* *************E*
* CCCCCCCCCCCCCE*
*  EEEEEEEEEEEEE*
**********E******
*****************
*               *
* CCCCCCCCCCCCC *
* ************* *
* xCCCCCCCCCCCC *
*               3
*****************
*****************
*               3
* xxxxCxxCCCCCC *
* ************* *
* xxxCCCCCCCCCC *
*               2
*****************
*****************
*               2
* xxxxxxCxxxxxx *
* ************* *
* xxCxxxxxxxCxx *
*               1
*****************

Step:
*****************
*               1
* CCCCCCCCCCCCCE*
* *************E*
* CCCCCCCCCCCCCE*
* EEEEEEEEEEEEEE*
**********E******
*****************
*               *
* CCCCCCCCCCCCC *
* ************* *
* xCCCCCCCCCCCC *
*               3
*****************
*****************
*               3
* xxxxCxxCCCCCC *
* ************* *
* xxxCCCCCCCCCC *
*               2
*****************
*****************
*               2
* xxxxxxCxxxxxx *
* ************* *
* xxCxxxxxxxCxx *
*               1
*****************

Step:
*****************
*              E1
* CCCCCCCCCCCCCE*
* *************E*
* CCCCCCCCCCCCCE*
*EEEEEEEEEEEEEEE*
**********E******
*****************
*               *
* CCCCCCCCCCCCC *
* ************* *
* xCCCCCCCCCCCC *
*               3
*****************
*****************
*               3
* xxxxCxxCCCCCC *
* ************* *
* xxxCCCCCCCCCC *
*               2
*****************
*****************
*               2
* xxxxxxCxxxxxx *
* ************* *
* xxCxxxxxxxCxx *
*               1
*****************

Step:
*****************
*             EEH
* CCCCCCCCCCCCCE*
* *************E*
*ECCCCCCCCCCCCCE*
*EEEEEEEEEEEEEEE*
**********E******
*****************
*               *
* CCCCCCCCCCCCC *
* ************* *
* xCCCCCCCCCCCC *
*               3
*****************
*****************
*               3
* xxxxCxxCCCCCC *
* ************* *
* xxxCCCCCCCCCC *
*               2
*****************
*****************
*               2
* xxxxxxCxxxxxx *
* ************* *
* xxCxxxxxxxCxx *
*               H
*****************

Step:
*****************
*            EEEG
* CCCCCCCCCCCCCE*
*E*************E*
*ECCCCCCCCCCCCCE*
*EEEEEEEEEEEEEEE*
**********E******
*****************
*               *
* CCCCCCCCCCCCC *
* ************* *
* xCCCCCCCCCCCC *
*               3
*****************
*****************
*               3
* xxxxCxxCCCCCC *
* ************* *
* xxxCCCCCCCCCC *
*               2
*****************
*****************
*               2
* xxxxxxCxxxxxx *
* ************* *
* xxCxxxxxxxCxx *
*               G
*****************

Step:
*****************
*           EEEEF
*ECCCCCCCCCCCCCE*
*E*************E*
*ECCCCCCCCCCCCCE*
*EEEEEEEEEEEEEEE*
**********E******
*****************
*               *
* CCCCCCCCCCCCC *
* ************* *
* xCCCCCCCCCCCC *
*               3
*****************
*****************
*               3
* xxxxCxxCCCCCC *
* ************* *
* xxxCCCCCCCCCC *
*               2
*****************
*****************
*               2
* xxxxxxCxxxxxx *
* ************* *
* xxCxxxxxxxCxx *
*               F
*****************

Step:
*****************
*E         EEEEEE
*ECCCCCCCCCCCCCE*
*E*************E*
*ECCCCCCCCCCCCCE*
*EEEEEEEEEEEEEEE*
**********E******
*****************
*               *
* CCCCCCCCCCCCC *
* ************* *
* xCCCCCCCCCCCC *
*               3
*****************
*****************
*               3
* xxxxCxxCCCCCC *
* ************* *
* xxxCCCCCCCCCC *
*               2
*****************
*****************
*               2
* xxxxxxCxxxxxx *
* ************* *
* xxCxxxxxxxCxx *
*              EE
*****************

Step:
*****************
*EE       EEEEEEE
*ECCCCCCCCCCCCCE*
*E*************E*
*ECCCCCCCCCCCCCE*
*EEEEEEEEEEEEEEE*
**********E******
*****************
*               *
* CCCCCCCCCCCCC *
* ************* *
* xCCCCCCCCCCCC *
*               3
*****************
*****************
*               3
* xxxxCxxCCCCCC *
* ************* *
* xxxCCCCCCCCCC *
*               2
*****************
*****************
*               2
* xxxxxxCxxxxxx *
* ************* *
* xxCxxxxxxxCxxE*
*             EEE
*****************
True: 16 16

ব্যাখ্যা

এটি একধরণের লি প্যাথফাইন্ডিং অ্যালগরিদম । কেবল একটি স্মার্ট জিনিস: র‌্যাম্পের 3 টি ধাপটি ডামি রাজ্য হিসাবে উপলব্ধি করা হয়েছেH->G->F->E


প্রতিভা পার্কিং লট ডিজাইনারের জন্য পাওয়ারশেল, 377 369 বাইট

পার্কিং ডিজাইন একটি 2D string array। মানচিত্র সম্পর্কে কোনও ধারনা নেই: কোনও দৈর্ঘ্যের স্ট্রিং, দেয়ালবিহীন মেঝে, কোনও এন্ট্রি পয়েন্ট ছাড়াই পার্কিং, মাল্টি-ফ্লোর এবং মাল্টি-এক্সিজিট-র‌্যাম্প। জেনাস ব্যয় + 26%।

filter f{for($r=1;$_-notmatch$p;$r++){$m=$_-replace'F','E'-replace'G','F'-replace'H','G'
if($m-match$d){$m=$m-replace$Matches[0],'H'}$m=$m-replace$e,'E'
if($m-eq$_){return-1}$_=$m}$r}$g={$l=($args|%{$_|%{$_.length}}|sort)[-1]
$p,$d,$e='x','\d',' '|%{"$_(?=E)|(?<=E)$_|$_(?=[\s\S]{$l}E)|(?<=E[\s\S]{$l})$_"}
(($args|%{$_.PadRight($l,'*')-join"
"})-join"
"+'-'*$l+"
")|f}

অবহেলিত এবং স্ক্রিপ্ট স্ক্রিপ্ট:

filter f{
    #Write-Host "`nStep:`n$_" # uncomment this to display each step

    for($r = 1;$_ -notmatch $p;$r++) {
        $m = $_ -replace 'F', 'E' -replace 'G', 'F' -replace 'H', 'G'
        if ($m -match $d) {
            $m = $m -replace $Matches[0], 'H'
        }
        $m = $m -replace $e, 'E'

        if ($m -eq $_) {
            return -1
        }

        $_=$m
    }
    $r
}

$g = {

    $l = ($args| % {$_| % {$_.length}}|sort)[-1]
    $p,$d,$e = 'x', '\d', ' '| % {"$_(?=E)|(?<=E)$_|$_(?=[\s\S]{$l}E)|(?<=E[\s\S]{$l})$_"}
    (($args| % {$_.PadRight($l, '*') -join "`n"}) -join "`n"+'-' * $l+"`n")|f

}


@(
    , (2, @(, (
                "****",
                "*x E",
                "****"
            )))
    , (1, @(, (
                "****",
                "* xE",
                "****"
            )))
    , (1, @(, (
                "****",
                "* x*",
                "* E*",
                "****"
            )))
    , (1, @(, (
                "****",
                "* E*",
                "* x*",
                "****"
            )))
    , (-1, @(, (
                "****",
                "2 E1",
                "*  *",
                "****"
            )))
    , (28, @(, (
                "*****************",
                "*               1",
                "* CCCCCCCCCCCCC *",
                "* ************* *",
                "* CCCCCCCCCCCCC *",
                "*               *",
                "**********E******"
            ), (
                "*****************",
                "*               2",
                "* CCCCCCCCCCCCC *",
                "* ************* *",
                "* xCCCCCCCCCCCC *",
                "*               1",
                "*****************"
            ), @(
                "*****************",
                "*               3",
                "* xxxxCxxCCCCCC *",
                "* ************* *",
                "* xxxCCCCCCCCCC *",
                "*               2",
                "*****************"
            ), @(
                "*****************",
                "*               *",
                "* xxxxxxCxxxxxx *",
                "* ************* *",
                "* xxCxxxxxxxCxx *",
                "*               3",
                "*****************"
            )))
    , (16, @(, (
                "*****************",
                "*               1",
                "* CCCCCCCCCCCCC *",
                "* ************* *",
                "* CCCCCCCCCCCCC *",
                "*               *",
                "**********E******"
            ), @(
                "*****************",
                "*               *",
                "* CCCCCCCCCCCCC *",
                "* ************* *",
                "* xCCCCCCCCCCCC *",
                "*               3",
                "*****************"
            ), @(
                "*****************",
                "*               3",
                "* xxxxCxxCCCCCC *",
                "* ************* *",
                "* xxxCCCCCCCCCC *",
                "*               2",
                "*****************"
            ), @(
                "*****************",
                "*               2",
                "* xxxxxxCxxxxxx *",
                "* ************* *",
                "* xxCxxxxxxxCxx *",
                "*               1",
                "*****************"
            )))
    , (29, @(, (
                "************",
                "*CCCCCCCCC 1",
                "*          *",
                "*CCCCCCCCC E",
                "************"
            ), @(
                "************",
                "*CCCCCCCCC 2",
                "*          *",
                "*CCCCCCCCC 1",
                "************"
            ), @(
                "************",
                "*CCCCCCCCC 3",
                "*          *",
                "*CCCCCCCCC 2",
                "************"
            ), @(
                "************",
                "*xCCCCCCCC 4",
                "*          *",
                "*xxCCCCCCC 3",
                "************"
            ), @(
                "************",
                "*xxxxxxxxC *",
                "*          *",
                "*xxxxxxxCC 4",
                "************"
            )))
    , (-1, @(, (
                "************",
                "*          *",
                "*          *",
                "*         E*",
                "************"
            )))
    , (-1, @(, (
                "************",
                "* xxxxx    *",
                "*x      ****",
                "* xxxxx * E",
                "*********"
            )))
) | % {
    $e, $m = $_
    $r = &$g @m
    "$($e-eq$r): $r $e"
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.