একটি অ্যারের বিপরীত ডেল্টাস


23

একটি অ্যারের বিপরীত ডেল্টাস

একটি অ্যারের বিপরীত ডেল্টাসের ধারাবাহিকতা

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

উদাহরণ

ক্রমতালিকা,

18  19  17  20  16

ডেল্টাস আছে:

   1  -2   3  -4

যা, বিপরীত হলে, ফলন:

  -4   3  -2   1

তারপরে পুনরায় কম্পাইল করে, ফলন ব্যবহার করে:

18  14  17  15  16

যা আপনার ফেরতের মান হওয়া উচিত।

রিকম্পাইলিংটি গ্রহণ করে নিয়ে থাকে Cযা অ্যারের প্রথম মান। এই ক্ষেত্রে, 18এবং বদ্বীপ এটা করার জন্য আবেদন। তাই 18 + -4দেয় 14, 14 + 3দেয় 17, ইত্যাদি।

ইনপুট আউটপুট

আপনাকে একটি তালিকা / অ্যারে / টেবিল / টিপল / স্ট্যাক / ইত্যাদি দেওয়া হবে। কোনও মানক ইনপুট পদ্ধতির মাধ্যমে ইনপুট হিসাবে স্বাক্ষরিত পূর্ণসংখ্যাগুলির of

উপরের ডেল্টা বিপরীত পদ্ধতি অনুসরণ করে আপনাকে অবশ্যই কোনও গ্রহণযোগ্য আকারে আবারও পরিবর্তিত ডেটা আউটপুট করতে হবে।

আপনি এন ইনপুট পাবেন 0 < N < 10যেখানে প্রতিটি নম্বর সীমার মধ্যে পড়ে-1000 < X < 1000

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

1 2 3 4 5      -> 1 2 3 4 5
18 19 17 20 16 -> 18 14 17 15 16
5 9 1 3 8 7 8  -> 5 6 5 10 12 4 8
6 5 4 1 2 3    -> 6 7 8 5 4 3

নোট

  • উপরে বর্ণিত হিসাবে আপনি সর্বদা কমপক্ষে 1 ইনপুট পাবেন এবং 9 এর বেশি হবে না।
  • আপনার আউটপুটটির প্রথম এবং শেষ সংখ্যাটি সর্বদা ইনপুটটির সাথে মেলে।
  • কেবল স্ট্যান্ডার্ড ইনপুট আউটপুট গ্রহণ করা হয়
  • স্ট্যান্ডার্ড লুফোলস প্রযোজ্য
  • এটি , তাই সর্বনিম্ন বাইট-কাউন্ট জেতা!
  • আনন্দ কর!

এবং বিজয়ী...

ডেনিস! যিনি প্রথমে প্রথম স্থান নিয়েছিলেন, তারপরে নিজেকে একটি সংক্ষিপ্ত সমাধান দিয়ে মারলেন, নিজেকে প্রথম এবং দ্বিতীয় স্থান দিয়েছেন!

তাদের জেলির সাথে আইস ২৩৩ এর সম্মানজনক উল্লেখ , যে ডেনিসের সামনে না থাকলে তাদের অবস্থান দ্বিতীয় স্থানে থাকত।


1
এই ডেল্টা চ্যালেঞ্জগুলি কেবল প্রমাণিত করেছে যে অবিশ্রুত ব-দ্বীপগুলি গণিতে কীভাবে রয়েছে।
এটাকো

4
অবিবাহিত বদ্বীপগুলি গণিতে কীভাবে হয় গণিতের অন্যতম গুরুত্বপূর্ণ শাখা (স্বল্প ক্ষুদ্র) ডেল্টাসের
লুইস মেন্ডো

1
আমি এখনও একটি সুখী
চপি

আমি পিপিসিগিতে গাণিতিক চ্যালেঞ্জ সি করতে পারি না ...: পি
মুকুল কুমার

উত্তর:


9

জেলি , 5 বাইট

.ịS_Ṛ

এটি গ্লেন ও এর জুলিয়া উত্তর থেকে অ্যালগরিদম ব্যবহার করে ।

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

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

.ịS_Ṛ  Main link. Argument: A (array)

.ị     At-index 0.5; retrieve the values at the nearest indices (0 and 1). Since
       indexing is 1-based and modular, this gives the last and first element.
  S    Compute their sum.
    Ṛ  Yield A, reversed.
   _   Subtract the result to the right from the result to the left.


12

জেলি , 6 বাইট

I;ḢṚ+\

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

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

