শূন্যের সংলগ্ন বৃহত্তম সংখ্যাটি সন্ধান করুন


38

চ্যালেঞ্জ:

ইনপুট হিসাবে পূর্ণসংখ্যার ভেক্টর / তালিকা নিন এবং একটি শূন্য সংলগ্ন বৃহত্তম সংখ্যাকে আউটপুট দিন।

বিশেষ উল্লেখ:

  • সর্বদা হিসাবে, inputচ্ছিক ইনপুট এবং আউটপুট ফর্ম্যাট
  • আপনি ধরে নিতে পারেন যে সেখানে কমপক্ষে একটি শূন্য এবং কমপক্ষে একটি অ শূন্য উপাদান থাকবে।

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

1 4 3 6 0 3 7 0
7

9 4 9 0 9 0 9 15 -2
9

-4 -6 -2 0 -9
-2

-11 0 0 0 0 0 -12 10
0

0 20 
20

শুভকামনা এবং শুভ গল্ফিং!


আপনার চতুর্থ হিসাবে একটি পরীক্ষা কেস যুক্ত করা উচিত, কিন্তু যেখানে ফলাফল নেতিবাচক (তালিকায় ইতিবাচক সংখ্যা আছে)।
mbomb007

আমি রেটিনাতে এটি চেষ্টা করতে যাচ্ছিলাম, কিন্তু তখন আমি লক্ষ্য করেছি সেখানে thereণাত্মক রয়েছে are রেটিনা ঘৃণিত ঘৃণা করে।
mbomb007

2
আপনি কী করতে পারেন এবং কী করতে পারবেন না রেটিনা নির্দেশ দেয় না। দায়িত্ব গ্রহণ করুন, আপনি মনিব!
স্টিভি গ্রিফিন

উত্তর:



19

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

t~5BZ+g)X>

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

ব্যাখ্যা

[-4 -6 -2 0 -9]একটি উদাহরণ হিসাবে ইনপুট গ্রহণ করা যাক ।

t     % Input array. Duplicate
      %   STACK: [-4 -6 -2 0 -9],  [-4 -6 -2 0 -9]
~     % Logical negate. Replaces zeros by logical 1, and nonzeros by logical 0
      %   STACK: [-4 -6 -2 0 -9],  [0 0 0 1 0]
5B    % Push logical array [1 0 1] (5 in binary)
      %   STACK: [-4 -6 -2 0 -9], [0 0 0 1 0], [1 0 1]
Z+    % Convolution, maintaining size. Gives nonzero (1 or 2) for neighbours of
      % zeros in the original array, and zero for the rest
      %   STACK: [-4 -6 -2 0 -9], [0 0 1 0 1]
g     % Convert to logical
      %   STACK: [-4 -6 -2 0 -9], [0 0 1 0 1]
)     % Use as index into original array
      %   STACK: [-2 -9]
X>    % Maximum of array.
      %   STACK: -2
      % Implicitly display

x(~~(dec2bin(5)-48))। কে বাস্তবায়নের জন্য এটি ধারণা? যৌক্তিক অ্যারেগুলির জন্য খুব চালাক এবং কার্যকর! :) চমৎকার উত্তর!
স্টিভি গ্রিফিন

1
@ ওয়েইংআইফ ফার্স্ট ধন্যবাদ! আমি dec2bin()-'0'ম্যাটল্যাবে কয়েকবার ব্যবহার করেছি , তাই আমি জানতাম যে একজন এমএটিএলতে থাকতে হবে :-)
লুইস মেন্ডো

5
যাইহোক, আপনি প্রতিটি অপারেশনের পরে স্ট্যাকের সামগ্রীটি অন্তর্ভুক্ত করেছেন তা একা একাই মূল্যবান। এটি এমএটিএল = (এবং সম্ভবত শিখতে) বুঝতে এত সহজ করে তোলে
স্টিভি গ্রিফিন

2
কনভলিউশন রকস +1
স্যুভার

10

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

ü‚D€P_ÏOZ

ব্যাখ্যা

ü‚         # pair up elements
  D        # duplicate
   €P      # product of each pair (0 if the pair contains a 0)
     _     # logical negate, turns 0 into 1 and everything else to 0
      Ï    # keep only the pairs containing at least 1 zero
       O   # sum the pairs
        Z  # take max

অনলাইন ইন্টারপ্রেটারে কাজ করে না, তবে অফলাইনে কাজ করে।


