মাঠে সর্বোচ্চ স্কোর


18

ভূমিকা

ক্ষেত্রটি কেবলমাত্র অক্ষর -এবং দিয়ে পূর্ণ আয়তক্ষেত্র হতে দিন [0-9]। একটি ক্ষেত্রের উদাহরণ:

11-011123
111-010--
0010---01
111-01234

আপনি দেখতে পাচ্ছেন যে এই ক্ষেত্রটি তিনটি ছোট অঞ্চলে বিভক্ত হয়েছে:

এখানে চিত্র বর্ণনা লিখুন

একটি ছোট ক্ষেত্রের স্কোর গণনা করতে, আমরা কেবল সমস্ত সংখ্যার যোগ করি। উদাহরণ স্বরূপ:

11
111
0010
111

1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 = 9

এই অঞ্চলে মোট স্কোর 9 । আমরা এখন দ্বিতীয় ক্ষেত্রের জন্য একই কাজ করছি:

   011123
    010

0 + 1 + 1 + 1 + 2 + 3 + 0 + 1 + 0 = 9

মোট স্কোরও 9 । এখন আমাদের শেষ অঞ্চলটি পরীক্ষা করতে হবে:

       01
    01234

0 + 1 + 0 + 1 + 2 + 3 + 4 = 11

এটির মোট স্কোর ১১ টি । মাঠে সর্বোচ্চ স্কোর 11, সুতরাং এটি আমাদের আউটপুট করা দরকার need

কাজটি

একটি ক্ষেত্র দেওয়া (একটি 2D স্ট্রিং, একটি অ্যারে ইত্যাদি আকারে), ক্ষেত্রের সর্বোচ্চ স্কোর আউটপুট । আপনি ধরে নিতে পারেন যে প্রদত্ত ক্ষেত্রগুলি সর্বদা কমপক্ষে 1 ডিজিটযুক্ত থাকবে । এটি , তাই সর্বনিম্ন পরিমাণ বাইটের সাথে জমাটি জয়!

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

পরীক্ষার কেস 1:

Input:
1

Output:
1

পরীক্ষার কেস 2:

Input:
1-1-1-1
-1-1-1-
2-1-1-1
-1-1-1-

Output:
2

পরীক্ষার কেস 3:

Input:
12-45-
4-65-9
87-654
12-487
45----
684764

Output:
69

পরীক্ষার কেস 4:

Input:
111-12
------
21--10

Output:
3

1
বাহ ... চমৎকার চ্যালেঞ্জ।
আর কাপ,

"0010 --- 01" এর পরিবর্তে ["0010", "", "", "01"] নয়?
ভেন

এছাড়াও "111-01234", তাই না কেন ["111", "01234"]?
ভেন

আমি বুঝতে পারছি না। আমি ভাবি -অঞ্চলগুলি কি বিচ্ছিন্ন? দয়া করে আপনি কী "একটি অঞ্চলকে সংজ্ঞায়িত করেন" অংশটি আরও পরিষ্কার করতে পারেন?
ভেন

আপনি কি দয়া করে ব্যাখ্যা করতে চ্যালেঞ্জটির শব্দটি লিখতে পারেন?
ভেন

উত্তর:


3

এমএটিএল , 54 51 49 বাইট

n:"G~1@(2Y6Z+leG45>1e*5M@)*]vtz:"otY*g]G48-X:*sX>

ইনপুটটি এমএটিএল (এবি) ফর্ম্যাটে একটি 2D চর অ্যারে, ;সারি বিভাজক হিসাবে। উদাহরণ এবং পরীক্ষার ক্ষেত্রে ইনপুট যথাক্রমে:

['11-011123';'111-010--';'0010---01';'111-01234']
['1']
['1-1-1-1';'-1-1-1-';'2-1-1-1';'-1-1-1-']
['12-45-';'4-65-9';'87-654';'12-487';'45----';'684764']
['111-12';'------';'21--10']

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

ব্যাখ্যা

এটি "সংযুক্ত থাকা" সম্পর্কের দ্বারা সংজ্ঞায়িত গ্রাফের একটি সংলগ্ন ম্যাট্রিক্স তৈরি করে কাজ করে। উদাহরণ হিসাবে, 3 × 4 ক্ষেত্র বিবেচনা করুন

52-4
15-8
3-72

2 ডি অ্যারেতে প্রবেশগুলি এমএটিএলে সহজেই (কলাম-মেজর) লিনিয়ার সূচক ব্যবহার করে বর্ণনা করা হয়। 3 × 4 ক্ষেত্রে, প্রতিটি প্রবেশের রৈখিক সূচক হিসাবে দেওয়া হয়

1  4  7 10
2  5  8 11
3  6  9 12