I;ḢṚ+\  Main link. Argument: A (array)

I       Increments; compute the deltas of A.
  Ḣ     Head; yield the first element of A.
 ;      Concatenate the results to both sides.
   Ṛ    Reverse the resulting array.
    +\  Compute the cumulative sum of the reversed array.

7
ডেনিস দয়া করে
এটিাকো

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

@ ais523 Uভেক্টরাইজ করে না, তবে ফ্ল্যাট অ্যারেগুলির জন্য তাদের আচরণ অভিন্ন।
ডেনিস

4
আমার ধারণা আমি আমার উত্তরটি মুছে ফেলব, তারপরে (যখন আমি নিজে নিজেই "সঠিক" উত্তরটি নিয়ে আসতে পেরেছি তখন কিছুটা বিরক্ত হলাম, এবং এখানেই আসল সমস্যাটি হ'ল অন্য কেউ প্রথমে একই উত্তরটি খুঁজে পেতে সক্ষম হয়েছিল) ।

কোন ASCII ফর্ম্যাটে এটি 6 বাইট হিসাবে প্রকাশিত হয়? জুবুন্টুর প্লামা বলেছেন যে এটি 10 ​​বাইট এবং জুলিয়া 0x1e22 এবং 0x1e5a হিসাবে সঞ্চয় করে, যার প্রতিটির জন্য 3 বাইট প্রয়োজন।
গ্লেন ও

8

জুলিয়া, 24 বাইট

!x=x[end]+x[]-reverse(x)

সমস্যাটি সমাধানের এটিই "চালাক" উপায়। অ্যারের নেতিবাচক বিপরীতে "ডেল্টাস" বিপরীত হয়েছে এবং তারপরে আপনাকে কেবল সঠিক জায়গায় এটি শুরু / শেষ হওয়ার বিষয়টি ঠিক করতে হবে।


6

স্নোম্যান 1.0.2, 72 বাইট

((}#0AaGwR#`wRaCaZ`0NdE`aN0AaG:dU,0aA|1aA,nS;aM`0wRaC|#0aA*|:#nA*#;aM*))

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

এটি একটি সাবরুটাইন যা বর্তমান পেরামভার থেকে ইনপুট নেয় এবং আউটপুট দেয়।

((
  }       enable variables b, e, and g
  #       store the input in variable b
  0AaG    remove the first element (take indices > 0)
  wR      wrap the array in another array
  #`wRaC  concatenate with the original input array
  aZ      zip (transpose); we now have pairs of elements
  `0NdE   obtain the number -1 (by decrementing 0)
  `aN     reverse the zipped array
  0AaG    remove first (there is one fewer delta than array elements)
  :       map over the array of pairs:
    dU     duplicate; we now have b=[x,y] e=[x,y]
    ,0aA   move the copy and get the first element; b=x g=[x,y]
    |1aA   get the second element from the copy; b=y g=x
    ,nS    subtract; we now have b=y-x which is returned from the map
  ;aM     (map)
  `0wRaC  prepend a zero (in preparation for the next step)
  |#0aA   get the first element of the original array
  *       store this in the permavar
  |:      map over the array of deltas with 0 prepended:
    #       store the permavar in e
    nA      add the delta and the permavar
    *#      make this the new value of the permavar
  ;aM     (map)
  *       "return" the resulting array from the subroutine
))

6

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

a=>a.reverse(z=a[0]).map(e=>z+a[0]-e)

@ জেএইচএম এর গণিতের উত্তরের বন্দর। (আমি নিশ্চিত যে আমি এটি নিজেই অর্জন করতে পারতাম, তবে রাতের এই সময়টি নয়)) সম্পাদনা করুন: @ এডসি 65 এর জন্য 8 বাইট সংরক্ষণ করা হয়েছে।


আপনার প্রয়োজনের কোনও কারণ আছে [...এবং ]?
মামা ফান রোল

1
@ মামাফুনরল অন্যথায় এটি সংশোধন করবে aযা পরে প্রোগ্রামে ব্যবহৃত হবে
কনর ও'ব্রায়ান

ওহ ঠিক আছে, সে সম্পর্কে ভুলে গেছেন: পি
মামা ফান রোল

37:a=>a.reverse(z=a[0]).map(e=>z+a[0]-e)
edc65

@ এডসি 65 বাহ, আমি বিবেচনার জন্য গতরাতে যথেষ্ট জাগ্রত ছিলাম z=a[0]তবে আমি [...]এবং এটি অপসারণ করতে ভুলে গেছি (,i,b)
নীল

4

গণিত, 23 বাইট

#&@@#+Last@#-Reverse@#&

নামহীন ফাংশন ফলাফলটি সহজভাবে: বিপরীত ((প্রথম উপাদান) + (শেষ উপাদান) - (প্রতিটি উপাদান))।


4

পাইথন 2, 96 74 54 44 বাইট

lambda l:[l[0]+l[-1]-j for j in l][::-1]

বর্গাকার বন্ধনী দ্বারা বেষ্টিত অ্যারে হিসাবে ইনপুট দেওয়া হয়। আউটপুট একই ফর্ম্যাটে।

আমি যা যা করছি তার চেয়ে অনেক বেশি সাধারণ পদ্ধতি ব্যবহার করে 22 কে 42 বাইট সংরক্ষণ করার জন্য @ কেডকে ধন্যবাদ !

তালিকা অনুধাবন থেকে সূচক কাউন্টারটি সরিয়ে 10 বাইট সংরক্ষণ করার জন্য @ শেরলক 9 কে ধন্যবাদ!

দুর্দান্ত, এখন যদি আমি এটি আরও গল্ফ করি তবে আমি "ক্রস আউট 44 এখনও 44" সমস্যা পেয়ে যাব। ;: _;


lambda l:[l[0]+l[-1]-l[i]for i in range(len(l))][::-1]54 বাইট জন্য কি ? :) (গণনার জন্য গ্লেন ওকে ক্রেডিট)
কেডে

ওহ বাহ, আমি কীভাবে বুঝতে পারি না। ধন্যবাদ! :)
হাইপারনিউট্রিনো

অ্যালেক্স, আপনি কেবল উত্তর হিসাবে সেই ল্যাম্বডা ফাংশনটি ব্যবহার করতে পারেন :)
কেডে

কি. উহু. ঠিক আছে, ধন্যবাদ! :)
হাইপারনিউট্রিনো

পরিবর্তে l[i]for i in range(len(l)), আপনি j for j in l14 বাইট সংরক্ষণ করতে ব্যবহার করতে পারেন ।
শার্লক 9

3

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

¬s¤sR(++

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

আমার এমএটিএল উত্তরের অনুবাদ, দ্বিতীয় পদ্ধতির।

¬    % Implicit input. Head, without consuming the input
s    % Swap
¤    % Tail, without consuming the input
s    % Swap
R(   % Reverse and negate
++   % Add head and tail of input to reversed and negated input. Implicitly display

আমি যা চেষ্টা করেছিলাম তার চেয়ে স্মার্ট:¬s¥Rvy)}
ম্যাজিক অক্টোপাস n

3

আর, 37 30 বাইট

সম্পাদনা করুন: এখন গ্লেন ও এর জুলিয়া উত্তরের পদ্ধতিটি ব্যবহার করুন

x=scan();x[1]+tail(x,1)-rev(x)

পুরানো:

x=scan();cumsum(c(x[1],rev(diff(x))))

ইনপুট পড়ুন, গণনা ডেল্টাস, প্রথম উপাদানটির সাথে সংমিশ্রণ এবং যোগফলের যোগফল গণনা করুন।


2

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

1)GdPhYs

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

এটি সংজ্ঞাটির সরাসরি প্রয়োগ application [18 19 17 20 16]উদাহরণ হিসাবে ইনপুট বিবেচনা করুন ।

1)     % Implicit input. Get its first entry
       % STACK: 18
G      % Push input again
       % STACK: 18, [18 19 17 20 16]
d      % Consecutive differences
       % STACK: 18, [1 -2 3 -4]
P      % Reverse
       % STACK: 18, [-4 3 -2 1]
h      % Concatenate
       % STACK: [18 -4 3 -2 1]
Ys     % Cumulative sum. Implicitly display
       % STACK: [18 14 17 15 16]

বিভিন্ন পদ্ধতি, একই বাইট গণনা:

P_G5L)s+

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

বিপরীত এবং অবহেলিত অ্যারে প্লাস মূল অ্যারের প্রথম এবং শেষ এন্ট্রি।

P_     % Implicit inut. Reverse and negate
G      % Push input again
5L)s   % Sum of first and last entries
+      % Add to reversed and negated array. Implicitly display



1

아희 (Aheui) , 3 * 21 অক্ষর + 2 "\ n" = 65 বাইট

빪쑥쌳텆슉폎귁삯씬희
뿓팤팧쎢싺솎
싺싹삭당뽔

স্ট্যাক ইনপুট ধরে 아। আউটপুট স্ট্যাক 안 এ সংরক্ষণ করা হবে 안

আপনি যদি এই কোডটি চেষ্টা করতে চান:

এই কোডের প্রথম লাইনের শেষে, অক্ষরের দৈর্ঘ্য (এন)-টাইমগুলি যুক্ত করুন (অর্থাত্ যদি ইনপুটটি 7 পূর্ণসংখ্যার হয় তবে এটি 7 বার sertোকান)। প্রতিটি প্রম্পটের জন্য, একটি পূর্ণসংখ্যা টাইপ করুন:

어우
우어
빪쑥쌳텆슉폎귁삯씬희
뿓팤팧쎢싺솎
싺싹삭당뽔

এখানে চেষ্টা করুন! (কোডটি অনুলিপি করুন এবং পেস্ট করুন)

উদাহরণ

এর জন্য 1, 2, 3, 4, 5:

어우벙벙벙벙벙
우어
빪쑥쌳텆슉폎귁삯씬희
뿓팤팧쎢싺솎
싺싹삭당뽔

এবং তারপর টাইপ করুন 1, 2, 3, 4, এবং5 (5 অনুরোধ জানানো হবে)।

বিকল্প সংস্করণ (65 বাইট)

빠쑥쌳터슉펴ㅇ삯씬희
뿌파파쎢싺솎
싺싹삭다뽀

আপনি শুধু 65 bytes in UTF-8কিছু বা কিছু বলেন না কেন ?
mbomb007

@ mbomb007 কারন কিছু লোক কোরিয়ান অক্ষরগুলি 3 বাইট হয় তা জানেন না।
জংহওয়ান মিন

1

সি # 42 বাইট

একটি লাগে int[]এবং ফেরৎ IEnumerable<int>

a=>a.Select(v=>a[0]+a.Last()-v).Reverse();

(এটি আসলে জেএইচএম এর সংস্করণের কেবল একটি পোর্টড সংস্করণ ..)


1

টিএসকিউএল, 200 বাইট

সারণী ভেরিয়েবল ইনপুট হিসাবে ব্যবহৃত হয়

DECLARE @ table(a int, b int identity)

INSERT @ values(5),(9),(1),(3),(8),(7),(8);

WITH c as(SELECT*,rank()over(order by b desc)z FROM @)SELECT g+isnull(sum(-f)over(order
by b),0)FROM(SELECT sum(iif(c.b=1,c.a,0))over()g,d.a-lead(d.a)over(order by d.b)f,c.b
FROM c,c d WHERE c.b=d.z)d

চেষ্টা কর


1

পিএইচপি, 60 56 52 বাইট

-4 বাইটস @ ইউজার59178 ধন্যবাদ

for($a=$argv;--$argc;)echo$a[1]+end($a)-$a[$argc],_;

কমান্ড লাইন আর্গুমেন্টে কাজ করে, বিভাজক হিসাবে আন্ডারস্কোর ব্যবহার করে। সাথে চালাও
php -r '<code>' <space separated numbers>


1
আপনি কেবল $nনিয়ন্ত্রণ ভেরিয়েবল হিসাবে ব্যবহার না করার কোনও কারণ আছে ? আমি এর মতো সংস্করণ চেষ্টা করেছি এবং এটি 4 বাইট সংক্ষিপ্ত এবং কাজ করার মতো বলে মনে হয়েছিল।
ব্যবহারকারী59178

1

পার্ল 6 ,  48 33  30 বাইট

{[\+] .[0],|.reverse.rotor(2=>-1).map({[-] @_})}
{.reverse.map: {.[0]+.[*-1]-$^a}}
{[R,] .map: {.[0]+.[*-1]-$^a}}

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

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

{  # bare block lambda with implicit parameter 「$_」

  [R,]               # reduce the following using the comma operator [R]eversed
                     # (short way to do the same thing as 「reverse」)

    .map:            # map the input (implicit method call on 「$_」

      {              # bare block lambda with placeholder parameter 「$a」

          .[     0 ] # the first value of 「$_」 (implicit “method” call)
        + .[ * - 1 ] # add the last value of 「$_」 (implicit “method” call)
        -     $^a    # declare the parameter and subtract it from the above
      }
}

*-1এছাড়াও টাইপ WhateverCode, যেখানে একটি ল্যামডা অভিব্যক্তি *শুধুমাত্র অবস্থানগত প্যারামিটার।


যারা পার্ল কথা বলেন না তাদের ব্যাখ্যা?
সাইয়েস

সংক্ষিপ্ততম সংস্করণে @ কিয়েস যুক্ত হয়েছে। এটি পার্ল 5 কেও জানত এমন কাউকে ব্যাখ্যা করা দরকার। যদি আপনি হতাশ হয়েছে [\+]প্রথম উদাহরণ থেকে ত্রিভুজ কমাতে হয় [\+] 3,-1,1,-5(3,2,3,-2)এবং [\,] 3,-1,1,-5((3,), (3,-1), (3,-1,1), (3,-1,1,-5))
ব্র্যাড গিলবার্ট b2gills



0

সি ++ 14, 103 বাইট

নামহীন ল্যামডা হিসাবে, তার ইনপুট প্রয়োজন আছে rbegin, rend, backএবং push_backপাত্রে মত vector, dequeবা list

গ্লেন ও এর জুলিয়া উত্তর থেকে পদ্ধতির ব্যবহার করা

[](auto c){decltype(c)d;for(auto i=c.rbegin()-1;++i!=c.rend();)d.push_back(c[0]+c.back()-*i);return d;}

অবহেলিত এবং ব্যবহার:

#include<iostream>
#include<vector>

//declare generic function, return is deduced automatically
auto f=[](auto c){
  //create fresh container of the same type as input
  decltype(c)d;

  //iterate through the reverse container
  for(auto i=c.rbegin()-1;++i!=c.rend();)
    //add the first and last element minus the negative reverse
    d.push_back(c[0]+c.back()-*i);
  return d;
}
;


int main(){
  std::vector<int> a={18,  19,  17,  20,  16};
  auto b = f(a);
  for(auto&x:b)
    std::cout << x << ", ";
  std::cout<<"\n";
}



0

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

(fn[c](conj(map #(-(first c)%)(reductions +(reverse(map #(apply - %)(partition 2 1 c)))))(first c))))

বেশ বর্ণনা অনুসরণ করে:

(def f (fn[c]
         (conj
           (->> c
                (partition 2 1)
                (map #(apply - %))
                reverse
                (reductions +)
                (map #(-(first c)%)))
           (first c))))

0

জাভা 7, 96 বাইট

int[]c(int[]a){int l=a.length,i=1,r[]=a.clone();for(;i<l;r[i]=r[i-1]+a[l-i]-a[l-++i]);return r;}

ব্যাখ্যা:

int[] c(int[] a){     // Method with integer-array parameter and integer-array return-type
  int l=a.length,     //  Length of input array
      i=1,            //  Index (starting at 1, although Java is 0-indexed)
      r[]=a.clone();  //  Copy of input array
  for(; i<l;          //  Loop over the array
    r[i] =            //   Replace the value at the current index in the copied array with:
      r[i-1]          //    The previous value in this copied array
      + a[l - i]      //    plus the opposite value in the input array
      - a[l - ++i])   //    minus the value before the opposite value in the input array (and increase the index)
  ;                   //  End the loop (implicit / no body)
  return r;           //  Return the result array
}                     // End of method

পরীক্ষার কোড:

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

class M{
  static int[]c(int[]a){int l=a.length,i=1,r[]=a.clone();for(;i<l;r[i]=r[i-1]+a[l-i]-a[l-++i]);return r;}

  public static void main(String[] a){
    System.out.println(java.util.Arrays.toString(c(new int[]{ 18,19,17,20,16 })));
    System.out.println(java.util.Arrays.toString(c(new int[]{ 1,2,3,4,5 })));
    System.out.println(java.util.Arrays.toString(c(new int[]{ 5,9,1,3,8,7,8 })));
    System.out.println(java.util.Arrays.toString(c(new int[]{ 6,5,4,1,2,3 })));
  }
}

আউটপুট:

[18, 14, 17, 15, 16]
[1, 2, 3, 4, 5]
[5, 6, 5, 10, 12, 4, 8]
[6, 7, 8, 5, 4, 3]

0

এপিএল (ডায়ালগ ইউনিকোড) , 11 বাইট এসবিসিএস

বেনামে ট্যাসিট প্রিফিক্স ফাংশন।

+\⊃,∘⌽2-⍨/⊢

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

+\ সংখ্যার যোগফল

 তর্কটির প্রথম উপাদান

, অনুসরণ
 করেছে
 এর বিপরীতে

2-⍨/ এর যুগলতর পার্থক্য

 যুক্তি

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