একটি অ্যারের গণনা মিনিম্যাক্স


19

একটি অ্যারের বিবেচনা xযেমন [1 5 3 4]এবং একটি সংখ্যা n, উদাহরণস্বরূপ 2। সব length- লিখুন nসহচরী subarrays: [1 5], [5 3], [3 4]। অ্যারের মিনিম্যাক্সটি স্লাইডিং ব্লকের সর্বনিম্ন হিসাবে সংজ্ঞায়িত করা যাক । সুতরাং এই ক্ষেত্রে এটি সর্বনিম্ন হবে 5, 5, 4, যা হয় 4

চ্যালেঞ্জ

একটি অ্যারে xএবং ধনাত্মক পূর্ণসংখ্যা দেওয়া n, উপরে বর্ণিত হিসাবে মিনিম্যাক্স আউটপুট।

অ্যারেতে কেবল xইতিবাচক পূর্ণসংখ্যা থাকবে। nসর্বদা সর্বনিম্ন 1এবং সর্বাধিক দৈর্ঘ্য হবে x

গণনা কোনও প্রক্রিয়া দ্বারা করা যেতে পারে, উপরোক্ত সংজ্ঞায়িত হিসাবে অগত্যা নয়।

কোড গল্ফ, সবচেয়ে কম বাইট জিতেছে।

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

x, nফলাফল

[1 5 3 4], 2                    4
[1 2 3 4 5], 3                  3
[1 1 1 1 5], 4                  1
[5 42 3 23], 3                 42

উত্তর:


19

ডায়ালগ এপিএল, 4 বাইট

⌊/⌈/

এটি একটি মোনাডিক ফাংশন ট্রেন যা অ্যারে এবং পূর্ণসংখ্যাকে ডান এবং বাম আর্গুমেন্ট, শ্রমের প্রত্যাশা করে।

ট্রাইএপিএল দিয়ে চেষ্টা করে দেখুন ।

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

দুটি ক্রিয়াকলাপের একটি ট্রেন হল একটি শীর্ষ , যার অর্থ ডানটিকে প্রথমে বলা হয় (উভয় যুক্তি সহ), তারপরে বামটিকে তার শীর্ষে ডাকা হয় (একমাত্র যুক্তি হিসাবে ফলাফল সহ)।

একটি monadic f/কেবল তার যুক্তি হ্রাস দ্বারা f। যাইহোক, যদি dyadically বলা হয়, f/এটি n- મુજબ হ্রাস করা হয়, এবং এর বাম আর্গুমেন্ট হিসাবে স্লাইস আকার গ্রহণ করে।

⌊/⌈/    Monadic function. Right argument: A (array). Left argument: n (list)

  ⌈/    N-wise reduce A by maximum, using slices of length n.
⌊/      Reduce the maxima by minimum.

অপেক্ষা করুন ... আপনি ইতিমধ্যে হ্রাস করা কিছু এমন কীভাবে হ্রাস করবেন? এটি কি কেবল একক উপাদান নয়?
সাইয়েস

@ কিউস এন-ওয়াইস কমানোর ফলে ম্যাক্সিমার একটি অ্যারে পাওয়া যায়। উদাহরণস্বরূপ 2 ⌈/ 1 2 3 4ম্যাক্সিমার গণনা করে (1 2) (2 3) (3 4), তাই এটি ফিরে আসে 2 3 4
ডেনিস

ঠিক আছে. আমি ভেবেছিলাম এর অর্থ হ'ল একটি এন-
ওয়াইজ

কত বাইট হিসাবে গণনা করা উচিত ? 1 বা 2?
এনজিপিপোরগান

1
@ এনজেপিপোরগান এটি এনকোডিংয়ের উপর নির্ভর করে। এপিএলের নিজস্ব লিগ্যাসি কোড পৃষ্ঠা রয়েছে (যা ইউনিকোডকে কয়েক দশক পূর্বে পূর্বাভাস দেয়) এবং এটি এনকোড করে এবং প্রতিটি একক বাইট হিসাবে।
ডেনিস


5

রুবি 39 বাইট

->(x,n){x.each_slice(n).map(&:max).min}

