সর্বোচ্চ ম্যাক্সিমা!


11

এই প্রশ্নের দ্বারা অনুপ্রাণিত এবং লুই মেন্ডো দ্বারা পরিশ্রুত ।

চ্যালেঞ্জ

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

ইনপুট

  • ইনপুটটি আপনার পছন্দের ভাষার সাথে যথাযথ উপযুক্ত যে কোনও ফর্মটিতে একটি খালি নয় Mএক্স Nম্যাট্রিক্স ( M> 0 এবং N> 0) হবে।

আউটপুট

  • আপনার প্রোগ্রামটি সর্বাধিক সংখ্যক সারি-ভিত্তিক ম্যাক্সিমায়ার (প্রতিটি পৃথক মান বা একটি তালিকা হিসাবে) সমন্বিত প্রতিটি কলামের সূচি ফেরত পাঠানো উচিত । হয় 0- বা 1-ভিত্তিক সূচক ব্যবহার করা যেতে পারে (আপনার বর্ণনায় নির্দিষ্ট করুন)।
  • আপনার প্রোগ্রামটিও এই কলামগুলিতে উপস্থিত ম্যাক্সিমার সংখ্যাটি (একক সংখ্যা) ফিরিয়ে আনতে হবে।
  • আউটপুটটির ক্রম / বিন্যাসটি নমনীয় তবে আপনার উত্তর সহ প্রবন্ধে ব্যাখ্যা করা উচিত।

অতিরিক্ত তথ্য

  • ইনপুট ম্যাট্রিক্সের সমস্ত এন্ট্রি ইতিবাচক পূর্ণসংখ্যার হবে।
  • যদি কোনও সারির সর্বাধিক মান সেই সারির একাধিক উপাদান দ্বারা ভাগ করা হয় তবে সেই মানটির সমস্ত উপস্থিতি তাদের কলামের মোটের দিকে গণনা করে।
  • যদি একাধিক কলামে ম্যাক্সিমার একই সংখ্যা থাকে তবে আপনার সমস্ত কলামের একটি তালিকা ফিরে আসা উচিত যা এই সংখ্যাটিতে ম্যাক্সিমা ছিল।

একটি উদাহরণ

ইনপুট বিবেচনা করুন

 7  93
69  35
77  30     

সারি 1 এর ম্যাক্সিয়াম 93 রয়েছে, যা একবারে ঘটে যায়, যেমন কলাম 2 এ R এইভাবে আউটপুট হবে [1] [2]। আমরা যদি ইনপুট পরিবর্তন করি

 7  93
69  35
77  77

আউটপুট হবে [1 2] [2], কারণ উভয় কলামে 2 ম্যাক্সিমা রয়েছে।

পরীক্ষার কেস

input                 =>    output ( [1-based index array], [nMaxima] )
----------------------------------------------
 7  93
69  35                =>    [1], [2]
77  30

 7  93
69  35                =>    [1 2], [2]
77  77     

1   2   3   4         =>    [4], [2]
5   6   7   8

16   2   3  13
 5  11  10   8        =>    [1  2  4], [1]
 9   7   6  12    

 1   1   1   1        =>    [1  2  3  4], [1]

25   6  13  25        =>    [1  4], [1]

1
2
3                     =>    [1], [4] 
4

100                   =>    [1], [1]

স্কোরিং

এটি , বাইট জেতে সংক্ষিপ্ততম কোড। টাইব্রেকার আগের উত্তরটিতে যায়।

লিডারবোর্ড

নীচে সমস্ত এন্ট্রি বিশ্লেষণের জন্য একটি স্ট্যাক স্নিপেট রয়েছে।


7
মজার ব্যাপার; ডাচ রানিকে ম্যাক্সিমা বলা হয়, তাই প্রযুক্তিগতভাবে আমরা কেবল 1 ম্যাক্সিমা রাখতে পারি।
বাসড্রপ কম্বারবুবউবউব

1
মজার ব্যাপার; ম্যাক্সিমা নামে একটি ওপেনসোর্স সিএএসও রয়েছে
flawr

উত্তর:


3

জেলি , 9 বাইট

="Ṁ€SµM,Ṁ

ইনপুট একটি 2 ডি তালিকা, আউটপুট একটি জোড়া: 1-ভিত্তিক সূচকের তালিকা এবং সর্বাধিক সংখ্যার ম্যাক্সিমার।

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

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

="Ṁ€SµM,Ṁ  Main link. Argument: M (matrix)

  Ṁ€       Apply maximum to each row.
