প্রতিবেশীদের সর্বাধিক সমষ্টি সহ সংখ্যাটি সন্ধান করুন


12

চ্যালেঞ্জ

সংখ্যার গ্রিড দেওয়া হয়েছে (10 <= এন <= 99) তার সংলগ্ন চারটি সংখ্যার সর্বোচ্চ যোগফল সহ রিটার্ন নম্বর; এটি উপরে, নীচের, ডান এবং বাম সংখ্যা, কিন্তু নিজেই নয়।

  1. সংখ্যাটি নিজেই গণনা করা হয় না, কেবল তার চারটি প্রতিবেশী।
  2. প্রান্তের একটি সংখ্যার সাথে চিকিত্সা করা উচিত যেমন অনুপস্থিত নম্বরটি 0 হয়।
  3. আমি সম্পর্ক এড়াতে পরীক্ষার নকশা করব।
  4. সংখ্যা পুনরাবৃত্তি করবে না।
  5. এটি

উদাহরণ

প্রদত্ত

56 98 32 96
12 64 45 31
94 18 83 71

প্রত্যাবর্তন

18

একটি বাস্তব পরীক্ষা

প্রদত্ত

98 95 67 66 57 16 40 94 84 37
87 14 19 34 83 99 97 78 50 36
18 44 29 47 21 86 24 15 91 61
60 41 51 26 10 58 11 62 55 71
42 85 56 12 46 81 93 65 49 77
89 13 74 39 54 76 92 33 82 90
96 88 70 79 80 28 25 20 75 68
38 63 17 72 53 48 73 30 45 69
64 35 32 31 23 43 22 52 27 59

প্রত্যাবর্তন

13

প্রদত্ত

82 43 79 81 94 36 17 64 58
24 52 13 87 70 18 28 61 69
16 99 75 21 50 44 89 90 51
49 80 63 31 54 65 41 55 38
67 91 76 78 23 86 83 14 73
46 68 62 77 34 48 20 74 10
33 35 26 97 59 66 25 37 32
12 92 84 27 85 56 22 40 45
96 15 98 53 39 30 88 71 29
60 42 11 57 95 19 93 72 47

প্রত্যাবর্তন

15

1
" প্রান্তের একটি সংখ্যার সাথে চিকিত্সা করা যেতে পারে যদিও অনুপস্থিত সংখ্যাটি ০. " - এর থেকে বোঝা যায় যে গ্রিডের প্রান্তে কীভাবে সংখ্যাগুলি পরিচালনা করতে হয় তার একটি বিকল্প আমাদের রয়েছে। সুতরাং আমরা গ্রিডের অন্য দিকে মোড়ক বেছে নিতে পারি?
শেগি

@ শেগি নং এটি প্রত্যাশিত ফলাফলকে পরিবর্তন করতে পারে। আসুন সকলেই এটি একইভাবে করি। পাঠ্য আপডেট হয়েছে s /
ক্যান

2
অনিবার্য এমএটিএল উত্তরের জন্য অপেক্ষা করছি
39

আমি লক্ষ্য করেছি বেশিরভাগ সমাধান কোনও উপায়ে ইনপুটটিকে পরিবর্তন করে। এখানে কি প্রচলিত? আমার (এখনও পোস্ট করা যায় না) সমাধানটিতে ইনপুটটি পরিবর্তনের জন্য প্রয়োজনীয় বাইটগুলি অন্তর্ভুক্ত করে এবং আমি ভাবছি কেন আরও অনেকে তা না করে।
ছাতা

1
@ ছত্রাকলা ইনপুটটি সংশোধিত হয় কিনা আমরা সাধারণত যত্ন করি না। আমরা সংক্ষিপ্ত কোডে আগ্রহী, পরিষ্কার কোড নয়। যতক্ষণ আউটপুট সঠিক হয় ততক্ষণ আমরা বেশ অনুমতিপ্রবণ হয়ে থাকি।

উত্তর:


9

এমএটিএল , 20 15 13 12 বাইট

t1Y6Z+tuX>=)

এমিগিনার কাছে 5 বাইট সংরক্ষণ করা, জিউসেপিকে 2 টি ধন্যবাদ এবং লুইস মেন্ডোকে আরও একটি ধন্যবাদ।
এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

