সূঁচের খড়ের সন্ধান করুন


18

একটি খড়ের গাদা মধ্যে একটি সুচ খোঁজার উপর একটি সুতা, আপনি বৃহত্তম সংলগ্ন ধারণকারী খড়ের গাদা বের করতে হবে ঠিক এক সুই । মনে রাখবেন যে আপনি ঘরগুলিকে विकर्णে সংযুক্ত করতে পারবেন না, কেবল বাম / ডান / উপরে / নীচে down

ইনপুট

'N'(সূঁচ) এবং '#'(খড়ের) অক্ষরের একটি অ্যারে (বা ব্যবহারকারীর বেশ কয়েকটি ইনপুট লাইন, আপনার চয়ন) । ইনপুটটিতে কেবলমাত্র এই দুটি অক্ষর রয়েছে এবং প্রতিটি অন্তত একটির অন্তত একটি থাকতে হবে। উদাহরণ স্বরূপ:

N#N#N
#NN##
###N#
N##N#

আউটপুট

বৃহত্তম সম্ভাব্য বৈধ খড়ের আকার। আমাদের উদাহরণস্বরূপ, আমরা 11 আউটপুট করব (খড়ের 11 টুকরো এবং একটি সূঁচ আছে)।

   # 
#  ##
###N#
 ## #

এটি , তাই সংক্ষিপ্ততম কোড জিততে পারে। স্ট্যান্ডার্ড লুফোলের বিধিনিষেধগুলি প্রযোজ্য।

পরীক্ষার মামলা

বাম দিকে ইনপুট, ডানদিকে সম্ভব সর্বাধিক খড়ের খালি

মামলা 1: 4

N##    ##
NN#     #
#NN     N
#N#     #

মামলা 2: 7

###   ###
N#N    # 
NNN    N 
###   ###

কেস 3: 10

N###N    ### 
#N#N#   #N#  
#N#N#   # #  
N###N    ###

মামলা 4: 10

N#N#N        
#N#N#   # # #
##N##   ##N##
#N#N#   # # #
N#N#N        

মামলা 5: 1

NN#NN        
NNNNN         
#NNN#   #N    
NN#NN        

উত্তর:


4

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

s=>[...s].map((n,i)=>n>'M'&&(a=[...s],a[i]=r=1,a.map(_=>a.map((c,j)=>c=='#'&&a[j+1]|a[j-1]|a[j+l]|a[j-l]?a[j]=++r:0)),o=r>o?r:o),o=0,l=~s.search`
`)|o-1

ব্যাখ্যা

ইনপুটটির প্রতিটি সূঁচের জন্য, খড়খড়ির একটি অংশে সূচকে সেট করে (এটি একটি শূন্য-বিন্যাসে সেট করে উপস্থাপন করা হয়) এবং ক্রমাগত খড়কোষগুলি পরীক্ষা করে। যদি খড়ের খড়ের স্তুপের সংলগ্ন অংশ থাকে তবে এটি খড়ের খণ্ডের একটি অংশও সেট করে এবং খড়ের স্ট্যাকের আকার বাড়ায়। সর্বোচ্চ ফলাফল ফলাফল।

var solution =

s=>
  [...s].map((n,i)=>n>'M'&&(          // for each needle in s at index i
      a=[...s],                       // a = array of each character in s
      a[i]=1,                         // set the starting needle to 1 (haystack)
      r=0,                            // r = haystack size starting from this needle
      a.map(_=>                       // loop to ensure the complete haystack is found
        a.map((c,j)=>                 // for each cell c at index j
          c=='#'&&                    // if the current cell is hay
          a[j+1]|a[j-1]|a[j+l]|a[j-l] // and any adjacent cells are part of the haystack
          ?a[j]=++r:0                 // add the current cell to the haystack, increment r
        )
      ),
      o=r>o?r:o                       // o = max of o and r
    ),
    o=0,                              // o = final output, initialise to 0
    l=~s.search`
`                                     // l = line length of s
  )
  |o                                  // return o
<textarea id="input" rows="6" cols="40">N#N#N
#N#N#
##N##
#N#N#
N#N#N</textarea><br />
<button onclick="result.textContent=solution(input.value)">Go</button>
<pre id="result"></pre>


4

রুবি, 207

->a{d=->b{0...b.size}
f=c=s=->y,x{(d[a]===y&&d[a[0]]===x&&!f[y][x]&&a[y][x]==c)?(c,f[y][x]=?#,1
1+s[y,x-1]+s[y,x+1]+s[y-1,x]+s[y+1,x]):0}
d[a].map{|y|d[y].map{|x|f,c=a.map{|b|b.map{p}},?N
s[y,x]}.max}.max-1}

এটি একটি বেনামে ফাংশন যা ইনপুটটিকে অ্যারের অ্যারে হিসাবে গ্রহণ করে। ব্যবহার:

f=->a{......}

f["
N##
NN#
#NN
#N#
".strip.split.map(&:chars)] # => 4

sপ্রকৃত নামের ক্রাকটি নির্দিষ্ট স্থানাঙ্কগুলিতে সূর্যের সাথে খড়ের আকারের সন্ধান করে এবং খড়ের প্রতিটি সুইতে ডাকা হয়।

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