এই আশ্চর্য হাহা! ঠিক সময়ে: পি।
আদনান

1
শুধু এই অপারেটরগুলির একটি প্রয়োগ করেছেন নাকি? :)
স্টিভি গ্রিফিন

1
@ ওয়েইজআইফ ফার্স্ট: üঠিক গতকাল যুক্ত করা হয়েছিল :)
এমিগানা

2
0আসল উত্তর নেতিবাচক হলে এই প্রত্যাবর্তন হবে না? আমার মনে হয় আপনাকে শূন্যগুলি ফেলে দিতে হবে।
লিন

1
@ লিন ভালো লাগছে! এই সহজে প্রতিস্থাপন সংশোধন করা যেতে পারে ˜সঙ্গে O(যোগফল)।
আদনান

9

হাস্কেল, 63 43 বাইট

f x=maximum[a+b|(a,b)<-tail>>=zip$x,a*b==0]

চারটি বাইটের জন্য @ মার্টিনইেন্ডারকে ধন্যবাদ!


আমি মনে করি আপনি এর a*b==0পরিবর্তে ব্যবহার করতে পারেন ||
মার্টিন এন্ডার

জিপ সহ আপনাকে পূর্ববর্তী সংস্করণে ফিরে যেতে হবে। এখানে একটি এবং এখন আর সংলগ্ন নেই
ড্যামিয়েন

আপনার এখানে ল্যাম্বডাবোট লাগবে না। এটি "নিয়মিত" হাস্কেল
ড্যামিয়েন

8

পাইথ, 12 11 10 বাইট

eSsM/#0,Vt

ফর্ম জোড়, শূন্য সদস্য দ্বারা ফিল্টার, যোগফল অনুসারে, বৃহত্তম ফেরত দেয় returns


,Vt(অন্তর্নিহিত QQ) একই জোড়া হিসাবে ফেরত দেয় .:Q2, তবে জোড়াগুলি উল্টিয়ে দেওয়া হয়। যদিও কাজ করা উচিত।
পূর্বকুডারী

f}0Tহয়/#0
isaacg

7

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

let f =
    
l=>l.map((n,i)=>m=l[i-1]==0|l[i+1]==0&&n>m?n:m,m=-1/0)|m

console.log(f([1, 4, 3, 6, 0, 3, 7, 0]));       // 7
console.log(f([9, 4, 9, 0, 9, 0, 9, 15, -2]));  // 9
console.log(f([-4, -6, -2, 0, -9]));            // -2
console.log(f([-11, 0, 0, 0, 0, 0, -12, 10]));  // 0
console.log(f([3, 0, 5]));                      // 5
console.log(f([28, 0, 14, 0]));                 // 28

সম্পাদনা: হান্ট্রোর 2 টি বাইট সংরক্ষণ করা হয়েছে সম্পাদনা: ETH প্রোডাকশনগুলিতে
1 বাইট ধন্যবাদ সংরক্ষণ করা হয়েছে


1
আপনি এর ==পরিবর্তে দুটি বাইট সংরক্ষণ করতে পারেন===
হান্ট্রো

1
আমি কয়েকটি স্থানে কয়েকটি বাইট সংরক্ষণ করতে পারি:l=>l.map((n,i)=>m=l[i-1]*l[i+1]==0&n>m?n:m,m=-1/0)|m
ETH প্রোডাকশনগুলি

ত্রুটি: {"বার্তা": "সিনট্যাক্স ত্রুটি", "ফাইলের নাম": " স্ট্যাকসনিপেটস.net/js ", "লিনেনো": 15, "কোলনো": 3}
রোজলুপ

@ রসলুপি - এর জন্য তীর ফাংশন সমর্থন সহ ES6 প্রয়োজন এবং সমস্ত ব্রাউজারগুলিতে কাজ করবে না (সহ, তবে সীমাবদ্ধ নয়: এজ এর আগে সমস্ত আইই সংস্করণ, ভি 10 এর নীচে সমস্ত সাফারি সংস্করণ ইত্যাদি)
আর্নল্ড

6

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

a=>(m=-1/0,a.reduce((l,r)=>(m=l*r||l+r<m?m:l+r,r)),m)

কারণ আমি ব্যবহার পছন্দ করি reduce। বিকল্প সমাধান, এছাড়াও 53 বাইট:

