আমার পর্বতশ্রেণীতে কতটি শৃঙ্গ?


27

ইতিবাচক পূর্ণসংখ্যার একটি তালিকা কোয়ানাইটিসড পর্বতশ্রেণী হিসাবে ভিজ্যুয়ালাইজ করা যেতে পারে যেখানে প্রতিটি তালিকার এন্ট্রি পর্বতের এক উল্লম্ব বিভাগের উচ্চতা উপস্থাপন করে।

উদাহরণস্বরূপ, তালিকা

1, 2, 2, 3, 4, 3, 5, 3, 2, 1, 2, 3, 3, 3, 2, 2, 1, 3

পরিসীমা হতে পারে

      x
    x x      
   xxxxx   xxx   x
 xxxxxxxx xxxxxx x
xxxxxxxxxxxxxxxxxx

(কম কাব্যিক মানুষ এটাকে বার চার্ট বলতে পারে তবে আমি খনন করি))

এই চ্যালেঞ্জের মধ্যে প্রশ্নটি রয়েছে: কয়েকটি স্বেচ্ছাসেবীর তালিকার পর্বতশ্রেণীতে কতগুলি শৃঙ্গ রয়েছে? মূলত, তালিকায় স্থানীয় কয়টি ম্যাক্সিমা রয়েছে?

একটি শীর্ষকে পর্বতমালার এক বা একাধিক কলামের সংলগ্ন অংশ হিসাবে সংজ্ঞায়িত করা হয় যা সমস্ত উচ্চতায় সমান, যেখানে অবিলম্বে বাম এবং ডানদিকে কলামগুলি উচ্চতায় কম হয়।

এটি দৃশ্যমানভাবে বলা সহজ যে উদাহরণটির এই প্রথম বন্ধনীযুক্ত স্থানে চারটি শৃঙ্গ রয়েছে:

1, 2, 2, 3, (4), 3, (5), 3, 2, 1, 2, (3, 3, 3), 2, 2, 1, (3)

(3, 3, 3)মালভূমি বিভাগটি কীভাবে শীর্ষ হিসাবে গণনা করা হয়েছে তা নোট করুন কারণ এটি উচ্চতার সমান কলামগুলির সংলগ্ন সেট, এটি তার প্রতিবেশী কলামগুলির চেয়েও বেশি higher

সর্বশেষে (3)শীর্ষ হিসাবে গণনা করা হয়েছে কারণ এই চ্যালেঞ্জের উদ্দেশ্যে আমরা বাম পাশের কলামের বাম প্রতিবেশী এবং ডানদিকের কলামের ডান প্রতিবেশী উভয়কে উচ্চতা শূন্য হিসাবে সংজ্ঞায়িত করব।

এর অর্থ এই যে, শুধুমাত্র এক মান একটি তালিকা উদাহরণস্বরূপ 1, 1, 1, যেমন ব্যাখ্যা করা যেতে পারে 0, 1, 1, 1, 0, এবং এইভাবে এক শিখর না কেউ আছে: 0, (1, 1, 1), 0

শূন্য পীকযুক্ত একমাত্র তালিকাটি খালি তালিকা।

চ্যালেঞ্জ

একটি ক্রিয়াকলাপ বা প্রোগ্রাম লিখুন যা ইতিবাচক পূর্ণসংখ্যা এবং মুদ্রণের একটি স্বেচ্ছাসেবী তালিকা গ্রহণ করে বা সংশ্লিষ্ট পর্বতশ্রেণীর শিখর সংখ্যা প্রদান করে।

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

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

Input List -> Output Peak Count
[empty list] -> 0
1, 1, 1 -> 1
1, 2, 2, 3, 4, 3, 5, 3, 2, 1, 2, 3, 3, 3, 2, 2, 1, 3 -> 4
1 -> 1
1, 1 -> 1
2, 2, 2, 2, 2 -> 1
90 -> 1
2, 1, 2 -> 2
5, 2, 5, 2, 5 -> 3
2, 5, 2, 5, 2, 5, 2 -> 3
1, 2, 3, 4 -> 1
1, 2, 3, 4, 1, 2 -> 2
1, 3, 5, 3, 1 -> 1
7, 4, 2, 1, 2, 3, 7 -> 2
7, 4, 2, 1, 2, 1, 2, 3, 7 -> 3
1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2 -> 10
1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1 -> 10
2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2 -> 10
1, 3, 3, 3, 1, 3, 3, 1, 3, 1, 3, 3, 3, 3, 1 -> 4
12, 1, 2, 1, 2, 3, 3, 3, 2, 4, 4, 4, 1, 5, 5, 4, 7, 9 -> 6
87, 356, 37673, 3676, 386, 909, 909, 909, 909, 454, 909, 909 -> 3
87, 356, 37673, 3676, 386, 909, 909, 909, 909, 454, 909, 908, 909 -> 4