t1Y6Z+tuX>=)
t                  Duplicate the (implicit) input.
 1Y6               Push the array [0 1 0; 1 0 1; 0 1 0].
    Z+             Convolve with the input.
       uX>         Get the maximum unique element...
      t   =        ... and compare elementwise.
           )       Index into the input.

6

এপিএল (ডায়ালগ ইউনিকোড) , 31 27 26 24 23 বাইট এসবিসিএস

-২ গরু কোঁকড়া ধন্যবাদ। -1 ngn ধন্যবাদ।

বেনামে ট্যাসিট উপসর্গ কার্য। যুক্তি হিসাবে একটি ম্যাট্রিক্স গ্রহণ করে। ধরে নেওয়া ⎕IO( I ndex O rigin) 0, যা বহু সিস্টেমে ডিফল্ট।

{⊃⍒,(+/--/)⊢∘,⌺3 3⊢⍵}⊃,

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

, অভ্যাস (সমতল) ইনপুট

{}⊃ নিম্নলিখিত ফাংশন ফলাফল অনুযায়ী যে থেকে একটি উপাদান বাছুন:

⊢⍵ যুক্তি উপস্থাপন ( 3 3থেকে পৃথক )

 … ⌺3 3 প্রতিটি 3-বাই -3 পাড়ায় নিম্নলিখিত ফাংশনটি প্রয়োগ করুন:

  ⊢∘, প্রজ্জ্বলিত (সমতল) পাড়ার পক্ষে প্রান্ত-তথ্য উপেক্ষা করুন

  () তাদের নিম্নলিখিত নীচের tacit ফাংশন প্রয়োগ করুন

   -/ বিকল্প যোগফল (লিট। ডান-সহযোগী বিয়োগ কমানো)

   +/- যোগফল থেকে বিয়োগ করুন (এটি প্রতিটি অন্যান্য উপাদানের যোগফল দেয়)

, কৌতুক (সমতল) যে (পাড়ার অঙ্কগুলি)

 সূচকগুলি যা সাজান তা উত্পাদন করে

 প্রথমটি বেছে নিন (অর্থাত্ সর্বোচ্চ অঙ্কের সূচক)


এটা দ্রুত ছিল. আপনি কি প্রস্তুত এসেছিলেন? ;)
ছাতা

3
@Umbrella না, আমি শুধু যা প্রোগ্রাম দ্রুত একটি প্রোগ্রামিং ভাষা ব্যবহার করুন।
আদম

3
এটা কেমন {⊃⍒,{+/1↓⍉4 2⍴⍵}⌺3 3⊢⍵}⊃,? সম্পাদনা করুন: অথবা এমনকি{⊃⍒,{⊢/+⌿4 2⍴⍵}⌺3 3⊢⍵}⊃,
ব্যবহারকারী 41805

পছন্দ করুন
অ্যাডম

2
-1 বাইট:{⊃⍒,(+/--/)⊢∘,⌺3 3⊢⍵}⊃,
ngn

5

জেলি , 22 বাইট

;€0ZṙØ+SṖ
,ZÇ€Z+$/ŒMœị

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

এমএটিএল এবং ডায়ালগের মতো বিল্ট-ইনগুলি না পেয়ে আপনার ভাষা ভুলে যাওয়ার ক্ষেত্রে অন্তর্নির্মিত বিল্ট-ইনগুলি রয়েছে (আপনাকে ধন্যবাদ @ উদ্যানন) কষ্ট দেয় তবে আমরা এগুলি ছাড়াই কিছুটা ঠিক করতে পারি, আংশিকভাবে ধন্যবাদ ŒMএবং ধন্যবাদ œị। প্রথমত, প্রতিবেশীদের কেবল এক দিক দিয়ে গণনা করার জন্য একটি সহায়ক ফাংশন, যা ঘটনাক্রমে ইনপুটটি স্থানান্তর করে:

;€0Z         Append a zero to each row, then transpose.
    ṙØ+S     Rotate by +1 and −1 (Ø+ = [1,-1]) and sum these.
        Ṗ    Pop the last row.