a=>Math.max(...a.map((e,i)=>e*a[++i]==0?e+a[i]:-1/0))

5

পাইথন, 49 বাইট

lambda a:max(sum(x)for x in zip(a,a[1:])if 0in x)

পরীক্ষাগুলি আদর্শে

জোড়গুলির মাধ্যমে জিপগুলি, যে কোনও শূন্য রয়েছে তার সমষ্টি করে, সর্বোচ্চটি দেয়।


4

রুবি, 51 বাইট

->a{a.each_cons(2).map{|a,b|a*b!=0?-1.0/0:a+b}.max}

ব্যবহার

f=->a{a.each_cons(2).map{|a,b|a*b!=0?-1.0/0:a+b}.max}
p f[gets.split.map(&:to_i)]

আমার মনে হয় না আপনার চারপাশে প্রথম বন্ধনী প্রয়োজন a+b
মার্টিন এন্ডার

@ মার্টিন ইন্ডার সিনট্যাক্স ত্রুটি দেখা দেয় ... আদর্শ one.com/F6Ed4B
cia_rana

এটি রুবি ২.৩ এ কাজ করে। (উদাহরণস্বরূপ এখানে উপলভ্য: repl.it/languages/ruby )
মার্টিন এন্ডার

@ মার্টিন ইন্ডার যখন আমি "==" এর পরিবর্তে "! =" ব্যবহার করি তখন এটি কার্যকর হয়। আপনার উপদেশের জন্য ধন্যবাদ! ideone.com/F6Ed4B
cia_rana

। সেখানে :( সেখানে একটি বাগ এর -3 -2 0আয় 0আমি প্রতিস্থাপন চিন্তা করুন। ...?0:...সঙ্গে ...?-1.0/0:...এটা ঠিক করা উচিত, 5 বাইট যোগ করা হয়েছে।
M-chrzan

4

পিএইচপি, 77 68 71 বাইট

অজ্ঞাতনামা থেকে -3 বাইট, -4 এবং মার্টিনেন্ডার থেকে -2

preg_match_all("#(?<=\b0 )\S+|\S+(?= 0)#",$argv[1],$m);echo max($m[0]);

সাথে চালানো php -r '<code>' '<space separated values>'


2
\Kম্যাচটি এখন পর্যন্ত ফেলে দেওয়ার জন্য লুক-ব্যাক ব্যবহার করার চেয়ে খাটো।
ব্যবহারকারী59178

2
আপনি ইনপুট জন্য স্পেস বিভাজন এবং তারপরে \S+একটি স্বাক্ষরিত পূর্ণসংখ্যার সাথে মেলে ব্যবহার করতে পারেন । আপনাকে সম্ভবত এটি ব্যবহার করতে হবে \b0,যাতে আপনার এটির আগেই চাপ দিতে হবে না ,
মার্টিন এন্ডার

1
এই ইনপুট জন্য কাজ করে 4 0 0 5?
টন হসপেল

@ টনহসপেল নং \Kবিকল্পগুলির সাথে কাজ করে না? অজানা কারণে, দ্বিতীয় বিকল্পটি ফিরে আসে 0 0, যাতে এর 0আগে আর কোনও মেলে না 5। স্থির, ধন্যবাদ।
টাইটাস

অন্যান্য পিএইচপি সমাধানটি রেজিস্টার_গ্লোবালগুলির সাথে একবার দেখুন
Jurg Hülsermann

4

জাভা 7, 118 105 106 বাইট

int d(int[]a){int i=0,m=1<<31,c;for(;++i<a.length;m=a[i]*a[i-1]==0&(c=a[i]+a[i-‌​1])>m?c:m);return m;}

পরিবর্তে একটি গাণিতিক পদ্ধতির ব্যবহার করে 13 বাইট @ ক্লিফ্রুটকে ধন্যবাদ বাঁচিয়েছে । 1 টি অতিরিক্ত বাইট @ এমআরসিওকে একটি বাগ আবিষ্কার করার পরে তাকে ধন্যবাদ জানায় (যুক্ত টেস্টের ক্ষেত্রে পরিবর্তে 2, 1, 0ফিরে আসবে )।21

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

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

class M{
  static int c(int[] a){
    int i,
        m = a[i=0],
        c;
    for(; ++i < a.length; m = a[i] * a[i-1] == 0 & (c = a[i] + a[i - 1]) > m)
                           ? c
                           : m);
    return m;
  }

  public static void main(String[] a){
    System.out.println(c(new int[]{ 1, 4, 3, 6, 0, 3, 7, 0 }));
    System.out.println(c(new int[]{ 9, 4, 9, 0, 9, 0, 9, 15, -2 }));
    System.out.println(c(new int[]{ -4, -6, -2, 0, -9 }));
    System.out.println(c(new int[]{ -11, 0, 0, 0, 0, 0, -12, 10 }));
    System.out.println(c(new int[]{ 0, 20 }));
    System.out.println(c(new int[]{ 2, 1, 0 }));
  }
}