সুতরাং, মালভূমি দীর্ঘতর যথেচ্ছ হতে পারে?
নিকেল

@ নিকেল হ্যাঁ, এটি হতে পারে
ক্যালভিনের শখ

আমরা কি স্ট্রিং হিসাবে নয়, অ্যারে হিসাবে ইনপুট নিতে পারি?
নিকেল

@ এনিকায়েল হ্যাঁ, যুক্তিসঙ্গত কিছু
ক্যালভিনের শখ

উত্তর:


2

পাইথ, 18 বাইট

su_>VGtG2eMr++ZQZ8

@ পিটারটেলারের উপর ভিত্তি করে সমাধানের চেয়ে বার বার বৃহত্তর, তবে একটি মোচড় দিয়ে।

++ZQZ: উভয় পক্ষের শূন্য যোগ করুন।

eMr ... 8: পুনরাবৃত্তি সরান।

u ... 2 ...: নিম্নলিখিত দুটি বার প্রয়োগ করুন:

>VGTG: প্রতিটি জোড়া সংখ্যার মানচিত্র সেগুলি ক্রমহ্রাসমান ক্রমে রয়েছে কিনা তা ম্যাপ করুন।

_: এবং বিপরীত।

আউটপুট এ 1 1, 0পূর্ববর্তী পদক্ষেপের সাথে সামঞ্জস্য করে, যা বিপরীতের a < b > cকারণে ইনপুটটির সাথে মিলে যায়।

s: যোগফল (এবং মুদ্রণ)


10

সিজেএম ( 32 26 24 21 বাইট)

0q~0]e`1f=2ew::>2,/,(

প্রত্যাশিত ইনপুটটি স্থান-বিভাজনযুক্ত সংখ্যা।

অনলাইন ডেমো ; পূর্ণ পরীক্ষার স্যুট (প্রত্যাশিত আউটপুটটি 1প্রতিটি পরীক্ষার ক্ষেত্রে হয়)।

মার্টিনকে আমাকে জানানোর জন্য ধন্যবাদ যে সিজেএমের বর্তমান সংস্করণটি ব্যবহৃত দুটি অপারেটরের উন্নত করেছে, 2 টি অক্ষর সাশ্রয় করেছে; এবং আরও 3-চার্চের সাশ্রয়ের জন্য।

ব্যবচ্ছেদ

দুটি পর্যায়: অনুলিপি করুন, তারপরে তিনটির প্রতিটি সেটে স্থানীয় ম্যাক্সিমা সনাক্ত করুন।

0q~0]      e# Put the input in an array wrapped in [0 ... 0]
e`1f=      e# Use run-length encoding to deduplicate
2ew::>     e# Map [a b c ...] to [(a>b) (b>c) ...]
2,/        e# Split on [0 1], which since we've deduplicated occurs when (a<b) (b>c)
,(         e# Count the parts and decrement to give the number of [0 1]s

7

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

m=>m.map(n=>{h=n<p?h&&!++r:n>p||h;p=n},r=h=p=0)|r+h

ব্যাখ্যা

সংখ্যার একটি অ্যারে নেয়

m=>
  m.map(n=>{       // for each number n in the mountain range
      h=
        n<p?       // if the number is less than the previous number:
          h&&      // if the previous number was greater than the number before it
          !++r     // increment the number of peaks and set h to 0
        :n>p||h;   // if the number is greater than the previous number, set h to 1
      p=n          // set p to the current number
    },
    r=             // r = number of peaks
    h=             // h = 1 if the previous number was higher than the one before it
    p=0            // p = previous number
  )|r+h            // return the output (+ 1 if the last number was higher)

পরীক্ষা


5

পাইথ, 25 23 বাইট

L._M-M.:b2s<R0y-y+Z+QZZ

ব্যাখ্যা:

L              y = lambda b:
  ._M -M .:          signs of subsets
           b          of b
           2          of length 2. That is, signs of differences.

s <R              number of elements less than
     0              0 in
     y -            y of ... with zeroes removed
         y +          y of
             Z        the input with zeroes tacked on both sides
             + Q Z
       Z              

খুশী হলাম। অসাধারণভাবে, সিজেমের একটি বন্দর সংক্ষিপ্ত: 0q~0]{2ew::-:g0-}2*1-,22 এর জন্য
পিটার টেলর