দৃশ্যত, গণনাটি হ'ল:

1 2 3   ;€0   1 2 3 0   Z   1 4 7   ṙØ+     2 5 8   0 0 0     S   2  5  8   Ṗ   2  5  8
4 5 6  ————→  4 5 6 0  ——→  2 5 8  ————→  [ 3 6 9 , 1 4 7 ]  ——→  4 10 16  ——→  4 10 16
7 8 9         7 8 9 0       3 6 9           0 0 0   2 5 8         2  5  8       2  5  8
                            0 0 0           1 4 7   3 6 9         4 10 16

ব্যাখ্যামূলক: এই ফলাফলের ঘর (x, y) হ'ল কোষ (y, x) এর অনুভূমিক প্রতিবেশীদের যোগফল। (উদাহরণস্বরূপ, এখানে আমরা দেখতে পাই যে চ (এ) [2,3] = 16 = 7 + 9 = এ [3,1] + এ [3,3] ।)

তারপরে, মূল কাজ:

,ZÇ€            Pair the input with its transpose and apply helper to both.
    Z+$/        Fold by Z+, i.e., turn [X,Y] into transpose(X)+Y.
                Now we've summed the horizontal and vertical neighbors for each cell.
        ŒM      Find the 2D index of the maximal value.
          œị    2D-index (into the original input).

1
কি হবে æc?
dylnan

ওহ, আমি এটি সম্পর্কে জানতাম না :) আমি গল্ফ করতে আরও ব্যস্ত তাই এটিকে ব্যবহার করে উত্তর লিখতে নির্দ্বিধায়।
লিন

5

জেলি , 18 বাইট

5BæcµḊṖ)
ZÇZ+ÇŒMœị

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

সহায়ক ফাংশন প্রতিটি সারিতে প্রতিটি উপাদানটির প্রতিবেশীদের সন্ধান করে। প্রধান ফাংশনটি সারিগুলিতে এবং কলামগুলিতে এটি করে তখন সর্বাধিক প্রতিবেশীর যোগফল রয়েছে এমন উপাদানটি খুঁজে পায়।

5BæcµḊṖ)
5B           bin(5): 1,0,1
  æc         Convolve with [[1,2,9],[other rows]] (for example): [[1,2,10,2,9],...]
    µ        New chain.
       )     Apply this to each element:
     Ḋ       Remove the first element.
      Ṗ      Remove the last element.
             Gives [[2,10,2],...]

ZÇZ+ÇŒMœị   
Z            Zip the matrix
 Ç           Apply helper function
  Z          Zip again. Yields the sum of the vertical neighbors of each element.
   +         Add:
    Ç        The sum of each element's horizontal neighbors.
     ŒM      Find the multidimensional index of the maximal element.
       œị    Index back into the original matrix.



2

স্টেনসিল , 1 + 10 = 11 বাইট (প্রতিযোগী নয়)

কমান্ড-লাইন বিকল্প:  1 1 জেনার গণনা করুন

y⊃⍨⊃⍒,
+/N

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

y চ্যাপ্টা মূল ইনপুট থেকে
⊃⍨ বাছাই
 প্রথম
 অবরোহী
, চ্যাপ্টা এর

+/ সমষ্টির
N বাইরে selves ছাড়া ভন Neumann এলাকাগুলোর


অবশ্যই প্রতিবেশীদের জন্য অন্তর্নির্মিত একটি চরিত্রের সাথে একটি ভাষা আছে।
ছাতা

1
সত্যি কথা বলতে, এর একমাত্র উদ্দেশ্য হ'ল এই ধরণের সমস্যাগুলি সমাধান করা ।
অ্যাডম

কেন এটি প্রতিযোগিতা করছে?
কেভিন ক্রুইজসেন

1
@ কেভিন ক্রুইজসেন আমি y যখন ভাষাটিতে যুক্ত করেছিলাম যখন দেখলাম যে এটির মূল ইনপুটটিতে আরও সহজ অ্যাক্সেস প্রয়োজন। তার আগে, আপনার (,⍎'input')পরিবর্তে লিখতে হয়েছিল y
অ্যাডম

