সর্বাধিক লাইনটি সন্ধান করুন


14

আপনাকে পূর্ণসংখ্যার একটি 2-ডি অ্যারে এ এবং একটি দৈর্ঘ্য এন দেওয়া হবে। আপনার কাজটি অ্যারের মধ্যে এন উপাদানগুলির সর্বাধিক মোট যোগফল প্রদান করে এমন সরলরেখার (অনুভূমিক, উল্লম্ব বা তির্যক) সন্ধান করে এবং সেই যোগফলটি প্রদান করবে ।

উদাহরণ

 N = 3, A = 
 3    3    7    9    3
 2    2   10    4    1
 7    7    2    5    0
 2    1    4    1    3

এই অ্যারেটিতে 34 টি বৈধ লাইন রয়েছে

 Vertical
 [3]   3    7    9    3
 [2]   2   10    4    1
 [7]   7    2    5    0
  2    1    4    1    3       [3,2,7] = 12
 Horizontal
  3    3    7    9    3
  2    2   10    4    1
  7    7   [2]  [5]  [0]
  2    1    4    1    3       [2,5,0] = 7
 Diagonal
  3    3   [7]   9    3
  2    2   10   [4]   1
  7    7    2    5   [0]
  2    1    4    1    3       [7,4,0] = 11

সর্বোচ্চ লাইন হয়

 3    3    7   [9]   3
 2    2  [10]   4    1
 7   [7]   2    5    0
 2    1    4    1    3        [7,10,9] = 26

দ্রষ্টব্য: রেখাগুলি অ্যারের প্রান্তগুলির চারপাশে মোড়ানো নাও হতে পারে।

ইনপুট

  • এক্স, ওয়াই 2-ডি অ্যারের দ্বারা এক্স, ওয়াই> 0 সহ অ্যারের প্রতিটি উপাদানটিতে একটি পূর্ণসংখ্যার মান থাকে যা ইতিবাচক, শূন্য বা নেতিবাচক হতে পারে। আপনি যদি চান তবে বিকল্প অ্যারেমে এই অ্যারে গ্রহণ করতে পারেন (উদাহরণস্বরূপ 1-D অ্যারেগুলির তালিকা)।
  • একটি একক, ধনাত্মক পূর্ণসংখ্যা N, সর্বোচ্চ (এক্স, ওয়াই) এর চেয়ে বড় নয়।

আউটপুট

  • সর্বাধিক রেখার যোগফলকে উপস্থাপন করে এমন একক মান যা অ্যারেতে পাওয়া যাবে। মনে রাখবেন যে আপনাকে সেই লাইনের পৃথক উপাদান সরবরাহ করতে হবে না যেখানে এটি অবস্থিত।

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

N = 4, A = 
-88    4  -26   14  -90
-48   17  -45  -70   85
 22  -52   87  -23   22
-20  -68  -51  -61   41
Output = 58

N = 4, A =
 9    4   14    7
 6   15    1   12
 3   10    8   13
16    5   11    2
Output = 34

N = 1, A = 
 -2
Output = -2

N = 3, A =
1    2    3    4    5
Output = 12

N = 3, A = 
-10   -5    4
 -3    0   -7
-11   -3   -2
Output = -5 

ফলস্বরূপ আউটপুট নেতিবাচক যেখানে আপনি একটি পরীক্ষা কেস যুক্ত করতে পারেন? লাইক [[-10, -5, 4],[-3, 0, -7],[-11,-3,-2]]-> -5( 4 + -7 + -2)
— কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন শিওর, যোগ করেছেন
— ব্যবহারকারী 2390246

1
যাইহোক, ব্যাখ্যা সহ সমস্ত উত্তরগুলি আমার কাছ থেকে উত্সাহ অর্জন করবে, তবে অন্যথায় আমি যে ভাষার সাথে পরিচিত নই তাদের বিচার করার উপায় নেই (এবং এটি বেশিরভাগ ক্ষেত্রেই)।
— ব্যবহারকারী 2390246

উত্তর:


10

জেলি , 15 বাইট

,ZṚ¥;ŒD$+⁹\€€FṀ

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

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

,ZṚ¥;ŒD$+⁹\€€FṀ  Main link. Left argument: M (matrix). Right argument: n (integer)

 ZṚ¥             Zip/transpose and reverse M. This is equivalent to rotating M 90°
                 counterclockwise.
,                Pair M and the result to the right.
    ;ŒD$         Append the diagonals of both matrices to the pair.
        +⁹\€€    Take the sums of length n of each flat array.
             FṀ  Flatten and take the maximum.

¥সেখানে দুর্দান্ত অপব্যবহার ...
— এরিক দ্য আউটগল্ফার