4

জুলিয়া, 66

x->(y=diff([0;x;0]);y=y[y.!=0];sum((y[1:end-1].>0)&(y[2:end].<0)))

প্যাড, পার্থক্য: y=diff([0;x;0])
মালভুমি উপেক্ষা করুন: y=y[y.!=0]
গণনা +করার -শূন্য অতিক্রম করবে: sum((y[1:end-1].>0)&(y[2:end].<0))


3

ম্যাটল্যাব, 29 27 বাইট

@(a)nnz(findpeaks([0 a 0]))

বেনামে ফাংশন যা ডেটাতে শৃঙ্গার সন্ধান করে এবং সেখানে কতগুলি রয়েছে তা গণনা করে। প্রশ্ন অনুসারে একেবারে প্রান্তে শৃঙ্গগুলি সনাক্ত করা যায় তা নিশ্চিত করার জন্য 0 টি উপস্থাপিত এবং ডেটাতে সংযুক্ত করা হয়।

এটি অষ্টাভের সাথেও কাজ করবে । আপনি এখানে অনলাইনে চেষ্টা করতে পারেন । উপরের কোডটি কেবল কমান্ড লাইনে পেস্ট করুন এবং তারপরে ans([1,2,1,3,4,5,6,1])(বা অন্য কোনও ইনপুট) দিয়ে এটি চালান ।


সংখ্যাটি সর্বদা + ve হিসাবে, আমরা ধরে নিতে পারি সেগুলি শূন্যের চেয়ে বেশি, সুতরাং nnzপরিবর্তে ব্যবহার করে 2 বাইট সংরক্ষণ করতে পারি numel


3

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

def m(t):
 a=p=d=0
 for n in t+[0]:a+=(n<p)&d;d=((n==p)&d)+(n>p);p=n
 return a

এটি আমার প্রথম কোডগল্ফ তাই এটি কাটাতে কিছু জায়গা থাকতে পারে বিশেষত d=((n==p)&d)+(n>p)অংশটি। তবে এটি সমস্ত পরীক্ষার ক্ষেত্রে কাজ করে



3

গণিত, 42 36 33 32 বাইট

1 বাইট সংরক্ষণের জন্য মার্টিন বাটনারকে ধন্যবাদ।

