নার্সিসিস্টিক অ্যারে উপাদান


15

সংজ্ঞা

একটি অ্যারের নারকিসিস্টিক 1 টি পূর্ণসংখ্যা মনে করে যে তারা তাদের প্রতিবেশীদের চেয়ে ভাল, কারণ তারা তাদের গাণিতিক গড়ের চেয়ে কঠোরতর।

প্রতিবেশীদের নিম্নলিখিত হিসাবে সংজ্ঞায়িত করা হয়েছে:

  • পূর্ণসংখ্যা যদি সূচক 0 (প্রথম) হয় তবে তার প্রতিবেশীরা তালিকার শেষ এবং দ্বিতীয় উপাদান।

  • পূর্ণসংখ্যা যদি প্রথম বা শেষ না হয় তবে এর প্রতিবেশী দুটি অবিলম্বে সংলগ্ন উপাদান।

  • যদি পূর্ণসংখ্যাটি সূচক -১ (সর্বশেষ) হয় তবে তার প্রতিবেশীরা দ্বিতীয়-সর্বশেষ এবং তালিকার প্রথম উপাদান।


কার্য

পূর্ণসংখ্যার একটি অ্যারে দেওয়া, আপনার কাজটি হ'ল নার্সিসিস্টিকগুলি বাতিল করা।

  • পূর্ণসংখ্যাগুলি ধনাত্মক, নেতিবাচক বা শূন্য হতে পারে।

  • আপনি ধরে নিতে পারেন যে অ্যারেটিতে কমপক্ষে তিনটি উপাদান রয়েছে।

  • সমস্ত স্ট্যান্ডার্ড বিধি প্রযোজ্য। এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।

উদাহরণ

অ্যারে বিবেচনা করুন [6, 9, 4, 10, 16, 18, 13]। তারপরে আমরা নিম্নলিখিত টেবিলটি তৈরি করতে পারি:

উপাদান | প্রতিবেশী | প্রতিবেশীদের গড় | নারকিসিস্টিক নাকি?
-------- + + ------------ + + ------------------ + + --------- --------
6 | 13, 9 | 11 | মিথ্যা।
9 | 6, 4 | 5 | সত্য।
4 | 9, 10 | 9.5 | মিথ্যা।
10 | 4, 16 | 10 | মিথ্যা।
16 | 10, 18 | 14 | সত্য।
18 | 16, 13 | 14.5 | সত্য।
13 | 18, 6 | 12 | সত্য।

নার্সিসিস্টিকগুলি ফিল্টার করে, আমরা বাকি রয়েছি [6, 4, 10]। এবং এটাই!

পরীক্ষার কেস

ইনপুট -> আউটপুট

[5, -8, -9] -> [-8, -9]
[8, 8, 8, 8] -> [8, 8, 8, 8]
[১১,,, ৯, ১০] -> [,, ১০]
[1, 2, 0, 1, 2] -> [1, 0, 1]
[6, 9, 4, 10, 16, 18, 13] -> [6, 4, 10]
[6, -5, 3, -4, 38, 29, 82, -44, 12] -> [-5, -4, 29, -44]

1 - নার্সিসিস্ট অর্থ গাণিতিকভাবে নার্সিসিস্টিক নয়

উত্তর:


7

জেলি , 10 বাইট

ṙ2+ṙ-<ḤCx@

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

ব্যাখ্যা:

ṙ2+ṙ-<ḤCx@
ṙ2         Rotate the original list two elements to the left
  +        Add each element to the respective element of the original list
   ṙ-      Rotate the result one element to the right
     <Ḥ    Check if each element is less than the double of its respective element on the original list
       C   Subtract each 1/0 boolean from 1 (logical NOT in this case)
        x@ Repeat each element of the original list as many times as the respective element of the logical NOT (i.e. keep elements of the original list where the respective element from the result is 1)


6

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

a=>a.filter((e,i)=>e+e<=a[(i||l)-1]+a[++i%l],l=a.length)

সম্পাদনা করুন: @ g00glen00b ধন্যবাদ 1 বাইট সংরক্ষিত


5

গণিত, 44 বাইট

