N থেকে দূরে সর্বাধিক সংখ্যা এন অবস্থানগুলি সন্ধান করুন


29

এই প্রশ্নের একটি সিক্যুয়াল ।

কার্য

ইতিবাচক পূর্ণসংখ্যার একটি অ্যারে দেওয়া, সবচেয়ে বড় উপাদান কে খুঁজে নিন যার জন্য:

বিদ্যমান কিছু ধনাত্মক পূর্ণসংখ্যা দূরত্ব এন , যাতে অ্যারের মধ্যে উপাদান অবস্থিত এন  জায়গাগুলি বাম বা ডান দিক থেকে সমান এন

অ্যারেতে এই শর্তটি সন্তুষ্ট করে কমপক্ষে একটি উপাদান থাকার গ্যারান্টিযুক্ত।

সবচেয়ে সংক্ষিপ্ততম কোড (বাইটে) জিতেছে। আপনার পছন্দ অনুযায়ী যে কোনও আই / ও ফর্ম্যাট আপনি চয়ন করতে পারেন।

উদাহরণ

ইনপুট দেওয়া হয়েছে

[4, 6, 7, 9, 3, 6, 5, 7, 2]

যোগ্য মানগুলি হ'ল:

  • 4, যেমন একটি হয় 7তার ডানদিকে 7 অবস্থানের অবস্থিত
  • প্রথমটি 6যেমন 3এটির ডানদিকে 3 টি অবস্থান রয়েছে
  • 3, যেমন একটি হয় 4তার বাম দিকে 4 অবস্থানের অবস্থিত
  • 5, যেমন একটি হয় 2তার ডানদিকে 2 অবস্থানের অবস্থিত
  • দ্বিতীয়টি 7যেমন 3এর বামে 3 টি অবস্থান রয়েছে।

এই মানগুলির মধ্যে, বৃহত্তম 7

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

[1, 13] → 13
[2, 9, 8, 3, 72, 2] → 8
[5, 28, 14, 5, 6, 3, 4, 7] → 14
[1, 3, 5, 15, 4, 1, 2, 6, 7, 7] → 7
[5, 1, 3, 5, 2, 5, 5, 8, 5, 1, 5, 1, 2, 3] → 5
[5, 12, 2, 5, 4, 7, 3, 3, 6, 2, 10, 5, 5, 5, 4, 1, 8, 5] → 10

উদাহরণের মধ্যে আরও দুটি (কিছুটা রিডানডেন্ট হওয়া সত্ত্বেও) কেস: প্রথম 6 (আবার) যেহেতু এখানে 5 টি পজিশনের ডানদিকে রয়েছে; বা দ্বিতীয় 7 (আবার) হিসাবে এটির 6 টি অবস্থান রয়েছে positions
জোনাথন অ্যালান

1. আমার ফোনে শিরোনামটি "একটি থেকে সর্বাধিক সংখ্যক অবস্থানের সন্ধান করুন" বলে মনে হচ্ছে। ২. শর্তটি বর্ণিত হ'ল কিছু কে আছে যা (যে সম্পত্তি যা কে-কে নির্ভর করে না)। এটা অবশ্যই ভুল হতে হবে।
পিটার টেলর

@ পিটারটেলর "এই" উপাদানটিতে "এটি" কেকে বোঝায়।
তাইমির

1
@ টেইমির, এটি দুটি কারণে বোঝায় না: প্রথমত, কারণ কে উপাদান হিসাবে বলা হয় নি; এবং দ্বিতীয়ত যেহেতু আমাদের শর্তটি সন্তুষ্ট "সবচেয়ে বড় উপাদানটি খুঁজতে " বলা হয়েছে , সুতরাং " এই উপাদানটির " শর্তের বাইরে একটি পূর্বসূরি রয়েছে।
পিটার টেলর

2
সম্ভবত আপনি "সবচেয়ে বড় উপাদান কে এরকম সন্ধান করুন" বলে সমস্ত বিভ্রান্তি এড়াতে পারবেন এবং তারপরে সংজ্ঞায় এই উপাদানটির পরিবর্তে কে ব্যবহার করবেন ?
মার্টিন ইন্ডার