ভবিষ্যতের (নতুন) ব্যবহারকারীদের জন্য: $একটি মোনাড তৈরি করে ZṚ, যখন ¥একটি ডায়াড তৈরি করে ZṚযা থেকে তার বাম অপারেণ্ডে প্রয়োগ করা একই ফাংশনের (90 সিসিডব্লু ঘোরানো) ফলাফল প্রদান করে। যা প্যাটার্নের সাথে মেলে + ×এবং মূল্যায়ন করুন v+(λ×ρ)(এটি v = v , (M ZṚ¥ n)এই ক্ষেত্রে রয়েছে)। তবে কেবল ব্যবহার $কাজ করে না কারণ + Fডায়াডিক চেইনে কোনও প্যাটার্ন নেই ।
— ব্যবহারকারী 202729

6

ওল্ফ্রাম ভাষা (গণিত) , 73 বাইট matic

Max[Tr/@Join[#,#,{#,Reverse@#}]&/@Join@@Partition[#2,{#,#},1,1,-∞]]&

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

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

ইনপুট হিসাবে প্রথমে Nম্যাট্রিক্স নেয় A।

Join@@Partition[#2,{#,#},1,1,-∞]খুঁজে বের করে যে Nদ্বারা Nম্যাট্রিক্স submatrix Aসঙ্গে padded -∞যেখানে প্রয়োজন গ্রিড চলমান আউট যে লাইন নিশ্চিত করার চলমান থেকে বের হতে হবে।

এই ব্লকের প্রত্যেকটির জন্য আমরা গণনা করছি Tr/@Join[#,#,{#,Reverse@#}]: প্রতিটি সারির ট্রেস (অর্থাত্ যোগফল), প্রতিটি কলামের ট্রেস (অর্থাত্ যোগফল), ব্লকের ম্যাথমেটিক কোড গল্ফিংয়ের ইতিহাসে প্রথমবারের মতো ট্রেস ( আসলে ট্রেস) , এবং ব্লকের ট্রেসটি বিপরীত হয়েছে। #হয় Transpose@#।

তারপরে আমরা Maxএই সমস্তগুলির সন্ধান করি।


জন্য সবচেয়ে ইনপুট, 57-বাইট Max@BlockMap[Tr/@Join[#,#,{#,Reverse@#}]&,#2,{#,#},1]&এছাড়াও কাজ করে। তবে সারি বা কলামের চেয়ে কম -∞ক্ষেত্রে এবং প্যাডিং সমর্থন করে না এমন কেসগুলি পরিচালনা করতে আমাদের প্যাড করা দরকার । ANBlockMap
— মিশা লাভরভ

1
টিআইও-বান্ধব সংস্করণ (ম্যাথমেটিকা ​​স্ক্রিপ্ট মোড) এর জন্য: U + F3C7 ( \[Transpose]) অক্ষরটি টাইপ করা যায় \:f3c7।
— ব্যবহারকারী 202729

3
এছাড়াও আমি বিশ্বাস করি এটি প্রথমবার Trট্রেস হিসাবে ব্যবহৃত হয় না ।
— ব্যবহারকারী 202729

ধন্যবাদ! এবং যখন আমি অতিরঞ্জিত করছি না, তখন আমি নিশ্চিত যে Trম্যাট্রিক্সের ট্রেসটি এর আগে যেমন প্রকাশিত হয়েছে ততটাই ব্যবহার করা হয়েছে তবে এটি এখনও বিরল এবং আশ্চর্যজনক।
— মিশা লাভরভ

3
আমি জানি আমি এটি আগে বলেছিলাম, তবে নন-এসসিআইআই কোডটি এখন ঠিক ঠিক কাজ করা উচিত। এটি অনলাইন চেষ্টা করুন!
— ডেনিস

4

গণিত, 135 123 বাইট

Max[(s=#;r=#2;Max[Tr/@Partition[#,r,1]&/@Join[s,s~Diagonal~#&/@Range[-(t=Tr[1^#&@@s])+2,t-1]]])&@@@{#|#2,Reverse@#|#2}]&


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


কিছু অপ্টিমাইজেশন: Diagonal[s,#]থেকে s~Diagonal~#, এবং {{Transpose@#,#2},{Reverse@#,#2}}করতে {#|#2,Reverse@#|#2}। (মুদ্রণযোগ্য টি ইউ + এফ 3 সি 7 = \[Transpose]; টিআইও যদিও এটি পছন্দ করবে বলে মনে হয় না {Transpose@#|#2,Reverse@#|#2}
— Al

@ জংহওয়ানমিন এটি টিআইওর দোষ নয়, টিআইও-তে ম্যাথামেটিকাকে স্ক্রিপ্ট মোডে চালিত করা হয়, যা কেবলমাত্র এএসসিআইআইকে সমর্থন করে। আপনাকে টাইপ করতে হবে \[Transpose]বা \:f3c7(কমপক্ষে পরেরটির চেয়ে কম ছোট Thread@) তবে উত্তরটি যদি ম্যাথমেটিকা ​​আরপিএল হয় (ম্যাথমেটিক স্ক্রিপ্ট নয়) তবে আপনি 3-বাইট সমাধানটি ধরে নিতে পারেন।
— ব্যবহারকারী 202729

@ user202729 ধন্যবাদ, জানতেন না!
— জংহওয়ান মিনি মিনিট


3

জাভাস্ক্রিপ্ট, 151 129 বাইট

a=>n=>a.map((l,x)=>l.map((v,y)=>[...'01235678'].map(d=>m=(g=i=>i--&&g(i)+(a[x+d%3*i-i]||[])[y+i*~-(d/3)])(n)>m?g(n):m)),m=-1/0)|m

কারি ফাংশনটিতে দুটি আর্গুমেন্ট লাগে, প্রথমটি হ'ল সংখ্যার অ্যারে, দ্বিতীয়টি একটি সংখ্যা।

আরনাউল্ডকে ধন্যবাদ , 20+ বাইট সংরক্ষণ করুন।


1/sপরিবর্তে s==sপ্রত্যাশা হিসাবে কাজ করা উচিত।
— আর্নৌল্ড

দুটিই এভালের হাত থেকে মুক্তি পাওয়া: 130 বাইট
— আর্নাউল্ড

@ আরনাউল্ড ধন্যবাদ এবং 1 বাইট সংরক্ষণ (s=(g=...)(n))>m?s:mকরতে পরিবর্তন করুন (g=...)(n)>m?g(n):m।
— tsh

2

জেকিউ 1.5 , 211 বাইট

def R:reverse;def U:[range(length)as$j|.[$j][$j:]]|transpose|map(map(select(.))|select(length>=N));def D:U+([R[]|R]|U|map(R)[1:]);[A|.,transpose,D,(map(R)|D)|.[]|range(length-N+1)as$i|.[$i:$i+N]]|max_by(add)|add

ইনপুট আশা করে Nএবং Aযেমন:

def N: 3;
def A: [
  [ 3, 3,  7, 9, 3 ],
  [ 2, 2, 10, 4, 1 ],
  [ 7, 7,  2, 5, 0 ],
  [ 2, 1,  4, 1, 3 ]
];

সম্প্রসারিত

def chunks:      .[] | range(length-N+1) as $i | .[$i:$i+N] ;
def flip:        [ reverse[] | reverse ] ;
def upperdiag:   [ range(length) as $j | .[$j][$j:] ] | transpose | map(map(select(.))|select(length>=N)) ;
def lowerdiag:   flip | upperdiag | map(reverse)[1:] ;
def diag:        upperdiag + lowerdiag ;
def allchunks:   A | ., transpose, diag, (map(reverse)|diag) | chunks ;

[allchunks]|max_by(add)|add

নোট করুন এই চ্যালেঞ্জটি মূলত প্রকল্প ইউলারের সমস্যা 11 এর মতো

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


1

পাইথন 2 , 208 184 183 176 বাইট

  • -float("inf")সমস্ত ম্যাট্রিক্স উপাদানগুলির নেতিবাচক যোগফলের পরিবর্তে পরীক্ষিত লাইনটি ম্যাট্রিক্সের বাইরে পৌঁছেছে তা উপস্থাপন করে 24 বাইট সংরক্ষণ করা হয়েছে ।
  • R,L=range,lenঅন্তর্নির্মিত ফাংশনগুলি সংক্ষিপ্ত করে এবং এর y in R(L(A))...R(L(A[y]))পরিবর্তে ব্যবহার করে সংজ্ঞায়িত করে একটি বাইট সংরক্ষণ করেছেন y,Y in e(A)...x,_ in e(Y)।
  • Golfing দ্বারা সাত বাইট সংরক্ষিত float("inf")করার 9e999।
lambda N,A:max(sum(A[y+q*j][x+p*j]if-1<x+p*j<L(A[y])>-1<y+q*j<L(A)else-9e999for j in R(N))for y in R(L(A))for x in R(L(A[y]))for p,q in[(1,0),(0,1),(1,1),(1,-1)]);R,L=range,len

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

ব্যাখ্যা

lambda N,A:                                                                                                                                                       ;R,L=range,len # lambda function, golfed built-ins
           max(                                                                                                                                                  )               # return the maximum line sum
                                                                                          for y in R(L(A))                                                                       # loop through matrix rows
                                                                                                          for x in R(L(A[y]))                                                    # loop through matrix columns
                                                                                                                             for p,q in[(1,0),(0,1),(1,1),(1,-1)]                # loop through four directions; east, south, south-east, north-east
               sum(                                                                      )                                                                                       # matrix line sum
                                                                            for j in R(N)                                                                                        # loop through line indices
                                  if-1<x+p*j<L(A[y])>-1<y+q*j<L(A)                                                                                                               # coordinates inside the matrix?
                   A[y+q*j][x+p*j]                                                                                                                                               # true; look at the matrix element
                                                                  else-9e999                                                                                                     # false; this line cannot be counted, max(...) will not return this line

1

আর , 199 বাইট

function(m,n,i=1,j=1){y=1:n-1
x=j-y;x[x<1]=NA
y=i-y;y[y<1]=NA
'if'(i>nrow(m)|j>ncol(m),NA,max(c(v(m[i,x]),v(m[y,j]),v(m[b(y,x)]),v(m[b(y,rev(x))]),f(m,n,i+1,j),f(m,n,i,j+1)), na.rm=T))}
v=sum
b=cbind

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

একটি পুনরাবৃত্তি সমাধান। ম্যাট্রিক্সের প্রতিটি উপাদান (i, j) এর জন্য এটি সারি বরাবর যোগফল, কলাম বরাবর যোগফল, উভয় তির্যক বরাবর যোগফল এবং (i + 1, j) প্রয়োগ করা ফাংশনের ফলাফল এবং (ঝ, জে +1)। পরীক্ষার মামলার ফলাফল টিআইওতে দেখানো হয়েছে।


আমি আশা করি আমি এটি মিস করেছি তবে আর বর্গীয় ম্যাট্রিক্সের ট্রেস গণনা করার জন্য আর এর কোনও বেস ফাংশন নেই বলে মনে হচ্ছে।
— NofP

এটি আপনাকে বাইটস বাঁচাতে পারে কিনা তা নিয়ে কাজ করা হয়নি তবে আপনি
— ট্রেসটির


0

জাভাস্ক্রিপ্ট 170 বাইট

গল্ফ অংশটি এখনও মুছা আরও 4 টি চর যোগ করেছে কারণ আমি এমন কোনও ক্ষেত্রে পরিচালনা করতে পারি নি যেখানে সর্বাধিক নেতিবাচক এবং এন 1 এর চেয়ে বড়

M=-1e9
G=(A,N)=>eval(`for(y in m=M,A)
for(x in R=A[y])
{for(a=b=c=d=j=0;j<N;d+=Y[x-j++])
{a+=R[X=+x+j]
b+=(Y=A[+y+j]||[])[x]
c+=Y[X]}
m=Math.max(m,a||M,b||M,c||M,d||M)}`)

console.log(G([ [3,3,7,9,3],
 [2,2,10,4,1],
 [7,7,2,5,0],
 [2,1,4,1,3]],3)==26)
 
 console.log(G([[-88,4,-26,14,-90],
[-48,17,-45,-70,85],
[22,-52,87,-23,22],
[-20,-68,-51,-61,41]],4)==58)

console.log(G([[9,4,14,7],[6,15,1,12],[3,10,8,13],[16,5,11,2]],4)==34)

console.log(G([[-2]],1)==-2)
console.log(G([[1,2,3,4,5]],3) ==12)


@ হারমানলৌনস্টেইন আমি স্পেসগুলি সরিয়ে দিয়েছি তবে আরও কভারেজ যোগ করেছে যা মোট আরও চর যোগ করেছে, তবে
— থেক্স

অপ্রয়োজনীয় নিউলাইনগুলি সরিয়ে 164 বাইট ( G=গণনা করা হয় না)
— হারমান এল

এর a||M,b||M,c||M,d||Mপরিবর্তে আপনি কেন ব্যবহার করলেন a,b,c,d?
— হারমান এল

@ হারমানলাউনস্টেইন ম্যাথ.ম্যাক্স (NaN / অপরিজ্ঞাত, 6) =
— নাএন

0

পাইথন 2 , 222 218 বাইট

n,a=input()
W=len(a[0]);Q=['']*W;R=range;a+=[Q]*n
for l in a:l+=Q
print max(sum(x)for y in[zip(*[(a[j][i+k],a[j+k][i],a[j+k][i+k],a[j+k][i+n+~k])for k in R(n)])for j in R(len(a)-n)for i in R(W)]for x in y if''not in x)

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



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