="         Zipwith equal; compare the entries of the nth row with its maxmium.
    S      Sum; reduce across columns to count the maxima in each row.
     µ     Begin a new, monadic link. Argument: A (list of maxima)
      M    Yield all indices with maximal value.
        Ṁ  Yield the maximum of A.
       ,   Pair the results to both sides.

3

জে, 27 বাইট

((I.@:=;])>./)@(+/@:=>./"1)

এটি একটি monadic ক্রিয়া, দ্বিতীয় উদাহরণ হিসাবে নিম্নলিখিত হিসাবে ব্যবহৃত:

   f =: ((I.@:=;])>./)@(+/@:=>./"1)
   m =: 3 2 $ 7 93 69 35 77 77
   f m
+---+-+
|0 1|1|
+---+-+

আউটপুট দুটি বাক্স নিয়ে গঠিত এবং 0-ভিত্তিক সূচক ব্যবহার করে। এখানে চেষ্টা করুন!

ব্যাখ্যা

((I.@:=;])>./)@(+/@:=>./"1)  Input is m.
(            )@(          )  Composition: apply right hand side, then left hand side.
                     >./"1   Take maximum of each row of m.
                    =        Replace row maxima by 1 and other values by 0,
                +/@:         then take sum (number of maxima) on each column.
                             The result is the array of number of row maxima in each column.
          >./                Compute the maximum of this array
 (     ;])                   and put it in a box with
  I.@:=                      the indices of those entries that are equal to it.

3

এমএটিএল, 17 বাইট

vH3$X>G=XstX>tb=f

প্রথম আউটপুটটি ম্যাক্সিমার সর্বাধিক সংখ্যা এবং দ্বিতীয় আউটপুটটি কলামগুলি হয় যেখানে এটি ঘটেছিল (1-ভিত্তিক সূচক)।

অনলাইনে চেষ্টা করে দেখুন!

ব্যাখ্যা

v       % Vertically concatenate everything on the stack (nothing), yields []
        % Implicitly grab the input
H       % Push the number 2 to the stack
3$X>    % Compute the maximum value of each row (along the second dimension)
G       % Explicitly grab input again
=       % Compare each row of the input to the row-wise max (automatically broadcasts). 
Xs      % Sum the number of matches in each column
t       % Duplicate the array
X>      % Determine the max number of maxima in all columns
t       % Duplicate this value
b=f     % Find the index of the columns which had the maximum number of maxima
        % Implicitly display stack contents

3

এমএটিএল , 17 বাইট

!tvX>!G=5#fFTT#XM

ইনপুট একটি 2 ডি অ্যারে, সেমিকোলন দ্বারা পৃথক করা সারি রয়েছে। সুতরাং পরীক্ষার কেসগুলির ইনপুটগুলি হ'ল

[7 93; 69 35; 77  30]
[7 93; 69 35; 77  77]
[1 2 3 4; 5 6 7 8]
[16 2 3 13; 5 11 10 8; 9 7 6 12]
[1 1 1 1]
[25 6 13 25]
[1; 2; 3; 4]
[100]

আউটপুটটি হল: প্রথমে সর্বোচ্চ পরিমাণের ম্যাক্সিমার, তারপরে এক বা একাধিক কলাম সূচক।

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

ব্যাখ্যা

এটি স্যুভারের উত্তর থেকে আলাদা পদ্ধতির ব্যবহার করে ।

প্রথমে যৌক্তিক মানগুলির একটি ম্যাট্রিক্স ( trueএবং false) গণনা করা হয়, যেখানে trueসারি সর্বাধিকের উপস্থিতি নির্দেশ করে। তারপরে trueমানগুলির কলাম সূচকগুলি একটি ভেক্টর থেকে বের করা হয়। অবশেষে, সেই ভেক্টরের মোডটি সর্বাধিক ঘন ঘন (পছন্দসই কলাম সূচকগুলি) সহ সমস্ত মানগুলির সাথে গণনা করা হয় (ম্যাক্সিমার সর্বোচ্চ সংখ্যা)।

!        % Implicit input. Transpose
tv       % Duplicate. Concatenate vertically. This forces next function (max)
         % to work along columns even if input is a row vector
X>       % Maximum of each column (gives row vector)
!        % Transpose into column vector
G        % Push input again
=        % Test for equality, with broadcast. Gives matrix of true and false
5#f      % Column indices of true values, as a column vector
FTT#XM   % Mode of that vector, and all values that occur maximum number of times
         % Implicit display