উত্তর:


3

জেলি , 9 বাইট

Jạþ`=ḅa¹Ṁ

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

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

Jạþ`=ḅa¹Ṁ  Main link. Argument: A (array)

J          Indices; yield [1, ..., len(A)].
   `       Use the previous return value as left and right argument:
 ạþ        Absolute difference table; take the absolute value of the difference
           of each pair of indices, yielding a 2D array.
    =      Compare each absolute difference with the corresponding item of A.
     ḅ     Base; convert each Boolean list from base i to integer, where i is the
           corresponding item of A. The value of i is not important; we only care
           if the list contains a 1, which will result in a non-zero integer.
       ¹   Identity; yield A.
      a    Logical AND; replace non-zero values with the corresponding items of A.
        Ṁ  Take the maximum.

1
হুম, এটি সম্পর্কে নীতি কী তা নিশ্চিত নন, তবে আপনার কাছে একই ব্যবহারকারীর একই প্রোগ্রামের ভাষায় পৃথক উত্তরে দুটি পৃথক পন্থা রয়েছে। এটি একই প্রোগ্রামিংয়ের ভাষা এবং উভয়ই যেহেতু একই উত্তরে 9- এবং 10-বাইট স্নিপেটগুলি উভয়ই রাখা ভাল নয়? আমি একাধিক ব্যবহারকারীর দ্বারা একই প্রোগ্রামিং ভাষায় একাধিক উত্তর বুঝতে পারি, তবে আমি ব্যক্তিগতভাবে একই প্রোগ্রামিং ভাষায় একই ব্যবহারকারীর বিভিন্ন পদ্ধতির সম্পাদনা হিসাবে আরও উপযুক্ত হতে পারে বলে মনে করি। শুধুমাত্র আমার অভিমত.
কেভিন ক্রুইজসেন

5
এটি ছিল আমার প্রথম মেটা প্রশ্ন , এবং theক্যমত্য বলে মনে হয়েছিল যে বিভিন্ন পদ্ধতির বিভিন্ন উত্তর পোস্ট করা উচিত। এই ক্ষেত্রে, আমার পন্থাগুলি সাধারণভাবে সর্বাধিক সর্বাধিক ব্যতীত কিছুই নেই, তাই আমি পৃথক পোস্টের জন্য গিয়েছিলাম।
ডেনিস

8

05 এ বি 1 ই , 21 বাইট

vyN+Ny-})¹gL<Ãv¹yè})Z

ব্যাখ্যা

v      }               # for each num in input
 yN+                   # push index + num
    Ny-                # push index - num
        )              # wrap stack in a list
         ¹gL<Ã         # remove indices outside the range of input
              v¹yè})   # get list of elements in input at the remaining indices
                    Z  # get max

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


আপনি সম্ভবত এটি সর্বদা ব্যবহার করুন তবে আমি কেবল "তালিকায় মোড়ক স্ট্যাক" লক্ষ্য করেছি। ঝরঝরে।
গ্রিনআসজেড

@ গ্রিনআসজেড: হ্যাঁ, আমি সবচেয়ে বেশি যে কমান্ড ব্যবহার করি তা
হ'ল

7

হাস্কেল, 61 57 55 বাইট

f x=maximum[a|(n,a)<-x,(i,b)<-x,b==abs(n-i)]
f.zip[0..]

ব্যবহারের উদাহরণ: (f.zip[0..]) [5,28,14,5,6,3,4,7]-> 14

(আরো বা কম) সংজ্ঞা সরাসরি বাস্তবায়ন: প্রতিটি সূচির জন্য nইনপুট তালিকার xরাখা a := x!!nযদি একটি সূচক iযেখানে b := x!!iসমান abs(n-i)। সর্বাধিক সন্ধান করুন।

সম্পাদনা: @ xnor দুটি বাইট সংরক্ষণ করেছে। ধন্যবাদ!


যেহেতু আপনি ব্যবহার করছেন না x, তাই কোনও ফাংশনটি সংজ্ঞায়িত করা zএবং এতে কমপক্ষে তৈরি করা উচিত zip[0..]
xnor

6

জেলি , 10 বাইট

,N+JFfJị¹Ṁ

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

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

,N+JFfJị¹Ṁ  Main link. Argument: A (array)

,N          Pair A with -A (element-wise negative).
   J        Yield the indices of A [1, ..., len(A)].
  +         Add the elements of A (and their negatives) with the corr. indices.
    F       Flatten the resulting 2D array.
     fJ     Filter indices; remove invalid indices (not in [1, ..., len(A)]) from
            the generated array. The result is the list of all indices of eligible
            elements of A.
       ị¹   Retrieve the corresponding elements of A.
         Ṁ  Take the maximum.

5

পাইথন 3, 85 80 72 বাইট

lambda l,e=enumerate:max(i for p,i in e(l)for s,j in e(l)if j==abs(s-p))

সম্পাদনা: -8 বাইটস @ ডেনিসকে ধন্যবাদ


5

এক্সেল: 32 30 বাইট

=MAX(IF(A:A-ROW(A:A)<0,A:A,0))

আমি এখনও বিশ্বাস করতে পারি না যে আমি এটি সংক্ষেপে পেয়েছি ...

কিভাবে ব্যবহার করার জন্য:
কলাম উ পেস্ট করার পর কোষগুলোর ব্যতীত কোনো কোষে এই পেস্ট এখনও সম্পাদনা প্রেস control+ + shift+ + enterসঠিকভাবে প্রবেশ করতে।
আপনার মানগুলিকে কলাম এ এ দিন, প্রতি ঘরে 1 মান (সিএসভি এন্ট্রি অনুসারে)।

এটি কীভাবে কাজ করে তা যদি আপনি জানতে চান তবে এক্সেল প্রশ্নে গল্ফ করার জন্য আমার টিপসে একটি অতিরিক্ত টিপ পোস্ট করেছি ।


আমি এই এক্সেল গল্ফগুলিকে ভালবাসছি - কে ভেবেছিল !!
গ্রিনআসজেড

4

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

a=>Math.max(...a.filter((_,i)=>a.some((e,j)=>e==i-j|e==j-i)))

4

পার্ল, 45 বাইট

জন্য +2 অন্তর্ভুক্ত -ap

STDIN- এ একটি লাইনে নম্বর দিন:

largest.pl <<< "5 12 2 5 4 7 3 3 6 2 10 5 5 5 4 1 8 5"

largest.pl:

#!/usr/bin/perl -ap
($_)=sort{$b-$a}map@F[$^P=$n-$_,$n+++$_],@F

^Pআক্ষরিক নিয়ন্ত্রণের অক্ষর দ্বারা প্রতিস্থাপন করে আরও একটি বাইট অর্জন করা যেতে পারে তবে এটি সাম্প্রতিক পার্লস সম্পর্কে এসটিডিআরআর সম্পর্কে একটি সতর্কবার্তা বাড়ে।

অনুমান largest number + array length < 2^32


3

পাইথ, 19 17 বাইট

-২ বাইটের জন্য @ পিটু ১৯৯৮ ধন্যবাদ

eS@LQ@UQs.e,-kb+b

একটি প্রোগ্রাম যা STDIN- এ একটি তালিকার ইনপুট নেয় এবং ফলাফল মুদ্রণ করে।

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

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

eS@LQ@UQs.e,-kb+b  Program. Input: Q
         .e        Map over Q (implicit input fill) with elements as b and indices as k:
            -kb     k-b
               +b   k+b (Implicit fill with k)
           ,        2-element list of those (possible indices)
        s          Flatten that
      UQ           Yield [0, 1, 2, 3..., len(Q)-1]
     @             Filter the flattened list by presence in the above, removing invalid
                   indices
  @LQ              Index into Q at those indices
 S                 Sort that
e                  Yield the last element of that, giving the maximum
                   Implicitly print

}#হিসাবে একই @। এছাড়াও, আপনি যদি সর্বশেষ বিটটি পুনরায় সাজান ,-kb+bkতবে আপনি kপাইথটি স্বয়ংক্রিয়ভাবে সন্নিবেশ করায় এটি সর্বশেষটিকে সরিয়ে ফেলতে পারেন ।
পূর্কাকুডারী

@ Pietu1998 ধন্যবাদ আমি গণনা করার জন্য অন্তর্ভুক্ত পূরণ সম্পর্কে জানতাম না; এটি কি অন্য কোনও মানচিত্র-ধরণের ফাংশনগুলির জন্য কাজ করে?
দ্য বাইকিংভিাইকিং

যে কোনও ল্যাম্বদার জন্য কাজ করে, এটি প্রথম ল্যাম্বডা ভেরিয়েবলের সাথে বাকী কোনও ল্যাম্বডাটি স্বয়ংক্রিয়ভাবে পূরণ করে।
পূর্বকুডারী

3

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

ttn:tYTq=a)X>

ইনপুট অবশ্যই একটি কলাম ভেক্টর হতে হবে। অর্থাত্, ইনপুটটি [1; 2; 3] এর মতো সেমিকোলন-বিভক্ত, বা কমাটি [1,2,3] 'এর মতো শেষে ট্রান্সপোজ টিকের সাহায্যে পৃথক।

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

সমস্ত পরীক্ষার কেস: (ক) , (খ) , (সি) , (ডি) , (ই) , (এফ)

2 টি অক্ষর বাঁচাতে এমএটিএল চ্যাটরুমে পরামর্শ দেওয়ার জন্য সুয়েভারকে ধন্যবাদ ।

ব্যাখ্যা:

সামগ্রিক কৌশলটি আমার অ্যাকটাভ / এমএটিএলবি উত্তরের মতো, যেখানে মূল ধারণাটি ব্যাখ্যা করা হয়েছে: /codegolf//a/94161/42247

এই এমএটিএল উত্তরের নির্দিষ্ট কোডটি নীচে তৈরি করা হয়েছে:

পদ্ধতির মূলটি হ'ল টোপলিটজ ম্যাট্রিক্স নির্মাণ যাঁর আইবি'র প্রবেশিকা অ্যাবস (আইজে)। আমরা প্রথমে এমএটিএল এর টপলিটজ কমান্ড ওয়াইটি দিয়ে এন্ট্রি অ্যাবস (আই -1) +1 দিয়ে টোপলিটজ ম্যাট্রিক্সটি নিম্নরূপভাবে নির্মাণ করি:

n:tYT % Equivalent to @(v)toeplitz(1:length(v))

এটি কীভাবে কাজ করে তা দেখতে, আসুন এই কোড স্নিপেটে ইনপুট ভেক্টরকে কল করুন 'ভি'। 'এন' v এর দৈর্ঘ্য সন্ধান করে, তারপরে ':' ভেক্টর 1: দৈর্ঘ্য (v) গঠন করে। এর পরে 't' স্ট্যাকের উপর 1: দৈর্ঘ্য (v) এর অনুলিপি তৈরি করে; এমএটিএল (টোপলিটজ () এর সমতুল্য এমএটিএল সমতুল্য ওয়াইটি ফাংশনে সুপরিচিত বাগের কারণে এই অতিরিক্ত অনুলিপিটির প্রয়োজন রয়েছে, যেখানে এটি 1 এর পরিবর্তে ইনপুটটির দুটি অনুলিপি প্রত্যাশা করে Then তারপরে ওয়াইটি এই ভেক্টরের দুটি অনুলিপি নেয় : দৈর্ঘ্য (v) স্ট্যাকটি বন্ধ করে দেয় এবং এগুলি থেকে তাদের (ij) +1 টোপলিটজ ম্যাট্রিক্স তৈরি করে।

এন্ট্রি অ্যাবস (আইজে) দিয়ে টোপলিটজ ম্যাট্রিক্স পেতে এখন এই ম্যাট্রিক্স থেকে আমাদের 1 টি বিয়োগ করতে হবে এবং আইপি অবস্থানগুলি যেখানে এই অ্যাবস (ij) টোপলিটজ ম্যাট্রিক্স ইনপুটটির কলাম-অনুলিপিযুক্ত সমস্ত কলাম ভেক্টরের ম্যাট্রিক্সের সমান হবে তা সন্ধান করতে হবে need ভেক্টর ভি। এটি নিম্নলিখিত হিসাবে করা হয়:

t n:tYT q=
% t [code] q= is equivalent to @(v) [code](v)-1 == v

প্রথম 'টি' ইনপুটটির একটি অতিরিক্ত অনুলিপি তৈরি করে এবং স্ট্যাকের উপরে সঞ্চয় করে। 'এন: টিওয়াইটি' পূর্বে বর্ণিত হিসাবে টোপলিটজ ম্যাট্রিক্সকে তৈরি করে এবং স্ট্যাকের মধ্যে আউটপুট দেয়। তারপরে 'কিউ' টোপলিটজ ম্যাট্রিক্স থেকে 1 টি বিয়োগ করে এবং '=' অ্যাবস (আইজে) ম্যাট্রিক্স এবং ভেক্টরের মধ্যে কলামগুলির ইনপুটটির অনুলিপিগুলির মধ্যে মৌলিক সমতা তুলনা করে। নোট করুন যে কোনও কলাম ভেক্টরকে ম্যাট্রিক্সের সাথে তুলনা করে আমরা স্পষ্টতই ম্যাটল্যাব / এমএটিএল অপারেটর ব্রডকাস্টিং বিধিগুলি গ্রহণ করছি (তুলনায় কলামের ভেক্টর কোনও আদেশ না দিয়ে ম্যাট্রিক্স তৈরি করতে অনুলিপি পেয়েছে)।

অবশেষে, আমাদের সারি সূচকগুলি খুঁজে বের করতে হবে যেখানে যেখানে একটি কলাম জে রয়েছে যে উপরে নির্মিত ম্যাট্রিক্স পার্থক্যের ij'th এন্ট্রি 1 সমান, তারপরে এই সূচকগুলির সাথে সম্পর্কিত ইনপুট ভেক্টরের মান পাবেন, তারপরে সর্বাধিক গ্রহণ করুন। এটি নিম্নলিখিত তিনটি পদক্ষেপে:

1) ননজারোযুক্ত যে কোনও সারির সূচকগুলি সন্ধান করুন:

tn:tYTq= a
% [code] a is equivalent to @(v) any([code](v))

2) ইনডেক্স ভেক্টরের উপাদানগুলি সেই সূচকগুলির সাথে সম্পর্কিত করুন:

t tn:tYTq= a ) X>
% t [code] ) is equivalent to @(v) v([code](v)]

3) সর্বাধিক উপাদানটি সন্ধান করুন এবং ফিরে দিন:

t tn:tYTq= a ) X>
% [code] X> is equivalent to @(v) max(v).

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

আপনি হয় লিঙ্কযুক্ত কোডটি সম্পাদনা করতে পারেন এবং একটি নোট রেখে দিতে পারেন, বা এই লিঙ্কটি এমএটিএল অনলাইন ইন্টারপ্রেটারে ব্যবহার করতে পারেন , যা পুরানো প্রকাশগুলি সমর্থন করে। দুর্ভাগ্যক্রমে আপনাকে অন্যান্য লিঙ্কগুলিও আপডেট করতে হবে। অসুবিধার জন্য দুঃখিত
লুইস মেন্ডো


2

রুবি, 66 বাইট

->a{i=-1;a.map{|e|i+=1;[a[j=i+e]||0,a[0>(k=i-e)?j:k]||0].max}.max}

2

অক্টাভা / ম্যাটল্যাব, 40 বাইট

@(v)max(v(any(toeplitz(1:nnz(v))-v==1)))

ইনপুট অবশ্যই একটি কলাম ভেক্টর হতে হবে।

3 টি বাইট সংরক্ষণের পরামর্শের জন্য লুই মেন্ডোকে ধন্যবাদ (মন্তব্য দেখুন)

আরও 4 টি বাইট (যে কোনও () দিয়ে (sum (যোগফল ()) প্রতিস্থাপনের জন্য পরামর্শের জন্য স্যুভারকে ধন্যবাদ

ব্যাখ্যা:

একটি ইনপুট ভেক্টর ভি দেওয়া, এই সমস্যাটি নীচের সমস্ত বিচ্ছিন্ন সমীকরণের i, j সমস্ত সমাধান সন্ধানের সমান,

abs(i-j) = v(i),   i,j both in 1..k,

যেখানে অ্যাবস () হ'ল পরম মান ফাংশন। প্রতিটি ভি (আই) যার জন্য এই সমীকরণটি সমাধান করা হয় তা হ'ল প্রার্থী সমাধানগুলির মধ্যে একটি যা আমরা সর্বাধিকতর করতে পারি।

আই এবং জে এর একটি বিচ্ছিন্ন ক্রিয়াকলাপ হিসাবে, বাম হাতের সমস্ত সম্ভাবনা টোপলিটজ ম্যাট্রিক্সে সাজানো যেতে পারে যা দেখতে এরকম কিছু দেখাচ্ছে:

[0, 1, 2, 3, 4]
[1, 0, 1, 2, 3]
[2, 1, 0, 1, 2]    <--- abs(i-j)
[3, 2, 1, 0, 1]
[4, 3, 2, 1, 0]

এবং যেহেতু ডান হাতটি আইয়ের উপর নির্ভর করে না, এর জন্য সমস্ত সম্ভাবনাগুলি ম্যাট্রিক্সে সাজানো যেতে পারে যেখানে কলামগুলি ইনপুটটির সমস্ত অনুলিপি,

[v(1), v(1), v(1), v(1), v(1)]
[v(2), v(2), v(2), v(2), v(2)]
[v(3), v(3), v(3), v(3), v(3)]   <--- v(i)
[v(4), v(4), v(4), v(4), v(4)]
[v(5), v(5), v(5), v(5), v(5)]

সমীকরণের সমস্ত সমাধান সন্ধান করার জন্য, আমরা এই দুটি ম্যাট্রিকগুলি বিয়োগ করে এবং যেখানে শূন্য রয়েছে সেখানে অবস্থানগুলি সন্ধান করি। সারিগুলি যেখানে শূন্য থাকে সেখানে পছন্দসই সূচকের সাথে মিলে যায় যেখানে অজ যেমন অ্যাবস (আইজে) = ভি (আই) রয়েছে।

অন্যান্য কৌশল:

  • এটি পরম মান ফাংশন প্লাস ওয়ান, অ্যাবস (আইজে) +1 তৈরি করতে কম অক্ষর লাগে, তারপরে সত্য (আনশিফড) নিখুঁত মান ফাংশনটি তৈরির পরিবর্তে পার্থক্যটি যেখানে 1 রয়েছে তা পরীক্ষা করুন।
  • স্পষ্টত v এর কলাম অনুলিপি করতে স্বয়ংক্রিয় অপারেটর সম্প্রচার ব্যবহার করে
  • দৈর্ঘ্যের () পরিবর্তে এনএনজ () এর মাধ্যমে ইনপুটটির দৈর্ঘ্য পায়, যা সমস্যা বিবৃতিতে ইনপুটগুলি ইতিবাচক বলে মনে হয় বলে কাজ করে।

ইনপুট ফর্ম্যাটটি ডিফল্টরূপে নমনীয়। আপনি vকলামের ভেক্টর হিসাবে নিতে পারেন , কেবল উত্তরে এটি উল্লেখ করুন। এছাড়াও, আপনি আরও দুটি বাইট সংরক্ষণের findদ্বারা প্রতিস্থাপন করেছেন~~
লুইস মেন্ডো

@ লুইস মেন্ডো ধন্যবাদ, আমি আপনার পরামর্শগুলি সংযুক্ত করার জন্য পোস্টটি সম্পাদনা করেছি!
নিক

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

বিটিডাব্লু, এমএটিএল toeplitz( YT) এর বাগের কারণে এটি ডিফল্ট হিসাবে দুটি ইনপুট (একটি নয়) ব্যবহার করে
লুইস মেন্ডো

ঠিক আছে শান্ত হও. আমি এটি এমএটিএলে অনুবাদ করেছি এবং এখানে আরও একটি উত্তর পোস্ট করেছি: কোডগল্ফ.স্ট্যাকেক্সেঞ্জাওটা
নিক

1

গণিত, 69 বাইট

Max@MapIndexed[{If[#2[[1]]>#,a[[#2-#]],{}],a[[#2+#]]~Check~{}}&,a=#]&

বেনামে ফাংশন। সংখ্যার ইনপুট হিসাবে একটি তালিকা নেয় এবং আউটপুট হিসাবে একটি পূর্ণসংখ্যা ফেরত দেয়। উত্পন্ন কোনও বার্তা উপেক্ষা করুন।


1

স্কালা, 94 বাইট

a=>a.zipWithIndex.filter(p=>a.zipWithIndex.exists(x=>x._1==Math.abs(p._2-x._2))).unzip._1.max


1

জাভা 7, 125 123 বাইট

int c(int[]a){int r=0,i=0,l=a.length,x;for(;i<l;r=l>(x=i+a[i])?a[x]>r?a[x]:r:r,r=(x=i-a[i++])>0?a[x]>r?a[x]:r:r);return r;}

2 বাইট সংরক্ষণ করেছেন @ এমআরসিওকে ধন্যবাদ ।

অবহেলিত (সাজানোর) এবং পরীক্ষার কোড:

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

class M{
  static int c(int[] a){
    int r = 0,
        i = 0,
        l = a.length,
        x;
    for(; i < l; r = l > (x = i + a[i])
                      ? a[x] > r
                         ? a[x]
                         : r
                      : r,
                 r = (x = i - a[i++]) > 0
                      ? a[x] > r
                         ? a[x]
                         : r
                      : r);
    return r;
  }

  public static void main(String[] a){
    System.out.println(c(new int[]{ 1, 13 }));
    System.out.println(c(new int[]{ 2, 9, 8, 3, 72, 2 }));
    System.out.println(c(new int[]{ 5, 28, 14, 5, 6, 3, 4, 7 }));
    System.out.println(c(new int[]{ 1, 3, 5, 15, 4, 1, 2, 6, 7, 7 }));
    System.out.println(c(new int[]{ 5, 1, 3, 5, 2, 5, 5, 8, 5, 1, 5, 1, 2, 3 }));
    System.out.println(c(new int[]{ 5, 12, 2, 5, 4, 7, 3, 3, 6, 2, 10, 5, 5, 5, 4, 1, 8, 5 }));
  }
}

আউটপুট:

13
8
14
7
5
10

1
আপনার এক্স ও ওয়াইয়ের দরকার নেই। তাদের মধ্যে কেবল একটি পুনরায় ব্যবহার করুন (-2)। এছাড়াও আমি মনে করি না যে আপনি একটি বিশাল ত্রিনিয়ারীতে সেট করতে পারবেন - কারণ আপনাকে সর্বদা বাম এবং ডান উভয় ক্ষেত্রেই পরীক্ষা করতে হবে।
mrco

1
@mrco ধন্যবাদ, মুছে ,y। এবং আমি প্রকৃতপক্ষে একক ত্রৈমাসিকের ক্ষেত্রে একই সিদ্ধান্তে পৌঁছেছি। অবশ্যই এটি সম্ভব, তবে আপনি চেকটি এটিকে আরও দীর্ঘতর করে তুলবেন twice
কেভিন ক্রুইজসেন


1

পাইথন, 58 বাইট

টনি এস এর রুবি উত্তর উপর ভিত্তি করে । এই উত্তরটি পাইথন 2 এবং 3 তে কাজ করে Golf

lambda n:max([n[i+v]for i,v in enumerate(n)if i+v<len(n)])

Ungolfing

def f(array):
    result = []
    for index, value in enumerate(array):
        if index + value < len(array):
            result.append(array[index + value])
    return max(result)

1

রুবি 56 বাইট

আমার সবচেয়ে ছোট রুবি সমাধান।

->n{x=[];i=0;n.map{|v|x<<n[v+i]&&v+i<n.size;i+=1};x.max}

রেল কনসোলে পরীক্ষা করা খুব সহজ

a = ->n{x=[];i=0;n.map{|v|x<<n[v+i]&&v+i<n.size;i+=1};x.max}
a[[1, 13]
=> 13
a[[2, 9, 8, 3, 72, 2]]
=> 8
a[[5, 12, 2, 5, 4, 7, 3, 3, 6, 2, 10, 5, 5, 5, 4, 1, 8, 5]]
=> 10

এটি 63 টি বাইটে শুরু হয়েছিল, এটি কেটে ফেলতে সহায়তা করার পরামর্শের জন্য ধন্যবাদ!


আপনি .mapপরিবর্তে ব্যবহার করতে পারেন.each
সাইয়েস

এছাড়াও (x) if (y)প্রতিস্থাপন করা যেতে পারে(y)&&(x)
সাইওস

আপনি এর a<<bপরিবর্তে ব্যবহার করতে পারেনa+=[b]
শার্লক 9

@ শার্লক 9 আমি << সম্পর্কে ভুলে গেছি। একটি + = [বি] ব্যবহার করা && ব্যবহার করে সায়োসের পরামর্শ নিয়ে কাজ করেনি। এখন, ধন্যবাদ!
টনি এস

1

আসলে , 17 বাইট

এই উত্তরটি আসলে আমার পাইথন উত্তরের একটি বন্দর । গল্ফিং পরামর্শ স্বাগত জানাই। এটি অনলাইন চেষ্টা করুন!

;╗ñ♂Σ⌠╜l>⌡░⌠╜E⌡MM

Ungolfing

         Implicit input L.
;╗       Duplicate L and save a copy of L to register 0.
ñ        enumerate() the other copy of L.
♂Σ       sum() all the pairs of [index, value of n]. Call this list Z.
⌠...⌡░   Push values of Z where the following function returns a truthy value. Variable v_i.
  ╜        Push L from register 0.
  l        Push len(L).
  >        Check if len(L) > v_i.
⌠...⌡M   Map the following function over Z_filtered. Variable i.
  ╜        Push L from register 0.
  E        Take the ith index of L.
M        max() the result of the map.
         Implicit return.

0

টি-এসকিউএল (স্ক্লোসারভার 2016), 132 বাইট

Golfed:

;WITH C as(SELECT value*1v,row_number()over(order by 1/0)n FROM STRING_SPLIT(@,','))SELECT max(c.v)FROM C,C D WHERE abs(D.n-C.n)=D.v

Ungolfed:

DECLARE @ varchar(max)='2, 9, 8, 3, 72, 2'

;WITH C as
(
  SELECT
    value*1v,
    row_number()over(order by 1/0)n
  FROM
    STRING_SPLIT(@,',')
)
SELECT
  max(c.v)
FROM
  C,C D
WHERE
  abs(D.n-C.n)=D.v

বেহালা


0

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

let f =
    
l=>l.map((n,i)=>m=Math.max(m,l[i+n]|0,l[i-n]|0),m=0)|m

console.log(f([1, 13])); // → 13
console.log(f([2, 9, 8, 3, 72, 2])); // → 8
console.log(f([5, 28, 14, 5, 6, 3, 4, 7])); // → 14
console.log(f([1, 3, 5, 15, 4, 1, 2, 6, 7, 7])); // → 7
console.log(f([5, 1, 3, 5, 2, 5, 5, 8, 5, 1, 5, 1, 2, 3])); // → 5
console.log(f([5, 12, 2, 5, 4, 7, 3, 3, 6, 2, 10, 5, 5, 5, 4, 1, 8, 5])); // → 10


0

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

#(apply max(map(fn[i](get % i 0))(flatten(map-indexed(juxt - +)%))))

উদাহরণস্বরূপ (map-indexed (juxt - +) [3 4 1 2])হয় ([-3 3] [-3 5] [1 3] [1 5])(INDEX +/-এর মান), এই মূল ভেক্টর থেকে লুক-আপ মান ব্যবহৃত হয় (আউট-অফ-পরিসরের খেলাপি 0) এবং সর্বোচ্চ মান পাওয়া যায়। এখনও কিছুটা ভার্জোজ মনে হলেও কমপক্ষে আমি ব্যবহার করতে পেরেছি juxt:)

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