একটি লুপিং অ্যারে তৈরি করুন


15

ভূমিকা

একটি পয়েন্টার অ্যারেL ননজারো পূর্ণসংখ্যার একটি অ্যারে যেখানে 0 ≤ L[i]+i < len(L)সমস্ত সূচককে ধরে রাখে i(0-ভিত্তিক সূচক ধরে নেওয়া)। আমরা বলি যে সূচকটি সূচকে i নির্দেশ করে L[i]+i। সূচকগুলি দৈর্ঘ্যের একক চক্র গঠন করে তবে একটি পয়েন্টার অ্যারে একটি লুপ হয় len(L)। এখানে কিছু উদাহরন:

  • [1,2,-1,3]পয়েন্টার অ্যারে নয়, কারণ 3সূচকটি নির্দেশ করে না।
  • [1,2,-1,-3]কারণ কোন সূচক পয়েন্ট, একটি পয়েন্টার অ্যারের, কিন্তু না একটি লুপ -1
  • [2,2,-2,-2] সূচক দুটি চক্র গঠন করে কারণ একটি পয়েন্টার অ্যারে, তবে একটি লুপ নয়।
  • [2,2,-1,-3] একটি লুপ হয়।

ইনপুট

আপনার ইনপুটটি কোনও যুক্তিসঙ্গত বিন্যাসে ননজারো পূর্ণসংখ্যার একটি খালি খালি তালিকা। এটি অরসোর্টড এবং / অথবা সদৃশ থাকতে পারে।

আউটপুট

আপনার আউটপুটটি এমন একটি লুপ হবে যা ইনপুট তালিকার সমস্ত সংখ্যক (এবং সম্ভবত অন্যান্য পূর্ণসংখ্যার সংখ্যা )ও গণনা গুণবে contains এগুলি ইনপুটগুলির মতো একই ক্রমে ঘটতে হবে না এবং আউটপুট কোনও অর্থে ন্যূনতম হওয়া উচিত নয়।

উদাহরণ

ইনপুট জন্য [2,-4,2], একটি গ্রহণযোগ্য আউটপুট হবে [2,2,-1,1,-4]

বিধি এবং স্কোরিং

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

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

এগুলি বিন্যাসে দেওয়া হয় input -> some possible output(s)

[1] -> [1,-1] or [1,1,1,-3]
[2] -> [2,-1,-1] or [1,2,-2,-1]
[-2] -> [1,1,-2] or [3,1,2,-2,-4]
[2,-2] -> [2,-1,1,-2] or [2,-1,2,-2,-1]
[2,2,2] -> [2,-1,2,-2,2,-2,-1] or [2,2,2,2,-3,-5]
[2,-4,2] -> [2,2,-1,1,-4] or [2,5,1,1,1,-4,2,-7,-1]
[3,-1,2,-2,-1,-5] -> [2,3,-1,2,-1,-5] or [3,3,-1,-1,2,2,-1,6,1,1,1,1,-12,-5]
[-2,-2,10,-2,-2,-2] -> [10,-1,1,-2,-2,1,-2,-2,1,-2,-2]
[-15,15,-15] -> [15,-1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,-15,-15]
[1,2,3,4,5] -> [1,2,3,-1,4,-1,5,-1,-1,-9,-1,-1]

উত্তর:


11

জেলি, 12 বাইট

ż~Ṣ€FxA$;L$U

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

পটভূমি

পূর্ণসংখ্যার যুগল বিবেচনা এন ~ এন , যেখানে n হল ≥ 0 এবং ~ -এর মানে নেই bitwise, অর্থাত্, ~ এন = - (ঢ + 1 টি)

স্থাপন করে এন কপি এন বাঁদিকে এন + 1 টি কপি ~ এন , যদি আমরা ডানদিকে অবস্থিত থেকে পয়েন্টার অ্যারের ঢোঁড়ন শুরু ~ এন , আমরা সব তর্ক করব 2n + 1 টি উপাদান এবং নিজেদেরকে বামদিকের বাম খুঁজতে এন

উদাহরণস্বরূপ, যদি এন = 4 :

X  4  4  4  4  -5 -5 -5 -5 -5
                            ^
            ^
                         ^
         ^
                      ^
      ^
                   ^
   ^
                ^
^

বিশেষ মামলায় এন = 0 উপাদান এন নিজেই পুনরাবৃত্তি করা হয় 0 বার, এই যাব:

X -1
   ^
^

প্রতিটি পূর্ণসংখ্যা জন্য ইনপুট, আমরা একজোড়া গঠন করতে পারেন এন ~ এন যে রয়েছে সেটিংস এর দ্বারা এন = ট যদি ট> 0 এবং এন = ~ ট যদি ট <0 । এটি কাজ করে কারণ ~ হ'ল একটি বিবর্তন, অর্থাৎ ~~ কে = কে

যা করা বাকি রয়েছে তা হ'ল উত্পন্ন টিউপলগুলি শৃঙ্খলাবদ্ধ করে এবং তাদের সংযুক্ত দৈর্ঘ্যগুলি প্রিপেন্ড করে, সুতরাং বাম দিকের উপাদানটি আমাদের আবার ডানদিকের দিকে নিয়ে যায়।

উদাহরণ

[1] -> [3, 1, -2, -2]
[2] -> [5, 2, 2, -3, -3, -3]
[-2] -> [3, 1, -2, -2]
[2, -2] -> [8, 1, -2, -2, 2, 2, -3, -3, -3]
[2, 2, 2] -> [15, 2, 2, -3, -3, -3, 2, 2, -3, -3, -3, 2, 2, -3, -3, -3]
[2, -4, 2] -> [17, 2, 2, -3, -3, -3, 3, 3, 3, -4, -4, -4, -4, 2, 2, -3, -3, -3]
[3, -1, 2, -2, -1, -5] -> [26, 4, 4, 4, 4, -5, -5, -5, -5, -5, -1, 1, -2, -2, 2, 2, -3, -3, -3, -1, 3, 3, 3, -4, -4, -4, -4]
[-2, -2, 10, -2, -2, -2] -> [36, 1, -2, -2, 1, -2, -2, 1, -2, -2, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, 1, -2, -2, 1, -2, -2]
[-15, 15, -15] -> [89, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15]
[1, 2, 3, 4, 5] -> [35, 5, 5, 5, 5, 5, -6, -6, -6, -6, -6, -6, 4, 4, 4, 4, -5, -5, -5, -5, -5, 3, 3, 3, -4, -4, -4, -4, 2, 2, -3, -3, -3, 1, -2, -2]

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

ż~Ṣ€FxA$;L$U  Main link. Argument: A (list of integers)

 ~            Yield the bitwise not of each k in A.
ż             Zipwith; pair each k in A with ~k.
  Ṣ€          Sort each pair, yielding [~n, n] with n ≥ 0.
    F         Flatten the list of pairs.
       $      Combine the previous two links into a monadic chain:
      A         Yield the absolute values of all integers in the list.
                |n| = n and |~n| = |-(n + 1)| = n + 1
     x          Repeat each integer m a total of |m| times.
          $   Combine the previous two links into a monadic chain:
         L      Yield the length of the generated list.
        ;       Append the length to the list.
           U  Upend; reverse the generated list.

আপনার বিশেষ কেসটি হ্যান্ডেল করার দরকার নেই n = 0, কারণ অনুপসটি " ননজারো ইন্টিজার্স " বলে।
পিটার টেলর

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