আউটপুট:

7
9
-2
0
20
1

1
পাটিগণিত ব্যবহার করে কিছুটা ভিন্ন পদ্ধতি, কাজ করছে বলে মনে হচ্ছেint d(int[]a){int i,m=a[i=0],c;for(;++i<a.length;m=a[i]*a[i-1]==0&(c=a[i]+a[i-1])>m?c:m);return m;}
21-18

3
আউটপুটটি ভুল, যখন প্রথম সংখ্যাটি 0 টি সংলগ্ন না হয় তবে 0 সংলগ্ন যে কোনও সংখ্যার চেয়ে বড় হয় the 2, 1, 0} পরীক্ষার ক্ষেত্রে পুনরুত্পাদনযোগ্য} আপনি সরাসরি 0 এবং 1 << 31 (সামগ্রিকভাবে +1) দিয়ে এম দিয়ে সূচনা করে এটি ঠিক করতে পারেন।
mrco


3

চিত্র প্রসেসিং সরঞ্জামবক্স, 32 বাইট সহ ম্যাটল্যাব

@(x)max(x(imdilate(~x,[1 0 1])))

এটি একটি বেনামে ফাংশন। পরীক্ষার ক্ষেত্রে ব্যবহারের উদাহরণ:

>> f = @(x)max(x(imdilate(~x,[1 0 1])))
f =
  function_handle with value:
    @(x)max(x(imdilate(~x,[1,0,1])))

>> f([1 4 3 6 0 3 7 0])
ans =
     7

>> f([9 4 9 0 9 0 9 15 -2])
ans =
     9

>> f([-4 -6 -2 0 -9])
ans =
    -2

>> f([-11 0 0 0 0 0 -12 10])
ans =
     0

>> f([0 20])
ans =
    20

3

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

⌈/∊2(+↑⍨0∊,)/⎕

⌈/ বৃহত্তম