3

পাইথ, 20 19 17 বাইট

1 বাইট ধন্যবাদ @Suever

1 জ্যাকেটকে জ্যাকেউব ধন্যবাদ জানায়

{MC.MhZrSsxLeSdQ8

পরীক্ষা স্যুট.

আউটপুট 0-সূচকযুক্ত।

আদেশ বিপরীত হয়।

সমস্ত ইনপুট

[[7,93],[69,35],[77,30]]
[[7,93],[69,35],[77,77]]
[[1,2,3,4],[5,6,7,8]]
[[16,2,3,13],[5,11,10,8],[9,7,6,12]]
[[1,1,1,1]]
[[25,6,13,25]]
[[1],[2],[3],[4]]
[[100]]

সমস্ত আউটপুট

[[2], [0]]

[[2], [0, 1]]

[[2], [3]]

[[1], [0, 1, 3]]

[[1], [0, 1, 2, 3]]

[[1], [0, 3]]

[[4], [0]]

[[1], [0]]

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

{MC.MhZrSsxLeSdQ8

               Q   Yield input.
           L       For each array in input (as d):
            eSd      Yield maximum of d.
          x          Yield the 0-indexed indices of the maximum in d.
         s          Flatten.
        S           Sort.
       r         8  Run-length encoding.
                    Now the array is:
                      [number of maxima in column, index of column]
                      for all the columns
   .MhZ             Yield the sub-arrays whose first element is maximum.
                     The first element of each sub-array
                     is "number of maxima in column".
                     Now the array is:
                       [number of maxima in column, index of column]
                       for all the required columns
  C                 Transpose.
                    Now the array is:
                      [[number of maxima in each column],
                       [index of each required column]]
                    Note that every element in the
                    first sub-array is the same.
{M                  Deduplicate each.

3

সিজেম , 38 35 31 বাইট

@ ক্রোয়াটাটা থেকেও সহায়তায় @ ফ্রাইআমএইজিজিমনকে 2 বাইট কম ধন্যবাদ আরও 4 টি বাইট অপসারণ করার জন্য @ ডেনিসকেও ধন্যবাদ

q~_::e>.f=:.+_:e>_@f{=U):Ua*~}p

ইনপুট ফর্ম হয়

[[7 93] [69 35] [77 77]]

আউটপুট হল 1-ভিত্তিক কলাম সূচক এবং একটি সংখ্যার একটি অ্যারে।

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


q~_::e>.f=:.+_:e>_@f{=U):Ua*~}pকয়েক বাইট সাশ্রয়। এটিকে একটি কোড ব্লকে পরিণত করা আরও 1 টি বাঁচাতে পারে।
ডেনিস

@ ডেনিস ধন্যবাদ! এখন আমার বুঝতে হবে কী {=U):Ua*~}করে ...
লুইস মেন্ডো


2

পাইথন 2, 106 বাইট

x=map(sum,zip(*[map(max(r).__eq__,r)for r in input()]))
m=max(x);print[i for i,n in enumerate(x)if n==m],m

ইনপুটটি ভাসমানগুলির একটি 2D তালিকা, আউটপুট একটি জুড়ি: 0-ভিত্তিক সূচকগুলির তালিকা এবং একটি পূর্ণসংখ্যার।

আইডিয়নে এটি পরীক্ষা করুন ।


2

জুলিয়া, 54 বাইট

f(x,m=maximum,t=sum(x.==m(x,2),1))=find(t.==m(t)),m(t)

ইনপুটটি একটি ম্যাট্রিক্স, আউটপুট একটি যুগল: 1-ভিত্তিক সূচকের তালিকা এবং সর্বাধিক সংখ্যার ম্যাক্সিমার।

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


1

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

a=>[m=Math.max(...a=a[0].map((_,i)=>a.map(a=>c+=a[i]==Math.min(...a),c=0)|c)),[...a.keys()].filter(i=>a[i]==m)]

দুটি উপাদানের একটি অ্যারে প্রদান করে; প্রথমটি হ'ল ম্যাক্সিমার সর্বোচ্চ গণনা, দ্বিতীয়টি সেই গণনা সহ শূন্য-সূচকযুক্ত কলামগুলির অ্যারে।


1

অক্টাভা, 47 46 বাইট

@(r){m=max(s=sum(r==max(r,0,2),1)),find(s==m)}