Pick[#,#<=0&/@(2#-(r=RotateLeft)@#-#~r~-1)]&

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

প্রদত্ত ইনপুট যেমন {11,6,9,10}, গণনা

2*{11,6,9,10} - {6,9,10,11} - {10,11,6,9}

এবং যেখানে ফলাফল সবচেয়ে বেশি 0 হয় সেখানে মূল ইনপুটটির উপাদানগুলি খুঁজে বের করে।



4

হাস্কেল , 51 বাইট

f s=[b|(a,b,c)<-zip3(last s:s)s$tail$s++s,b*2<=a+c]

এটি অনলাইন চেষ্টা করুন! ব্যবহারের উদাহরণ: f [1,2,3]ফলন [1,2]

জন্য s = [1,2,3], last s:sতালিকা [3,1,2,3]এবং tail$s++sতালিকা [2,3,1,2,3]। তিনটি প্রদত্ত তালিকা থেকে zip3ট্রিপলের একটি তালিকা তৈরি করে (a,b,c), তার সংক্ষিপ্ত তালিকার দৈর্ঘ্য পর্যন্ত দীর্ঘকে ছাঁটাই করে। আমরা পেতে [(3,1,2),(1,2,3),(2,3,1)]সঙ্গে, bমূল তালিকা উপাদান এবং হচ্ছে aএবং cতার প্রতিবেশীদের। তালিকা ধী তারপর নির্বাচন সব bযেখানে b*2<=a+cযে, bআত্মরতিমূলক নয়।


4

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

@(x)x(conv([x(end),x,x(1)],[1,-2,1],'valid')>=0)

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

ব্যাখ্যা

ইনপুট অ্যারে প্রথমে সর্বশেষ ( x(end)) এবং x(1)যথাযথ পক্ষের প্রথম ( ) প্রবেশের সাথে প্রসারিত হয় ।

নারকিসিজমের জন্য convপরীক্ষাটি বর্ধিত অ্যারেটি দিয়ে জলপাই করে [1, -2, 1]এবং কেবল 'valid'অংশ রেখে by

কনভ্যুশনের ফলাফলের প্রতিটি প্রবেশের সাথে তুলনা করলে 0একটি লজিকাল ইনডেক্স (মুখোশ) দেয় যা ইনপুট থেকে নম্বরগুলি নির্বাচন করতে ব্যবহৃত হয়।



2

জাপট , 17 16 15 বাইট

kÈ>½*[Y°ÉY]x!gU

চেষ্টা করে দেখুন


ব্যাখ্যা

অ্যারের অন্তর্নিহিত ইনপুট U

kÈ>

বর্তমান সূচক হিসাবে kকোনও ফাংশনের মধ্য দিয়ে যাওয়ার সময় যে উপাদানগুলি সত্য হয় সেগুলি সরিয়ে ফেলুন ( Yবর্তমান উপাদানটি যদি তত বেশি হয় কিনা তা পরীক্ষা করে ...

[Y°ÉY]

অ্যারে [Y-1, Y+1]...

x!gU

xপ্রতিটি উপাদানকে ইনডেক্স করার পরে সংযোজন ( ) দ্বারা হ্রাস করা হয়েছে U...

½*

দ্বারা গুণিত .5


বিকল্প, 15 বাইট

fÈ+X§UgYÉ +UgYÄ

চেষ্টা করে দেখুন


2

আর , 51 56 বাইট

আমার অ্যালগরিদম সংশোধন করার জন্য ব্যবহারকারীর 2390246 ধন্যবাদ

function(l)l[c(l[-1],l[1])+c(l[s<-sum(l|1)],l[-s])>=2*l]

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

সূচী lযেখানে c(l[-1],l[1])+c(l[s],l[-s]), প্রতিবেশী অঙ্কগুলি lদ্বিগুণ কম নয় l


2

গণিত, 40 বাইট

Pick[#,+##>=3#2&@@@Partition[#,3,1,-2]]&

আমি মনে করি <=পরিবর্তে আপনার প্রয়োজন <
মার্টিন এন্ডার

আসলে না, আপনার দরকার হবে >=
মার্টিন ইন্ডার

@ মার্টিনএন্ডার আহ, আপনি ঠিক বলেছেন আমাকে Pickনন-ন্যারিসিস্টিক নম্বর দিতে হবে।
জংহওয়ান মিন



1

জাভা 8, 141 137 127 বাইট

import java.util.*;a->{List r=new Stack();for(int i=0,l=a.length;i<l;)if(2*a[i]<=a[(i-1+l)%l]+a[++i%l])r.add(a[i-1]);return r;}

-10 বাইট @ নেভায়ে ধন্যবাদ ।

ব্যাখ্যা:

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

import java.util.*;    // Required import for List and Stack

a->{                   // Method with integer-array parameter and List return-type
  List r=new Stack();  //  Return-list
  for(int i=0,         //  Index integer, starting at 0
      l=a.length;      //  Length of the input array
      i<l;)            //  Loop over the input array
    if(2*a[i]<=        //   If two times the current item is smaller or equal to:
        a[(i-1+l)%l]   //   The previous integer in the list
        +a[++i%l])     //   + the next integer in the list
      r.add(a[i-1]);   //    Add the current integer to the result-list
                       //  End of loop (implicit / single-line body)
  return r;            //  Return result-List
}                      // End of method


0

জাভাস্ক্রিপ্ট ES5, 59 বাইট

F=a=>a.filter((x,i)=>2*x<=a[-~i%(l=a.length)]+a[(i-1+l)%l])

console.log(""+F([5, -8, -9])==""+[-8, -9])
console.log(""+F([8, 8, 8, 8])==""+[8, 8, 8, 8])
console.log(""+F([11, 6, 9, 10])==""+[6, 10])
console.log(""+F([1, 2, 0, 1, 2])==""+[1, 0, 1])
console.log(""+F([6, 9, 4, 10, 16, 18, 13])==""+[6, 4, 10])
console.log(""+F([6, -5, 3, -4, 38, 29, 82, -44, 12])==""+[-5, -4, 29, -44])




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