সমতল (" তালিকাভুক্ত"

2(... )/যুগলভাবে

+ যোগফল (শূন্য প্লাস কিছু হ'ল)

↑⍨ নেওয়া হয়েছে যদি

0 শূন্য

এর একজন সদস্য

, জুড়ি (লিট। বাম-হাতের নম্বর এবং ডান হাতের সংখ্যার সংমিশ্রণ)

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


3

আর, 48 47 বাইট

সম্পাদনা করুন: ফিক্সড @Vlo একটি ত্রুটি ধন্যবাদ এবং stdins থেকে ইনপুট পড়তে এটি পরিবর্তিত, বরাদ্দ করে এক বাইট সংরক্ষিত wএবং parantheses কুঁদন।

function(v)sort(v[c(w<-which(v==0)-1,w+1)],T)[1]

v=scan();w=which(v==0);sort(v[c(w-1,w+1)],T)[1]

নিরীক্ষণ ব্যাখ্যা

  1. ভেক্টর vযে মানগুলিতে 0 নেয় তার জন্য সূচকগুলি সন্ধান করুন:w <- which(v == 0)
  2. নতুন ভেক্টর তৈরি করুন যাতে সূচকগুলি থাকে +-1: w-1এবংw+1
  3. সূচকগুলির সাথে মেলে এমন উপাদানগুলি বের করুন w-1এবংw+1
  4. অবতরণ ক্রমে বাছাই করুন এবং মুষ্টি উপাদানটি বের করুন

মনে রাখবেন যে এর শেষ বা প্রথম উপাদানটি vযদি শূন্য হয় w+-1তবে কার্যকরভাবে ভেক্টরের দৈর্ঘ্যের বাইরে একটি সূচক আনতে হবে যা বোঝায় যে এটি v[length(v)+1]প্রত্যাবর্তন করে NA। এটি সাধারণত কোনও সমস্যা নয় তবে ভেক্টরের কোনও উপস্থিতি যদি বিকল্পটি নির্দিষ্ট না করে তবে max()ফাংশনগুলি অসুবিধাজনকভাবে ফিরে আসে । সুতরাং এটি ব্যবহারের চেয়ে প্রথম উপাদানটিকে বাছাই করতে এবং বের করতে 2 বাইট কম হয় , যেমন:NAna.rm=Tmax()

max(x,na.rm=T)
sort(x,T)[1]

1
একটি অতিরিক্ত প্রথম বন্ধনী প্রয়োজন অন্যথায় সমস্ত পরীক্ষার ক্ষেত্রে ব্যর্থ হয় যেখানে সর্বোচ্চ 0 থেকে ডান হয় যেমন c(1, 4, 3, 6, 0, 10, 7, 0) c((w<-which(v==0))-1,w+1)স্ক্যান সহ একটি ছোট বিট আরও ছোট হয়sort((v<-scan())[c(w<-which(v==0)-1,w+1)],T)[1]
Vlo

@ ভলো যে সুস্পষ্ট ত্রুটিটি দেখিয়ে দেওয়ার জন্য ধন্যবাদ, +1। আপনার প্রস্তাবিত সমাধানটিতে আপনি ()খুব ভুলে গেছেন ;)। কোড আপডেট করেছে এবং vএখন পূর্বনির্ধারিত ম্যানিপুলেশন বরাদ্দ করেছে ।
বিলিউব

3

গণিত, 46 43 বাইট

@ মার্টিনইেন্ডারের কারণে 3 বাইট সংরক্ষণ করা হয়েছে ।

Max[Tr/@Partition[#,2,1]~Select~MemberQ@0]&

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


2

পার্ল, 42 বাইট

এর জন্য +1 অন্তর্ভুক্ত -p

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

largest0.pl <<< "8 4 0 0 5 1 2 6 9 0 6"

largest0.pl:

#!/usr/bin/perl -p
($_)=sort{$b-$a}/(?<=\b0 )\S+|\S+(?= 0)/g

2

জুলিয়া, 56 55 বাইট

f(l)=max(map(sum,filter(t->0 in t,zip(l,l[2:end])))...)

প্রতিবেশী মানগুলির জন্য টিপলস তৈরি করুন, 0 টি সমষ্টিযুক্ত টিউপলগুলি নিন, যোগফলের মানগুলি যোগ করুন এবং সর্বাধিক সন্ধান করুন


1

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

def f(x):x=[9]+x;print max(x[i]for i in range(len(x)) if 0in x[i-1:i+2:2])

প্রতিটি এলিমেন্টের উপর চক্র, যদি 0বর্তমান উপাদানটির বাম বা ডান দিকের কোনও অবস্থানে থাকে তবে এটিকে জেনারেটরে অন্তর্ভুক্ত করুন এবং তারপরে চালান max। আমাদের কিছু নম্বরবিহীন তালিকাটি প্যাড করা দরকার 0। এটি কখনই অন্তর্ভুক্ত [-1:2:2]হবে না কারণ স্লাইসে কোনও কিছুই অন্তর্ভুক্ত থাকবে না।


1

টি-এসকিউএল, 182 বাইট

Golfed:

DECLARE @x varchar(max)='1 5 4 3 6 1 3 17 1 -8 0 -7'

DECLARE @a INT, @b INT, @ INT WHILE @x>''SELECT @a=@b,@b=LEFT(@x,z),@x=STUFF(@x,1,z,''),@=IIF(@a=0,IIF(@b<@,@,@b),IIF(@b<>0 or @>@a,@,@a))FROM(SELECT charindex(' ',@x+' ')z)z PRINT @

Ungolfed:

DECLARE @x varchar(max)='1 5 4 3 6 1 3 17 1 -8 0 -7'

DECLARE @a INT, @b INT, @ INT
WHILE @x>''
  SELECT 
   @a=@b,
   @b=LEFT(@x,z),
   @x=STUFF(@x,1,z,''),
   @=IIF(@a=0,IIF(@b<@,@,@b),IIF(@b<>0 or @>@a,@,@a))
  FROM(SELECT charindex(' ',@x+' ')z)z 
PRINT @

বেহালা


1

পাওয়ারশেল v3 +, 62 বাইট

param($n)($n[(0..$n.count|?{0-in$n[$_-1],$n[$_+1]})]|sort)[-1]

অন্যান্য উত্তরগুলির চেয়ে কিছুটা দীর্ঘ, তবে একটি নিফটির পদ্ধতির।

ইনপুট নেয় $n। তারপরে সূচকগুলির মধ্য দিয়ে লুপ করে 0..$n.count, Where-Object( |?{...}) ব্যবহার করে সেই সূচকগুলি বের করতে যেখানে অ্যারেতে পূর্ববর্তী বা পরবর্তী আইটেম রয়েছে 0এবং সেগুলি আবার অ্যারে স্লাইসে ফিড করে $n[...]। আমরা তখন |sortসেই উপাদানগুলি, এবং সবচেয়ে বড় গ্রহণ করি [-1]

উদাহরণ

PS C:\Tools\Scripts\golfing> @(1,4,3,6,0,3,7,0),@(9,4,9,0,9,0,9,15,-2),@(-4,-6,-2,0,-9),@(-11,0,0,0,0,0,-12,10)|%{""+$_+" --> "+(.\largest-number-beside-a-zero.ps1 $_)}
1 4 3 6 0 3 7 0 --> 7
9 4 9 0 9 0 9 15 -2 --> 9
-4 -6 -2 0 -9 --> -2
-11 0 0 0 0 0 -12 10 --> 0

PS C:\Tools\Scripts\golfing> @(0,20),@(20,0),@(0,7,20),@(7,0,20),@(7,0,6,20),@(20,0,6)|%{""+$_+" --> "+(.\largest-number-beside-a-zero.ps1 $_)}
0 20 --> 20
20 0 --> 20
0 7 20 --> 7
7 0 20 --> 20
7 0 6 20 --> 7
20 0 6 --> 20

1

q, 38 বাইট

{max x where 0 in'x,'(next x),'prev x}

সর্বাধিক 0 এর পরে আসে যখন এটি কাজ করে না বলে মনে হয় । এছাড়াও, আমি কোনও কিউ বিশেষজ্ঞ নই, তবে আমি মনে করি {}এটি কার্যকর করার জন্য আপনাকে আপনার কোডটি ঘিরে রাখতে হবে।
ডেনিস

1

জে, 18 বাইট

[:>./2(0&e.\#+/\)]

ব্যাখ্যা

[:>./2(0&e.\#+/\)]  Input: array A
                 ]  Identity. Get A
     2              The constant 2
      (         )   Operate on 2 (LHS) and A (RHS)
               \    Get each subarray of size 2 from A and
             +/       Reduce it using addition
           \        Get each subarray of size 2 from A and
       0&e.           Test if 0 is a member of it
            #       Filter for the sums where 0 is contained
[:>./               Reduce using max and return

1

পার্ল 6 , 53 বাইট

{max map ->$/ {$1 if !$0|!$2},(1,|@_,1).rotor(3=>-2)}

সম্প্রসারিত:

# bare block lambda with implicit signature of (*@_)
{
  max

    map

      -> $/ {           # pointy lambda with parameter 「$/」
                        # ( 「$0」 is the same as 「$/[0]」 )
        $1 if !$0 | !$2 # return the middle value if either of the others is false
      },

      ( 1, |@_, 1 )     # list of inputs, with added non-zero terminals
      .rotor( 3 => -2 ) # grab 3, back-up 2, repeat until less than 3 remain
}

1

পিএইচপি, 66 বাইট

foreach($a=$argv as$k=>$v)$v||$m=max($m,$a[$k-1],$a[$k+1]);echo$m;

অনেকটাই অকপট. ইনপুটটির মাধ্যমে পরিলক্ষিত হয় এবং যখন একটি সংখ্যা হয় 0, এটি $m2 সংলগ্ন সংখ্যার সর্বাধিক সংখ্যক এবং পূর্ববর্তী যেকোন মানকে সেট করে $m

এটি চালান ( -dকেবল নান্দনিকতার জন্য যুক্ত):

php -d error_reporting=30709 -r 'foreach($a=$argv as$k=>$v)$v||$m=max($m,$a[$k-1],$a[$k+1]);echo$m;' -- -4 -6 -2 0 -9;echo

1

সি # 76 74 বাইট

using System.Linq;i=>i.Zip(i.Skip(1),(a,b)=>a*b==0?1<<31:a+b).Max(‌​);

ব্যাখ্যা:

নিজেই অ্যারে যোগ দিতে জিপ ব্যবহার করুন তবে ২ য় রেফারেন্সে প্রথম মানটি এড়িয়ে যাবেন যাতে আইটেম শূন্য আইটেমের সাথে যোগ দেয়। এক বার খের গুণন করুন, ফলাফল শূন্য হলে তার মধ্যে একটি অবশ্যই শূন্য এবং আউটপুট এ + বি হবে। অন্যথায়, ভাষাতে সর্বনিম্ন সম্ভাব্য পূর্ণসংখ্যাকে আউটপুট দিন। আমাদের সর্বদা একটি শূন্য এবং একটি শূন্যহীন থাকবে এই অনুমানের ভিত্তিতে এই সর্বনিম্ন মানটি কখনই সর্বোচ্চ হিসাবে আউটপুট হবে না।

ব্যবহার:

[TestMethod]
public void LargestFriend()
{
    Assert.AreEqual(7, F(new int[] { 1, 4, 3, 6, 0, 3, 7, 0 }));
    Assert.AreEqual(9, F(new int[] { 9, 4, 9, 0, 9, 0, 9, 15, -2 }));
    Assert.AreEqual(-2, F(new int[] { -4, -6, -2, 0, -9 }));
    Assert.AreEqual(0, F(new int[] { -11, 0, 0, 0, 0, 0, -12, 10 }));
    Assert.AreEqual(20, F(new int[] { 0, 20 }));
}

হাই। আপনি স্থান সরাতে পারেন int[]i) {। এছাড়াও, আমি আপনার বর্তমান কোডে 75 বাইট গণনা করছি (যদি আপনি স্থানটি সরিয়ে দেন 74)।
কেভিন ক্রুইজসেন

আমার মনে হয় আপনি টার্নারিগুলি উল্টিয়ে 4 টি বাইট সংরক্ষণ করতে পারেন:a?b?i.Min()).Max():a:b
টাইটাস

প্লাস using System.Linq;, না?
গোলাপিফ্লোয়েডএক্স 33

সত্য তবে এই প্রশ্নটি একটি সম্পূর্ণ প্রোগ্রাম নয়, কেবল একটি পদ্ধতির জন্য জিজ্ঞাসা করেছে এবং System.Linq;এটি ডিফল্ট নতুন শ্রেণির টেম্পলেটটির অংশ।
Grax32

@ গ্র্যাক্সকে যে কোনও উপায়ে usingআপনার বাইট গণনাতে বিবৃতিটি অন্তর্ভুক্ত করতে হবে
TheLethalCoder

1

আর, 48 54 বাইট

s=scan()

w=which;max(s[c(w(s==0)+1,w(s==0)-1)],na.rm=T)

কনসোল ইনপুট থেকে ভেক্টর পড়েন, তারপরে 0 সংলগ্ন সমস্ত মানের চেয়ে সর্বাধিক লাগে।

সম্পাদনা করুন: সীমানায় উত্পাদিত এনএকে ধন্যবাদ, রটারনবুল!


আমি কি এটা ভুল করছি? পেস্টবিন.কম
এএ

এটি যেমন ক্ষেত্রে যেমন ব্যর্থ হয় 20 0, কারণ s[w(s==0)+1]ফিরে আসে NA, এবং maxএর ডিফল্ট চিকিত্সা NAএটি ফেরত দেয়। আপনি যুক্তি যুক্ত করে na.rm=T, বা ব্যবহার করতে কোডটি পুনরায় কাজ করে ঠিক করতে পারেন sort(উপরে পোস্ট করা অন্য আর উত্তর দেখুন)।
rturnbull

আপনি কি এক লাইনে সব ঘন করতে পারেন? আমি কীভাবে আর কোড করব তা আমি জানি না তবে আমি ধরে নিচ্ছি যে আপনি এটি করতে পারেন।
ক্লিমেজিক

@ কিউয়ার্প-ডের্প: আমি যতটা জানি Not স্ক্যান () ভেক্টরে পড়ার জন্য কনসোল ইনপুটটির জন্য অপেক্ষা করে, খালি লাইনে প্রবেশ করে ইনপুট স্ট্রিমটি বন্ধ হয়ে যায়। আপনি যদি দুটি লাইনকে এক হিসাবে চালনা করেন তবে দ্বিতীয় অংশটি কমপক্ষে আংশিকভাবে ভেক্টরের এসের জন্য ইনপুট হিসাবে স্বীকৃত হবে।
হেডক্র্যাশ

0

র‌্যাকেট 183 বাইট

(λ(k)(let*((lr(λ(l i)(list-ref l i)))(l(append(list 1)k(list 1)))(m(for/list((i(range 1(sub1(length l))))
#:when(or(= 0(lr l(sub1 i)))(= 0(lr l(add1 i)))))(lr l i))))(apply max m)))

বিস্তারিত সংস্করণ:

(define f
 (λ(k)
    (let* ((lr (λ(l i)(list-ref l i)))
           (l (append (list 1) k (list 1)))
           (m (for/list ((i (range 1 (sub1(length l))))
                         #:when (or (= 0 (lr l (sub1 i)))
                                    (= 0 (lr l (add1 i))) ))
                (lr l i) )))
      (apply max m) )))

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

(f (list 1 4 3 6 0 3 7 0))
(f (list 9 4 9 0 9 0 9 15 -2))
(f (list -4 -6 -2 0 -9))
(f (list -11 0 0 0 0 0 -12 10))
(f (list 0 20 ))

আউটপুট:

7
9
-2
0
20

0

সি 132 বাইট

প্রধানের রিটার্ন কোড ব্যবহার করে আউটপুট:

int main(int a,char**_){int i,m=0;_[0]=_[a]="1";for(i=1;i<a;++i){m=(*_[i-1]-48||*_[i+1]-48?m>atoi(_[i])?m:atoi(_[i]):m);}return m;}

আমার মনে হচ্ছে আমার একটি আটোই কল সংরক্ষণ করে কয়েকটা বাইট সঞ্চয় করতে সক্ষম হওয়া উচিত তবে আমি কোনও কার্যকর উপায় খুঁজে পাইনি। ( ,tপ্লাস t=প্লাস ,প্লাস tদু'বার বেশি দীর্ঘ)। এছাড়াও এই প্রযুক্তিগতভাবে অপরিজ্ঞাত আচরণ (সেটিং _ [এ] থেকে "1" এ) ব্যবহার করে তবে আমার পরিচিত প্রতিটি সংকলক এটি ডিফল্টরূপে অনুমতি দেয়।

কৌশল: অ্যারের শুরু এবং শেষটি 1 দিয়ে প্যাড করুন, তারপরে প্রতিটি প্রতিবেশীকে চেক করে অভ্যন্তরীণ বিভাগটি লুপ করুন।


0

পিএইচপি 69 64 বাইট

জার্গ হালসারম্যান এবং তিতাসের কাছ থেকে কিছু বাইট বা বন্ধ ছিল। =(-5)

নিবন্ধক_গ্লোবাল সক্ষম হওয়া প্রয়োজন। ব্যবহার:http://localhost/notnull.php?i[]=9&i[]=-5i[]=...

$x=$_GET['i'];
$y=0;
foreach($x as $j){
if($y<abs($j)){
$y=$j;
}
}
echo $y;

Golfed:

$x=$_GET['i'];$y=0;foreach($x as $j)if($y<abs($j))$y=$j;echo $y;

অ্যারে হিসাবে সরাসরি ইনপুটটি কেন ব্যবহার করবেন না। আমি json_encode এর কারণটি দেখতে পেলাম না।
জার্গ হালসারম্যান

অ-ডিফল্ট সেটিংসের জন্য আপনাকে আপনার বাইট গণনায় সেটিংস পরিবর্তনের পূর্ণ দৈর্ঘ্য যুক্ত করতে হবে। ( meta.codegolf.stackexchange.com/q/4778#4778 দেখুন ) এক্ষেত্রে +21 বাইটস -d register_globals=1(বা একটি সংস্করণ নির্দিষ্ট করুন যেখানে রেজিস্ট্রার_গ্লোবালগুলি ডিফল্টরূপে সক্ষম হয়)
টাইটাস

তবে json_decodeএকটি দুর্দান্ত ধারণা।
টাইটাস

@ টিটাস আমার অর্থ কী ?id[]=1&id[]=2&id[]=3 এবং তারপরে $_GET["id"]একটি অ্যারে ফিরিয়ে দেয়। এই কারণে json_decode আমার জন্য কোনও অর্থবোধ করে না
Jörg Hülsermann

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