যেখানে এক্স অ্যারে এবং n হ'ল অ্যারেটি ছাড়ার সংখ্যা।


মানে না each_cons?
চার্লস

3

পাইথ, 10 বাইট

hSmeSd.:QE

ব্যাখ্যা:

           - autoassign Q = eval(input())
      .:QE -   sublists(Q, eval(input())) - all sublists of Q of length num
  meSd     -  [sorted(d)[-1] for d in ^]
hS         - sorted(^)[0]

ফর্ম ইনপুট লাগে list newline int

এখানে চেষ্টা করুন!

বা একটি টেস্ট স্যুট চালান!

অথবা 10 বাইট

hSeCSR.:EE

ব্যাখ্যা:

      .:EE -    sublists(Q, eval(input())) - all sublists of Q of length num 
    SR     -   map(sorted, ^)
  eC       -  transpose(^)[-1]
hS         - sorted(^)[0]

টেস্ট স্যুট এখানে


3

ওরাকল এসকিউএল 11.2, 261 বাইট

SELECT MIN(m)FROM(SELECT MAX(a)OVER(ORDER BY i ROWS BETWEEN CURRENT ROW AND :2-1 FOLLOWING)m,SUM(1)OVER(ORDER BY i ROWS BETWEEN CURRENT ROW AND:2-1 FOLLOWING)c FROM(SELECT TRIM(COLUMN_VALUE)a,rownum i FROM XMLTABLE(('"'||REPLACE(:1,' ','","')||'"'))))WHERE:2=c;

আন golfed

SELECT MIN(m)
FROM   (
         SELECT MAX(a)OVER(ORDER BY i ROWS BETWEEN CURRENT ROW AND :2-1 FOLLOWING)m,
                SUM(1)OVER(ORDER BY i ROWS BETWEEN CURRENT ROW AND :2-1 FOLLOWING)c
         FROM   (
                  SELECT TRIM(COLUMN_VALUE)a,rownum i 
                  FROM XMLTABLE(('"'||REPLACE(:1,' ','","')||'"'))
                )
       )
WHERE :2=c;



2

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

(x,y)=>Math.min(...x.slice(y-1).map((a,i)=>Math.max(...x.slice(i,i+y))))

11 বাইট বন্ধ শেভ করতে সাহায্য করার জন্য ব্যবহারকারীর জন্য ধন্যবাদ 81655


সমস্ত ধনাত্মক হচ্ছে:(x,y,M=Math.max)=>-M(...x.slice(y-1).map((a,i)=>-M(...x.slice(i,i+y))))
এডিসি 65

2

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

f(x,n)=min([max(x[i-n+1:i]...)for i=m:endof(x)]...)

খুব বেশি গ্রাউন্ডব্রেকিং কিছুই না। এটি এমন একটি ফাংশন যা একটি অ্যারে এবং পূর্ণসংখ্যা গ্রহণ করে এবং পূর্ণসংখ্যা ফেরত দেয়। এটি কেবলমাত্র বেসিক অ্যালগরিদম ব্যবহার করে। এটা তোলে একটি সম্পূর্ণ অনেক খাটো হবে যদি minএবং maxআর্গুমেন্ট মধ্যে splatting অ্যারে প্রয়োজন হয়নি।

আমরা প্রতিটি ওভারল্যাপিং সাববারে পাই, সর্বাধিক গ্রহণ করি এবং ফলাফলটির মিনিট করি।



2

আর, 41 35 বাইট

চিড়িয়াখানা ইনস্টল করা প্রয়োজন।

function(x,n)min(zoo::rollmax(x,n))

সম্পাদনা - উপলব্ধি করে 6 বাইট zoo::rollmax!


2

জে, 9 বাইট