সংলগ্ন ম্যাট্রিক্স ম্যাট্রিক্স গুণন ব্যবহার করে পদক্ষেপে নির্মিত। প্রথম পদক্ষেপে, অবিলম্বে প্রতিবেশীদের বিবেচনা করা হয়। উদাহরণস্বরূপ, সূচকযুক্ত বিন্দুটি 3 এবং নিজের সাথে সূচক 2 এর প্রতিবেশী It's এটি 6 এর প্রতিবেশী নয় কারণ সেই বিন্দুটিতে ক্ষেত্র অনুসারে কোনও সংখ্যা নেই। এই উদাহরণে "তাত্ক্ষণিক প্রতিবেশী" সম্পর্কের সংলগ্ন ম্যাট্রিক্সটি 12 × 12 ম্যাট্রিক্স এল হিসাবে দেওয়া হয়েছে

1 1 0 1 0 0 0 0 0 0 0 0
1 1 1 0 1 0 0 0 0 0 0 0
0 1 1 0 0 0 0 0 0 0 0 0
1 0 0 1 1 0 0 0 0 0 0 0
0 1 0 1 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 0 0 1
0 0 0 0 0 0 0 0 0 1 1 0
0 0 0 0 0 0 0 0 0 1 1 1
0 0 0 0 0 0 0 0 1 0 1 1

(এটা দেখা করতে পারে কলাম 3 মান আছে 1সারি 2 এবং 3. এ) এই ম্যাট্রিক্স সবসময় প্রতিসম এবং তার তির্যক মূল্য আছে 1পয়েন্ট যে থাকে না জন্য -

পরবর্তী পদক্ষেপটি হবে " এর মধ্যে সর্বাধিক এক বিন্দুর সাথে সংযুক্ত" সম্পর্কের সংলগ্ন ম্যাট্রিক্স । এটি পেতে, এটি নিজে থেকে এলকে গুণ করা এবং ননজারো এন্ট্রি সেট করা যথেষ্ট 1। সাধারণভাবে, " কিছু পথ দ্বারা সংযুক্ত ", এম এর সম্পর্কের সংলগ্ন ম্যাট্রিক্সটি এলকে একটি ঘেরে বাড়িয়ে (ম্যাট্রিক্স অর্থে) প্রাপ্ত করা হয় যা সর্বোচ্চ সম্ভাব্য পথ দৈর্ঘ্যের প্রতিনিধিত্ব করে। সর্বাধিক পাথ দৈর্ঘ্যের উপরের সীমাটি হ'ল এল-তে ননজারো প্রবেশের সংখ্যা ।

সরাসরি ম্যাট্রিক্স পাওয়ার গণনা করার ফলে ওভারফ্লো হতে পারে, কারণ প্রচুর সংখ্যক দ্রুত ঘটে। সুতরাং ধীরে ধীরে একই ম্যাট্রিক্স দিয়ে গুন করা, নানজারো এন্ট্রিগুলিকে প্রতিটি পদক্ষেপের পরে 1 এ রূপান্তর করতে বৃহত সংখ্যক বাড়ানো থেকে রোধ করা ভাল।

কলাম আমি এর এম পয়েন্ট যে বিন্দু দিয়ে (যে কোন পথ দ্বারা) সংযুক্ত আছেন প্রতিনিধিত্ব করে আমি । এখন, স্তর ক্ষেত্রটি রৈখিক ক্রমে কলাম ভেক্টর সি- তে হ্রাস করা যেতে পারে , যেখানে প্রতিটি এন্ট্রিতে সংশ্লিষ্ট নম্বর বা একটি অপরিবর্তিত মান থাকে -। সুতরাং এই ক্ষেত্রে সি হবে

5
1
3
2
5
-
-
-
7
4
8
2

এর প্রতিটি কলামের Mutiplying এম দ্বারা উপাদান ভিত্তিক এবং প্রতিটি কলামের যোগফল কম্পিউটিং দেয়, প্রতিটি পয়েন্টের জন্য আমি , এলাকার বিন্দু মোট স্কোর আমি জন্যে। একটি অঞ্চল পারস্পরিক সংযোগযুক্ত সমস্ত পয়েন্ট দ্বারা সংজ্ঞায়িত করা হয়। নোট করুন যে অনেক কলাম একই ফলাফল দেবে; যথা, কলাম আমি এবং একই যোগফল যদি পয়েন্ট দিতে হবে আমি এবং (একই এলাকায় অন্তর্গত) সংযুক্ত করা হয়। চূড়ান্ত ফলাফল those পরিমাণগুলির সর্বাধিক।

        % Implicitly take input: 2D char array
n:      % Range [1,...,N], where N is number of entries in the input
"       % For loop. Each iteration builds a row of matrix L
  G     %   Push input again
  ~     %   Logical negate: transform into matrix of zeros
  1     %   Push 1, to be written into a matrix entry
  @     %   Iteration index. Ranges from 1 to N
  (     %   Write that 1 into the N-th entry (linear order)
  2Y6   %   Push array [0 1 0; 1 1 1; 0 1 0]: mask of immediate neighbours
  Z+    %   Convolve and keep same-size result
  le    %   Linearize into row array
  G45>  %   Array of same size as the input that contains 1 for numbers, 0 for '-'
  1e    %   Linearize into row array
  *     %   Multiply element-wise
  5M    %   Push last array again: 1 for numbers, 0 for '-'
  @)    %   Get 0 or 1 value of that array corresponding to current iteration
  *     %   Multiply. This is to give a row of zeros for non-numbers
]       % End. We have all rows of L in the stack
v       % Concatenate all rows into a matrix: L.
tz:     % Duplicate. Range [1,...,K], where K is the number of nonzeros in L
"       % For loop. Repear K times. This loop computes the 0/1 matrix power
  o     %   Convert matrix entries to double
  tY*   %   Duplicate and matrix-multiply
  g     %   Convert to logical values, that is, nonzero values become 1
]       % End. We have matrix M
G48-    % Convert input chars to the corresponding numbers by subtractig 48
X:      % Linearize into column array. This is vector c
*       % Element-wise multiplication with broadcast (implicit repetition)
s       % Sum of each column. Gives a row array
X>      % Maximum of that row array
        % Implicitly display