1
@ আদম আহ ঠিক আছে, হ্যাঁ, তবে এটি আসলে প্রতিযোগিতামূলক। গতকাল প্রকাশিত চ্যালেঞ্জটি খেয়াল করেনি। যদি এটি একটি পুরানো চ্যালেঞ্জ ছিল, অ-প্রতিযোগিতামূলক কারণ ভাষা (বা ভাষার সংস্করণ) নতুন হ'ল এটি বর্তমান মেটাতে আর প্রতিদ্বন্দ্বিতা করে না
কেভিন ক্রুইজসেন

2

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

a=>a.map(p=m=(r,y)=>p=r.map((v,x)=>(s=~r[x-1]+~p[x]+~(a[y+1]||0)[x]+~r[x+1])>m?v:(m=s,o=v)))|o

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

কিভাবে?

এর পরিবর্তে 4 প্রতিবেশীদের সমষ্টি সর্বোচ্চ খুঁজছেন, আমরা সর্বনিম্ন জন্য চেহারা মি সমষ্টি গুলি তাদের এক-সম্পূরক সমূহ করুন। এটি আমাদের শূন্যের মতো অপরিজ্ঞাত মানগুলি প্রক্রিয়া করতে দেয় কারণ:

~undefined === -1
~0 === -1

অভ্যন্তরীণ মানচিত্রটি () এমনভাবে লেখা হয়েছে যাতে এটি সারি আর এর সামগ্রী পরিবর্তন করে না । সুতরাং, পরবর্তী পুনরাবৃত্তিতে শীর্ষ প্রতিবেশীদের পরীক্ষা করার জন্য আমরা এর ফলাফলটি পিতে সংরক্ষণ করতে পারি ।

আমরা ব্যাবহার করি:

  • ~r[x-1] বাম ঘর জন্য
  • ~r[x+1] ডান কোষের জন্য
  • ~p[x] শীর্ষ সেল জন্য
  • ~(a[y+1]||0)[x] নীচের ঘর জন্য


1

জাভা 8, 187 বাইট

m->{int r=0,l=m.length,i=l,L,j,S=0,s;for(;i-->0;)for(L=j=m[i].length;j-->0;)if((s=(i<1?0:m[i-1][j])+(i<l-1?m[i+1][j]:0)+(j<1?0:m[i][j-1])+(j<L-1?m[i][j+1]:0))>S){S=s;r=m[i][j];}return r;}

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

ব্যাখ্যা:

m->{                           // Method with integer-matrix parameter and integer return
  int r=0,                     //  Result-integer, starting at 0
      l=m.length,              //  Amount of rows
      i=l,                     //  Rows index integer
      L,                       //  Amount of columns
      j,                       //  Column index integer
      S=0,                     //  Largest sum of four cells
      s;                       //  Current sum of four cells
  for(;i-->0;)                 //  Loop over the rows
    for(L=j=m[i].length;j-->0;)//   Inner loop over the columns
      if((s=                   //    Set the current sum to: the sum of:
           (i<1?0:m[i-1][j])   //     Value of the cell to the left, or 0 if out of bounds
          +(i<l-1?m[i+1][j]:0) //     Value of the cell to the right, or 0 if out of bounds
          +(j<1?0:m[i][j-1])   //     Value of the cell down, or 0 if out of bounds
          +(j<L-1?m[i][j+1]:0))//     Value of the cell up, or 0 if out of bounds
         >S){                  //    If this current sum is larger than the largest sum:
        S=s;                   //     Replace the largest sum with this current sum
        r=m[i][j];}            //     And set the result to the current cell
  return r;}                   //  Return the result

1

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

c=g=>{s=0;n=0;f=m=>m||[];for(i=0;i<g.length;i++)for(j=0;j<g[i].length;j++){s=~~f(g[i-1])[j]+~~f(g[i+1])[j]+~~f(g[i])[j-1]+~~f(g[i])[j+1];b=s>n?g[i][j]+!(n=s):b;}return b}

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

1
@ আরনাউল্ড আপনাকে ধন্যবাদ! আমি কোডটি ঠিক করেছি
জিন-ফিলিপ লেক্লার্ক

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