[:<./>./\

এপিএল উত্তরের অনুরূপ। ডান আর্গের (বাম আর্গ) -সুবসেটগুলিতে (সর্বাধিক) >./\প্রয়োগ হয় >./। এরপরে, <./এটি সর্বনিম্ন সন্ধান করে, যেহেতু এটি আবদ্ধ [:

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

   f =: [:<./>./\
   2 f 1 5 3 4
4
   3 f 1 2 3 4 5
3
   3 f 1 1 1 1 5
1
   3 f 5 42 3 23
42

1

পাইথন 3, 55 বাইট।

lambda x,n:min(max(x[b:b+n])for b in range(len(x)-n+1))

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

assert f([1, 5, 3, 4], 2) == 4
assert f([1, 2, 3, 4, 5], 3) == 3
assert f([1, 1, 1, 1, 5], 4) == 1
assert f([5, 42, 3, 23], 3 ) == 42

1

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

f=lambda l,n:l[n-1:]and min(max(l[:n]),f(l[1:],n))

পুনরাবৃত্তভাবে ন্যূনতম দুটি জিনিসের গণনা করে: প্রথম nএন্ট্রি সর্বাধিক এবং প্রথম উপাদান সরিয়ে তালিকায় পুনরাবৃত্ত ফাংশন। তালিকার nউপাদানগুলির চেয়ে কম সংখ্যার তালিকার বেসের ক্ষেত্রে খালি তালিকা দেয় যা অনন্ত হিসাবে কাজ করে কারণ পাইথন 2 সংখ্যার চেয়ে বেশি হিসাবে তালিকা রাখে।


1

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

x=>n=>-M(...x.slice(n-1).map((_,i)=>-M(...x.slice(i,i+n)))),M=Math.max

কার্চিং ব্যবহার করে , এই ফাংশনটি আগের উত্তর থেকে 2 বাইট সংরক্ষণ করে।

ডেমো

f=x=>n=>-M(...x.slice(n-1).map((_,i)=>-M(...x.slice(i,i+n)))),M=Math.max
a=[[[1,5,3,4],2,4],[[1,2,3,4,5],3,3],[[1,1,1,1,5],4,1],[[5,42,3,23],3,42]]
document.write(`<pre>${a.map(r=>`${f(r[0])(r[1])==r[2]?'PASS':'FAIL'} ${r[1]}=>${r[2]}`).join`\n`}`)


1

গণিত, 23 বাইট

Min@BlockMap[Max,##,1]&

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

%[{1,2,3,4,5},3]
(* 3 *)

1

জাভা 7, 128 126 124 বাইট

int c(int[]x,int n){int i=-1,j,q,m=0;for(;i++<x.length-n;m=m<1|q<m?q:m)for(q=x[i],j=1;j<n;j++)q=x[i+j]>q?x[i+j]:q;return m;}

অবরুদ্ধ এবং পরীক্ষার কোড:

এখানে চেষ্টা করুন।

class M{
  static int c(int[] x, int n){
    int i = -1,
        j,
        q,
        m = 0;
    for(; i++ < x.length - n; m = m < 1 | q < m
                                           ? q
                                           : m){
      for(q = x[i], j = 1; j < n; j++){
        q = x[i+j] > q
             ? x[i+j]
             : q;
      }
    }
    return m;
  }

  public static void main(String[] a){
    System.out.println(c(new int[]{ 1, 5, 3, 4 }, 2));
    System.out.println(c(new int[]{ 1, 2, 3, 4, 5 }, 3));
    System.out.println(c(new int[]{ 1, 1, 1, 1, 5 }, 4));
    System.out.println(c(new int[]{ 5, 42, 3, 23 }, 3));
  }
}

আউটপুট:

4
3
1
42

1

রেকেট 84 বাইট

(λ(l i)(apply min(for/list((j(-(length l)(- i 1))))(apply max(take(drop l j) i)))))

Ungolfed:

(define f
  (λ (l i)
    (apply min (for/list ((j (- (length l)
                                (- i 1))))
                 (apply max (take (drop l j) i))
                 ))))

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

(f '[1 5 3 4]  2)
(f '[1 2 3 4 5] 3)
(f '[5 42 3 23] 3)

আউটপুট:

4
3
42


1

স্মাইলব্যাসিক, 68 বাইট

M=MAX(X)DIM T[N]FOR I=.TO LEN(X)-N-1COPY T,X,I,N
M=MIN(M,MAX(T))NEXT

এখানে বিশেষ কিছু নেই। ইনপুট হয় X[]এবংN

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