3

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

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

ব্যাখ্যা

স্ট্রিং হিসাবে একটি ইনপুট ক্ষেত্র নেয়। ক্ষেত্রের প্রতিটি সংখ্যার জন্য, এলাকার সমস্ত সংখ্যার যোগফল। এটি ক্ষেত্রের প্রতিটি সংখ্যাকে একাধিকবার পুনরাবৃত্তি করে এটি করে, সংলগ্ন ঘরে যদি পূর্বে গণনা করা সংখ্যা থাকে তবে স্কোরটিতে নম্বর যুক্ত করে। উল্লিখিত সংখ্যাগুলি যা এই অঞ্চলের অংশ তাদের 99 এ সেট করে প্রতিনিধিত্ব করা হয় যাতে তারা আর গণনা না করে। একটি সংখ্যা হিসাবে সর্বোচ্চ স্কোর আউটপুট।

var solution =

s=>
  [...o=s].map((n,i)=>o=n<'.'|             // for each number on the field
                                           // n = area score
      (a=[...s])                           // a = array of each field character
      .map(_=>                             // loop to ensure whole area is found
        a.map((c,j)=>                      // for each cell c at index j
          c>'-'&c<10&                      // if the current cell is a number
          (a[j+1]|a[j-1]|a[j+l]|a[j-l])>90 // and an adjacent cells is in the area
          ?a[n-=-c,j]=99:0                 // add the cell to the area
        ),                                 // and the number to the score
        a[i]=99                            // mark the starting cell as counted
      )
      |o>n?o:n,                            // o = output (max of o and n)
    l=~s.search`
`                                          // l = line length of field
  )
  |o                                       // return o
<textarea id="input" rows="6" cols="40">12-45-
4-65-9
87-654
12-487
45----
684764</textarea><br />
<button onclick="result.textContent=solution(input.value)">Go</button>
<pre id="result"></pre>


2

পাইথ, 93 বাইট

A,hlh.zjJ\-.zKsm?qdJd\#HD'b=KXKbJR+i@HbTsm?&&gd0<dlKq@Kd\#'d0[tbhb-bG+bG;Wh=NxK\#=+Y'N)h.MZY

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

কিভাবে এটা কাজ করে


প্রথম পদক্ষেপ: ইনপুট পড়ুন

A,hlh.zjJ\-.zKsm?qdJd\#H
A,                           Assign the following to G and H:
  hlh.z                          G = increment(length(first(all_input())))
       jJ\-.z                    H = join(J="-",all_input())
                m       H    for d in H:
                 ?qdJ            if equal(d,J):
                     d               add d to the list
                                 else:
                      \#             add "#" to the list
                             end
               s             sum the list
              K              assign to K

Sample input:
11-011123
111-010--
0010---01
111-01234

G = 10
H = "11-011123-111-010---0010---01-111-01234" (note the extra dashes connecting each line)
J = "-"
K = "##-######-###-###---####---##-###-#####"

দ্বিতীয় পদক্ষেপ: একটি ক্ষেত্র মূল্যায়নের জন্য একটি ফাংশন সংজ্ঞায়িত করুন

D'b=KXKbJR+i@HbTsm?&&gd0<dlKq@Kd\#'d0[tbhb-bG+bG;
D'b                                             ;  def quote(b):
   =KXKbJ                                              K[b] = J
         R+                                            return the sum of A and B, where:
           i@HbT                                         A = to_integer(H[b],10)

                 m                   [tbhb-bG+bG         for d in {dec(b), inc(b), minus(b,G), add(b,G)}:
                  ?&&                                      if .... and ........ and ............... :
                     gd0                                      d>=0
                        <dlK                                           d<len(K)
                            q@Kd\#                                                  equal(K[d],"#")
                                  'd                           add quote(d) to temp_list
                                                           else:
                                    0                          add 0 to temp_list
                s                                        B = sum(temp_list)

Basically, this function (quote) is given a starting
point (b), and then recursively find its neighbour and
add their values to the output.

তৃতীয় পদক্ষেপ: সমস্ত অঞ্চল পড়ুন এবং সর্বাধিক সন্ধান করুন

Wh=NxK\#=+Y'N)h.MZY
Wh=NxK\#     )         while inc(N=find(K,"#")):   --while K still has "#"
        =+Y'N              Y+= quote(N)
               .MZY    find the maximum of Y,
              h        then print the first.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.