Tr@PeakDetect[#&@@@Split@#,0,0]&

PeakDetect প্রায় সব কি না!

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

Total@PeakDetect[#&@@@Split@#,0,0]&@{12,1,2,1,2,3,3,3,2,4,4,4,1,5,5,4,7,9}
(* 6 *)
Total@PeakDetect[#&@@@Split@#,0,0]&@{87,356,37673,3676,386,909,909,909,909,454,909,908,909}
(* 4 *)

আমি আমার উত্তরটি অন্য একটি পোস্ট করার জন্য আপনার থেকে যথেষ্ট আলাদা বলে মনে করি।
LegionMammal978

@ LegionMammal978 প্রত্যাশার মতো ইনপুট {1} এর ফলাফল 1 হয়।
এনজিপিপোরগান

আমার অর্থ দাঁড়ায় {1, 2, 2, 3, 4, 3, 5, 3, 2, 1, 2, 3, 3, 3, 2, 2, 1, 3}
LegionMammal978

পছন্দ করুন আমি কোন সমাধান খুঁজে পাইনি।
njpipeorgan

আমার আপডেট হওয়া সমাধানটি কেবল "প্লেটাস" ফ্ল্যাট করে।
LegionMammal978

2

সিজেম, 27 26 বাইট

A0q~0A]e`1f=3ew{~@e>>}%1e=

সদৃশগুলি সরানোর জন্য রান দৈর্ঘ্যের কোডিং ব্যবহার করে। এরপরে আমরা মধ্য ট্রিপলটি সর্বাধিক সংখ্যা হলে প্রতিটি ট্রিপলেট পরীক্ষা করে দেখি।

এখানে চেষ্টা করুন! পিটার টেলরের পরীক্ষার স্যুট পাস করেছে ।


2

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

0ih0hdZS49+c'21*?0'XXn

ভাষা / সংকলকের বর্তমান সংস্করণ ব্যবহার করে ।

উদাহরণ

>> matl
 > 0ih0hdZS49+c'21*?0'XXn
 >
> [1, 2, 2, 3, 4, 3, 5, 3, 2, 1, 2, 3, 3, 3, 2, 2, 1, 3]
4

ব্যাখ্যা

0ih0h           % input array. Append and prepend 0
dZS             % sign of difference between consecutive elements. Gives -1, 0, 1
49+c            % convert to a string of '0','1','2' 
'21*?0'XX       % use (lazy) regular expression to detect peaks: '20' or '210' or '2110'...
n               % number of matches. Implicity print

2

গণিত, 55 39 36 35 বাইট

Length@FindPeaks[#&@@@Split@#,0,0]&

এখন সব পরীক্ষার মামলায় কাজ করে!


শান্ত! তবে ফাইন্ডপিক্স [#, 0,0, -∞] প্রয়োজন, অন্যথায় এটি শেষ পরীক্ষার ক্ষেত্রে ব্যর্থ হয়।
এনজিপিপোরগান

শেষ / @ একটি বাইট সংরক্ষণ করে। এবং শেষ ", 0" অপ্রয়োজনীয় হতে পারে?
njpipeorgan

আপনার জন্য একই কৌশল: Last/@->#&@@@
মার্টিন এন্ডার

2

রেটিনা , 33 31 বাইট

2 বাইট সংরক্ষণের জন্য নীলকে ধন্যবাদ

\b(1+)(?<!\1,\1)(,\1)*\b(?!,\1)

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

কমা-বিচ্ছিন্ন, অবিচ্ছিন্ন তালিকা হিসাবে ইনপুট নেয় ।


\b(1+)(?<!\1 \1)( \1)*\b(?! \1)2 বাইট বাঁচাতে মনে হচ্ছে?
নিল

@ নিল অবশ্যই, ধন্যবাদ! :)
মার্টিন এণ্ডার

1

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

t=>(a=t.filter((x,i)=>x!=t[i-1])).filter((x,i)=>(x>(b=a[i-1])||!b)&&(x>(c=a[i+1])||!c)).length

মূলনীতি: একক শিখরে প্লেটাসকে ধসে পড়ুন, যে পিকগুলি পরের এবং পূর্ববর্তী উভয় উপাদানগুলির চেয়ে বেশি হিসাবে সংজ্ঞায়িত করা হয়েছে তা চয়ন করুন।

অ্যারে হিসাবে ইনপুট নেয়।

ডেমো:

f=t=>
(a=t.filter((x,i)=>x!=t[i-1]))    //collapse every plateau into the pick
    .filter((x,i)=>
       (x>(b=a[i-1])||!b)&&(x>(c=a[i+1])||!c)    //leave only those values which are greater than the succeeding and preceding ones
    ).length

document.write(
  f([])+"<br>"+
  f([1, 1, 1])+"<br>"+
  f([1, 2, 2, 3, 4, 3, 5, 3, 2, 1, 2, 3, 3, 3, 2, 2, 1, 3])+"<br>"+
  f([1])+"<br>"+
  f([1, 1])+"<br>"+
  f([2, 2, 2, 2, 2])+"<br>"+
  f([90])+"<br>"+
  f([2, 1, 2])+"<br>"+
  f([5, 2, 5, 2, 5])+"<br>"+
  f([2, 5, 2, 5, 2, 5, 2])+"<br>"+
  f([1, 2, 3, 4])+"<br>"+
  f([1, 2, 3, 4, 1, 2])+"<br>"+
  f([1, 3, 5, 3, 1])+"<br>"+
  f([7, 4, 2, 1, 2, 3, 7])+"<br>"+
  f([7, 4, 2, 1, 2, 1, 2, 3, 7])+"<br>"+
  f([1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2])+"<br>"+
  f([1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1])+"<br>"+
  f([2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2])+"<br>"+
  f([1, 3, 3, 3, 1, 3, 3, 1, 3, 1, 3, 3, 3, 3, 1])+"<br>"+
  f([12, 1, 2, 1, 2, 3, 3, 3, 2, 4, 4, 4, 1, 5, 5, 4, 7, 9])+"<br>"+
  f([87, 356, 37673, 3676, 386, 909, 909, 909, 909, 454, 909, 909])+"<br>"+
  f([87, 356, 37673, 3676, 386, 909, 909, 909, 909, 454, 909, 908, 909])
)


1

ES6, 50 48 বাইট

m=>m.map(h=>{f=h>p?c+=!f:f&&h==p;p=h},p=c=f=0)|c

@ ব্যবহারকারী 81655 এর জন্য 2 বাইট সংরক্ষণ করা হয়েছে।

Ungolfed:

function peaks(mountains) {
    var previous = 0;
    var count = 0;
    var plateau = false;
    for (var height of mountains) {
        if (height > previous) {
            if (!plateau) count++;
            plateau = true;
        } else if (height != previous) {
            plateau = false;
        }
    }
    return count;
}

@ ব্যবহারকারী81655 সেই সূক্ষ্মতার দিকে আমার দৃষ্টি আকর্ষণ করার জন্য ধন্যবাদ। (আমি এর .map()|আগে ব্যবহার করিনি))
নীল

1

এমএটিএল, 23

যেহেতু আমাদের প্রতিযোগিতামূলক হওয়ার জন্য স্ট্যাক ভিত্তিক ইসল্যাংগুলি ব্যবহার করা দরকার, তাই আমি আমার জুলিয়া দ্রবণটি এমএটিএলে পুনরায় প্রয়োগ করেছি।

0i0hhdtg)t5L)0>w6L)0<*s

পুশ 0, ইনপুট, এবং 0দু'বার সংযুক্ত করা। 0i0hh=>x = [0, input(''), 0]

পার্থক্য নির্ণয় করুন। d=>x = diff(x)

সদৃশ t, একটি বুলিয়ান রূপান্তর এবং অন্য সূচক এটি ব্যবহার করুন। tg)=>x=x(x!=0)

আবার নকল। t

প্রথম: [1,G])0>=>y1 = x(1:end-1)>0

এক্সচেঞ্জ। w

দ্বিতীয়: [2,0])0<=>y2 = x(2:end)<0

যুক্তি এবং, সত্যবাদী মানগুলি গণনা করুন। *s=>sum(y1 & y2)


অথবা আপনি পাইথ, একটি প্রক্রিয়াগত / কার্যকরী গল্ফিং ভাষা করতে পারেন!
isaacg

ঠিক আছে, এমএটিএল হ'ল গল্ফ করার জন্য ম্যাটল্যাব, তবে এমএটিএলএব এমএটিএলকে মারছে।
জেনেরিক ব্যবহারকারীর

খুব সুন্দর! কিছু টিপস: [1,G]-> 5L3 বাইট সংরক্ষণ করে। [2,0]-> 6L3 বাইট সাশ্রয় করে
লুইস মেন্ডো 10'16


@ রাইনার আমি এমএটিএল থেকে and( &) অপসারণ করার চিন্তা করছি (এবং এটির জন্য একই or)। এটি সর্বদা প্রতিস্থাপন করা যেতে পারে *o, এবং প্রায়শই ন্যায়বিচার দ্বারা *, যেমন এই ক্ষেত্রে। আপনি কি মনে করেন? এইভাবে অক্ষরগুলি &এবং |ভবিষ্যতে অন্যান্য ফাংশনগুলির জন্য ব্যবহৃত হতে পারে।
লুইস মেন্ডো

1

জাপট, 19 বাইট

এটি আমার ধারণা থেকে সহজ ছিল, তবে একটি বাগের কারণে শুরুটি কিছুটা অপ্রয়োজনীয়।

Uu0;Up0 ä< ä> f_} l

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

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

Uu0;Up0 ä< ä> f_} l  // Implicit: U = input
Uu0;Up0              // Add 0 to the beginning and end of U. If this isn't done, the algorithm fails on peaks at the end.
        ä<           // Compare each pair of items, returning true if the first is less than the second, false otherwise.
                     // This leaves us with a list e.g. [true, false, false, true, false].
           ä>        // Repeat the above process, but with greater-than instead of less-than.
                     // JS compares true as greater than false, so this returns a list filled with false, with true wherever there is a peak.
              f_} l  // Filter out the falsy items and return the length.

অ-প্রতিযোগিতামূলক সংস্করণ, 15 বাইট

Uu0 p0 ä< ä> è_

আজকের আগে, আমি èফাংশনটি যুক্ত করেছি, যা এর মতো fতবে ম্যাচগুলি নিজের চেয়ে ম্যাচের সংখ্যাটি ফিরিয়ে দেয়। আমি একটি বাগও স্থির করেছিলাম যেখানে Array.uঅ্যারের পরিবর্তে অ্যারের দৈর্ঘ্য ফিরে আসবে।

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


1

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

Ô0.ø¥0‹ÔO

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

ব্যাখ্যা:

Ô0.ø¥0‹ÔO      Full program
Ô              Uniquify (= remove plateaus)
 0.ø           Surround with zeros
    ¥          Push deltas
     0‹        Test each element if lower than 0
               --- we now have a list with 0's (= going uphill) and 
                   1's (going downhill). Since we removed plateaus, all
                   we have to do now is to count the number of ramps
                   going downhill
       Ô       Uniquify (reduce ramps to length 1)
        O      Total sum of the list

1

জেলি , 27 বাইট

ṡ2EÐḟFs2ḣ€1S€ṡ3M€Fċ2
0;⁸;0Ç

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


জেলি টিআইও ছাড়াই ??? লল
ক্রিস্টোফার

এটি টিআইও-র সাথে কীভাবে লিঙ্ক করতে হবে তা জানার আগে এটি অনেক দিন আগে। আমি এটি উত্তরপুরুষের জন্য ছেড়ে দেব leave
Zacharý

স্ক্রু ডাট আমি ঠিক করেছি
ক্রিস্টোফার

> _ <_> _ <_> _ <_> _ <
জ্যাকারি

0

গল্ফস্ক্রিপ্ট, 35

~0+0\{.@=!},+:a,2-,{a\>3<.$2=?1=},,

অনলাইন পরীক্ষা

মূলত সদৃশ অপসারণ করে, উভয় প্রান্তে একটি 0 যুক্ত করে এবং কেন্দ্রে কতগুলি ট্রিপল সর্বাধিক রয়েছে তা পরীক্ষা করে।


0

জাভা 8, 141 বাইট

l->{int r=0,i=1,t;for(l.add(0,0),l.add(0);i<l.size()-1;r+=t>l.get(i-1)&t>l.get(++i)?1:0)for(;(t=l.get(i))==l.get(i+1);)l.remove(i);return r;}

কোনও ভিন্ন পদ্ধতির ব্যবহার বা তালিকার পরিবর্তে ইনপুট হিসাবে কোনও অ্যারে ব্যবহার করে গল্ফ করা যেতে পারে।

ব্যাখ্যা:

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

l->{                     // Method with ArrayList<Integer> parameter and int return-type
  int r=0,               //  Result-integer
      i=1,               //  Index-integer
      t;                 //  Temp integer
  for(l.add(0,0),        //  Add a 0 at the start of the list
      l.add(0);          //  Add a 0 at the end of the list
      i<l.size()-1;      //  Loop (1) from index 1 through length-1 (0-indexed)
      r+=                //    After every iteration, raise the result-integer by:
         t>l.get(i-1)    //     If the current item is larger than the previous
         &t>l.get(++i)?  //     and larger than the next:
          1              //      Increase `r` by 1
         :               //     Else:
          0)             //      `r` remains the same
    for(;(t=l.get(i))==l.get(i+1);
                         //   Inner loop (2) as long as there are two adjacent equal items
      l.remove(i)        //    And remove one of those two equal integers
    );                   //   End of inner loop (2)
                         //  End of loop (1) (implicit / single-line body)
  return r;              //  Return the result-integer
}                        // End of method
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.