এটি একটি বেনামি ফাংশন তৈরি করে যা স্বয়ংক্রিয়ভাবে নিজেকে নির্ধারিত করে ansএবং ব্যবহার করে চালানো যেতে পারে ans([1 2 3; 4 5 6])। এটি একটি দ্বি-উপাদান সেল অ্যারে প্রদান করে যেখানে প্রথম উপাদানটি ম্যাক্সিমার সর্বাধিক সংখ্যা এবং দ্বিতীয়টি এই ম্যাক্সিমাযুক্ত কলামগুলির 1-ভিত্তিক সূচক।

সমস্ত পরীক্ষার কেস


1

পাইথন 3, 142 বাইট

এখানে অ্যালগোরিদম মূলত প্রতিটি সারি দিয়ে যান এবং সেই সারির সর্বাধিক কলামগুলির স্কোর বাড়ান। তারপরে সর্বোচ্চ স্কোরটি সন্ধান করুন এবং যে কলামগুলিতে সেই সর্বোচ্চ স্কোর রয়েছে তা সন্ধান করুন এবং সেগুলি ফিরিয়ে দিন। কলামগুলি 1-সূচকযুক্ত। আমি এটি ল্যাম্বডায় এক-আস্তরণের চেষ্টা করেছি, কিন্তু কলাম দ্বারা স্কোর কলামটি তৈরি করার সাথে এটি 153 বাইট ছিল।

def f(r):
    s=[0]*len(r[0]);e=enumerate
    for x in r:
        for i,j in e(x):
            s[i]+=(0,1)[j==max(x)]
    m=max(s);return[i+1for i,j in e(s)if j==m],m

পরীক্ষার কেস

x=[[7, 93],
[69, 35],              
[77, 30]]

print(f(x)) #=>    [[1], 2]

x=[[ 7, 93],
[69, 35],             
[77, 77]]    

print(f(x)) #=>    [[1 2], 2]

x=[[1,  2,   3,  4],        
[5,  6,  7,  8]]

print(f(x)) #=>    [[4], 2]

x=[[16,  2,  3, 13],
 [5, 11, 10,  8],      
 [9,  7, 6, 12]]

print(f(x)) #=>    [[1  2  4], 1]

x=[[1,  1,  1,  1]]      

print(f(x)) #=>    [[1  2  3  4], 1]

x=[[25,   6,  13,  25]]        

print(f(x)) #=>    [[1  4], 1]

x=[[1],
[2],
[3],                   
[4]]

print(f(x)) #=>    [[1], 4] 

x=[[100]]                   

print(f(x)) #=>    [[1], 1]

1

ক্লোজার, 150 বাইট

(fn[M](let[F(dissoc(frequencies(mapcat(fn[r](map-indexed #(if(=(apply max r)%2)%)r))M))nil)m(apply max(vals F))][(map first(filter #(#{m}(% 1))F))m]))

মানুষ যে দীর্ঘ, আমি একটি অনুভূতি পেয়েছি এটি অনেক সহজ করা যেতে পারে। কমপক্ষে এটি সঠিক আউটপুট উত্পাদন করে।

[(f [[ 7  93][69  35][77  30]])
 (f [[ 7  93][69  35][77  77]])
 (f [[16   2   3  13][5  11  10   8][9   7   6  12]])]

[[(0) 2] [(1 0) 2] [(0 1 3) 1]]

1

05 এ বি 1 ই , 14 (বা 12) বাইট

εZQ}øOZ©Qƶ0K®‚

বিন্যাসে আউটপুট [[1-indexed columns-list], maxima]

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

0কলাম-তালিকায় এটি উপস্থাপনের অনুমতি দেওয়া হয় যা আমরা উপেক্ষা করি, এটি অপসারণ করে এটি 2 বাইট কম হতে পারে 0K:

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

ε               # Map each row in the (implicit) input-matrix:
 Z              #  Get the maximum of the row (without popping)
  Q             #  Check for each value in this row if its equal to the row-maximum
              # After the map: zip/transpose the matrix; swapping rows/columns
     O          # Take the sum of each inner list (the truthy/falsey values of the columns)
      Z         # Get the maximum column-sum (without popping)
       ©        # Store it in the register (without popping)
        Q       # Check for each column-sum if its equal to this maximum
         ƶ      # Multiply each truthy/falsey value in the list by its 1-based index
          0K    # Remove all 0s
            ®‚  # Pair the resulting list with the maximum we stored in the register
                # (and output the result implicitly)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.