নবম ক্রস-বিকল্প যোগফলটি সন্ধান করুন


17

একটি একক ধনাত্মক পূর্ণসংখ্যার একটি ইনপুট দেওয়া হয়েছে, সেই সংখ্যার সাথে মিলে যায় এমন "ক্রস-বিকল্প সমষ্টি" আউটপুট দিন।

ইনপুট উদাহরণ নিন n=5। ক্রস-বিকল্প সমষ্টিটি খুঁজতে প্রথমে প্রস্থ এবং উচ্চতার একটি বর্গক্ষেত্র গ্রিড তৈরি করুন nযা বাম থেকে ডান এবং নীচে থেকে নীচে পড়া, 1প্রতিটি পজিশনে শুরু হয় এবং বৃদ্ধি করে:

 1  2  3  4  5
 6  7  8  9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25

তারপরে, গ্রিড থেকে পরিমাণগুলি নিন যা একটি "ক্রস" গঠন করে (এটি উভয় তির্যক একত্রিত হয়):

 1           5
    7     9
      13
   17    19
21          25

1 5 7 9 13 17 19 21 25

অবশেষে, এই ক্রমের বিকল্প যোগফলটি নিন:

1+5-7+9-13+17-19+21-25

-11

অন্য একটি উদাহরণ, এর জন্য n=6(কেবল সংখ্যাটি নির্ধারণের জন্য ক্রসটি দেখতে কেমন তা দেখানোর জন্য n):

 1  2  3  4  5  6
 7  8  9 10 11 12
13 14 15 16 17 18
19 20 21 22 23 24
25 26 27 28 29 30
31 32 33 34 35 36

 1              6
    8       11
      15 16
      21 22
   26       29
31             36

1+6-8+11-15+16-21+22-26+29-31+36

20

যেহেতু এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জিতবে।

এখানে জন্য সঠিক আউটপুট হয় n=1থেকে n=100যা আপনি পরীক্ষার বিষয় হিসাবে ব্যবহার করা যাবে না:

1
4
-3
10
-11
20
-23
34
-39
52
-59
74
-83
100
-111
130
-143
164
-179
202
-219
244
-263
290
-311
340
-363
394
-419
452
-479
514
-543
580
-611
650
-683
724
-759
802
-839
884
-923
970
-1011
1060
-1103
1154
-1199
1252
-1299
1354
-1403
1460
-1511
1570
-1623
1684
-1739
1802
-1859
1924
-1983
2050
-2111
2180
-2243
2314
-2379
2452
-2519
2594
-2663
2740
-2811
2890
-2963
3044
-3119
3202
-3279
3364
-3443
3530
-3611
3700
-3783
3874
-3959
4052
-4139
4234
-4323
4420
-4511
4610
-4703
4804
-4899
5002

8
নীট বাছাই: এটি কোনও বিকল্প যোগফল নয়। আপনি প্রথম দুটি পদ যুক্ত করছেন।
ডেনিস

উত্তর:


26

জেলি, 21 19 11 10 7 বাইট

²~³¡H+2

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

ধারণা

এক সেকেন্ডের জন্য ধরে নিন যে চূড়ান্ত যোগফলের প্রথম পদটি যোগ করার পরিবর্তে বিয়োগ করা হয়।

যাক এন একটি ধনাত্মক পূর্ণসংখ্যা হতে।

এমনকি কেস

 1              6
    8       11
      15 16
      21 22
   26       29
31             36

সারিগুলির নীচের অর্ধেকের তির্যক উপাদানগুলির মধ্যে পার্থক্যগুলি হ'ল প্রথম n ÷ 2 বিজোড় প্রাকৃতিক সংখ্যা। যেহেতু 1 + 3 + 5 +… + (2 কে + 1) = কে 2 , তাদের যোগফল (n ÷ 2) 2 = n 2 ÷ 4

এই উদাহরণে

- 1 + 6 - 8 + 11 - 15 + 16 - 21 + 22 - 26 + 29 - 31 + 36  =
-(1 - 6)-(8 - 11)-(15 - 16)-(21 - 22)-(26 - 29)-(31 - 36) =
(    5   +   3    +    1  )+(   1    +    3    +    5   ) =
             9             +              9               = 18

সুতরাং, যোগফল 2 × n 2 ÷ 4 = n 2 ÷ 2

বিজোড় মামলা

 1           5
    7     9
      13
   17    19
21          25

উপরের এবং নীচে এবং ( 1এবং 5, এবং 21এবং 25; 7এবং 9, এবং 17এবং 19) থেকে সংশ্লিষ্ট সারিগুলিতে তির্যক উপাদানগুলির মধ্যে পার্থক্য একই, তাই তারা পর্যায়ক্রমে যোগফল বাতিল করবে।

এই উদাহরণে

- 1 + 5 - 7 + 9 - 13 + 17 - 19 + 21 - 25  =
-(1 - 5)-(7 - 9)- 13 +(17 - 19)+(21 - 25) =
    4   +   2   - 13 -    2    -    4     = -13

যা বাকি আছে তা কেন্দ্রীয় উপাদানটির নেতিবাচক, যা প্রথম এবং শেষ সংখ্যার পাটিগণিত গড়, তাই এটি গণনা করা যায় - (এন 2 + 1) ÷ 2

জেনারেল কেস

যেহেতু ~ X = - (x এর +1) দুই এর সম্পূরক পূর্ণসংখ্যার (জন্য ~ -এর মানে নেই bitwise), বিজোড় ক্ষেত্রে জন্য সূত্র হিসেবে পুনর্লিখিত করা যাবে এন ~ 2 ÷ 2

এছাড়াও, যেহেতু মূল যোগফলের প্রথম পদ ( 1 ) বিয়োগের পরিবর্তে যুক্ত করা হয়, উপরোক্ত সূত্রগুলি 2 এর ত্রুটি রেখে যায় , যা সংশোধন করতে হবে।

অতএব, এন ক্রস বিকল্প সমষ্টি এন 2 ÷ 2 +2 যদি এন এমনকি, এবং ~ এন 2 ÷ 2 +2 যদি এটা বিজোড় হয়।

অবশেষে, বিটওয়াইজ নট হ'ল একটি চালান, অর্থাত্, সমস্ত এক্সের জন্য ~~ x = x । এই পদ্ধতি ~~~ এক্স = ~ X , ~~~~ এক্স = এক্স , এবং, সাধারণভাবে, ~ এন এক্স (যার অর্থ ~ প্রয়োগ করা হয় এন বার) হয় এক্স যদি এন এমনকি এবং ~ X যদি এটা বিজোড় হয়।

সুতরাং, আমরা যেমন আমাদের সাধারণ সূত্র পুনর্লিখন করতে ~ এন এন 2 ÷ 2 +2 সব ধনাত্মক পূর্ণসংখ্যা জন্য এন

কোড

²~³¡H+2    Main link. Input: n

²          Yield n².
 ~         Apply bitwise NOT to n²...
  ³¡           n times.
    H      Halve the result.
     +2    Add 2.

1
আমি জানতাম যে এখানে কিছু সহজ সরল সূত্র রয়েছে তবে আপনার ব্যাখ্যা এবং কার্যকরকরণটি আশ্চর্যজনক। +1
ETH প্রোডাকশন

5

জাভাস্ক্রিপ্ট, 40 38 22 বাইট

নতুন ক্রমযুক্ত, অভিনব ক্লোজড ফর্ম সমাধানটি ব্যবহার করে এটি সমস্ত ক্রোধ!

n=>(n%2?3-n*n:4+n*n)/2

থমাসকওয়ার ধন্যবাদ, আমি আমার ব্যয়বহুল পুনরাবৃত্তির কাজটি সরিয়ে দিতে পারি।


আপনাকে কেবল একবারে নয় একবার করা উচিত যদি n% 2 হয়। আসলে, আমি মনে করি (n%2?3-n*n:4+n*n)/2
জেএসে


4

সিজেম, 13 15 বাইট

ri2#_{~}*2/2+

ডেনিসকে দুই বাইট অফ ধন্যবাদ।

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


3
আমার প্রথম সিজেমের উত্তর!
লুইস মেন্ডো

1
প্রতিস্থাপন করা হচ্ছে 2%{~}&সঙ্গে {~}*দুই বাইট পরিমাণ সঞ্চয় হয়।
ডেনিস

@ ডেনিস খুব ভাল! ধন্যবাদ!
লুইস মেন্ডো

3

মিনকোলাং 0.15 , 26 15 13 বাইট

ডেনিসের উন্মাদ অ্যালগরিদম ব্যবহার করে এবং তাঁকে আরও দুটি বাইট ধন্যবাদ দিয়ে গল্ফ করেছে। এই লোকটি বাইট গণনা অর্ধনের জন্য দায়ী!

n2;d[~]4+2:N.

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

ব্যাখ্যা

@ ভোটটোক্লোস n^ 2, বিটওয়াইজ নট nটাইমস প্রয়োগ করুন, চারটি যোগ করুন, অর্ধেক করুন। - টমাস কোওয়া 7 মিনিট আগে

কেন এটি কাজ করে তার ব্যাখ্যার জন্য ডেনিসের উত্তর দেখুন । এই উত্তরের একটি মন্তব্যে তিনি আরও একটি উন্নতির পরামর্শ দিয়েছিলেন যা কাজ করে কারণ :পূর্ণসংখ্যা বিভাগ, সুতরাং আমি স্ট্যাকের শীর্ষটিকে উপেক্ষা করতে পারি এবং বাইনারি পরিপূরকটি করা থেকে +1 নিয়ে চিন্তা করতে পারি না। তদ্ব্যতীত, n এবং n ^ 2 এর সমতুল্যতা রয়েছে, যা অদলবদলের প্রয়োজনটিকে সরিয়ে দেয়।

n                Take number from input - n
 2;              n**2
   d             Duplicates top of stack
    [~]          For loop that negates the top of stack n times
       4+        Add 4
         2:      Divide by 2
           N.    Output as number and stop.

2

গল্ফস্ক্রিপ্ট, 12 বাইট

~2?.{~}*2/2+

এটি আমার জেলি উত্তর থেকে অ্যালগরিদম ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!

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

~            # Evaluate the input.
 2?          # Square it.
   .         # Push a copy of the square.
    {~}      # Push a code block that applies bitwise NOT.
       *     # Execute it n² times. Since n² and n have the same parity,
             # this is equivalent to executing in only n times.
        2/   # Halve the result.
          2+ # Add 2.

2

ES7, 17 বাইট

n=>-1**n*n*n+4>>1

@ ডেনিসের পাইথন 2 উত্তর এর সহজ বন্দর।

এই উত্তরটি লেখার সময় আমি আমার ES6 বন্দরটি 17 বাইটে গল্ফ করতে পেরেছি!

n=>(n*n^-n%2)/2+2


2

খাঁটি বাশ, 28

ঠিক আছে এখন @ ডেনিস কীভাবে এটি করবেন তা আমাদের সমস্ত দেখিয়েছে, এটি আপডেট করার প্রয়োজন:

echo $[-1**$1*($1*$1+1)/2+2]

পূর্ববর্তী উত্তর:

বাশ + জিএনইউ ইউটিলিটিস, 77

এখানে একটি সূচনা:

a=$1
(seq 1 $[a+1] $[a*a]
seq $1 $[a>1?a-1:1] $[a*a])|sort -un|paste -sd+-|bc

কমান্ড-লাইন প্যারামিটার হিসাবে এন পাস করা হয়।

pasteবিকল্প যোগফল উত্পাদন জন্য এখানে সত্যিই সুবিধাজনক। -dবিকল্প বিভাজক অক্ষর, যা cyclically ব্যবহার করা হয় একটি তালিকা দেয়।


$[-1**$1*$1*$1+4>>1]এমনকি আরও খাটো।
নিল

2

জুলিয়া, 41 40 25 19 16 বাইট

n->-n%2$n^2÷2+2

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

ডেনিস দ্বারা রচিত, এখানে পদ্ধতির নিম্নলিখিত। প্রথমে আমরা n এর সমতা পাই , অর্থাত্ n (mod 2), এবং এটিকে অবহেলা করি। এটি আমাদের এমনকি ইনপুটগুলির জন্য 0 এবং বিজোড় জন্য -1 দেয়। তারপরে আমরা এন 2 দিয়ে বিটওয়াইজ এক্সওআর । যখন এন সমান হয়, এটি ঠিক এন 2 কারণ 0 সহ XOR কেবল সংখ্যা the যখন এন বিজোড় হয়, -1 সহ XOR হ'ল বিটওয়াইজ অবহেলা। সুতরাং এই সময়ে আমরা হয় আছে এন 2 অথবা নেই bitwise এন 2 । আমরা পূর্ণসংখ্যাটি 2 দ্বারা বিভক্ত করি এবং ফলাফল পেতে 2 যোগ করি।

পূর্ববর্তী সংস্করণে স্প 3000-এ একটি বাইট ধন্যবাদ সংরক্ষণ করা হয়েছে এবং ডেনিসকে এটির জন্য 9 টি ধন্যবাদ বাঁচিয়েছেন!



1

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

lambda n:(-1)**n*n*n/2+2

এটি থেকে অ্যালগরিদম ব্যবহার করে আমার জেলি উত্তর , একটি সামান্য পরিবর্তন করে:

~ N বার প্রয়োগ করার পরিবর্তে আমরা - n বার প্রয়োগ করি ( (-1) এন দিয়ে গুণ করে ) )। এটি সমতুল্য কারণ পাইথনে ~ x = -x - 1 এবং পূর্ণসংখ্যা বিভাগ মেঝে, তাই ~ x / 2 = (-x - 1) / 2 = -x / 2


1

পাইথ, 11 বাইট

+2/u_GQ*QQ2

অনলাইনে এটি ব্যবহার করে দেখুন পাইথ সংকলকটিতে

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

এটি থেকে অ্যালগরিদম ব্যবহার করে আমার জেলি উত্তর , একটি সামান্য পরিবর্তন করে:

~ N বার প্রয়োগ করার পরিবর্তে আমরা - n বার প্রয়োগ করি ( (-1) এন দিয়ে গুণ করে )। এটি সমতুল্য কারণ th x = -x - 1 এবং পাইথের মধ্যে পূর্ণসংখ্যা বিভাগ মেঝে, তাই ~ x / 2 = (-x - 1) / 2 = -x / 2

+2/u_GQ*QQ2  Evaluated input: Q

       *QQ   Yield Q².
   u  Q      Set G = Q². For each non-negative integer below Q:
    _G         Set G = -G.
             Return G.
  /       2  Halve the result.
+2           Add 2.

1

ডিসি, 17

ডেনিস থেকে একই চেষ্টা করা এবং পরীক্ষিত সূত্র ব্যবহার:

?dd*1+r_1r^*2/2+p

অনলাইনে এটি ব্যবহার করে দেখুন ওহ, কেন আইডিয়ন ব্যাশ স্যান্ডবক্স অন্তর্ভুক্ত নয় dc?

কমান্ড-লাইন পরীক্ষা:

for i in {1..100}; do echo $i | dc -e '?dd*1+r_1r^*2/2+p'; done 

?2^1+2~2*1-*2+pদুটি বাইট সংরক্ষণ
ডেনিস

1

জিএস 2, 9 বাইট

V,@!α2+''

এটি আমার জেলি উত্তর থেকে অ্যালগরিদম ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!

V,@e 7+''

সমানভাবে সংক্ষিপ্ত, তবে উল্লেখযোগ্যভাবে কোনও অ-এসসিআইআই অক্ষর নেই।

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

V          Parse the input as an integer n.
 ,         Compute n².
  @        Push a copy of n².
   !       Bitwise NOT.
    α      Make a block of the previous instruction.
     2     Execute the block n² times. Since n² and n have the same parity,
           this is equivalent to executing in only n times.
      +    Halve the result.
       ''  Increment twice.


0

লুয়া, ৩৩ বাইট ( এটি অনলাইনে চেষ্টা করুন )

i=(...)print((-1)^i*i*i/2-.5*i%2)

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

i=(...)print((-1)^i*i*i/2-.5*i%2)
i=(...)                           Take input and store to i
       print(
             (-1)^i               Raise (-1) to the i-th power: -1 if odd, 1 if even
                   *i*i/2         Multiply by i squared and halved.
                         -.5*i%2  i%2 is the remainder when i is divided by 2
                                  if i is odd, then i%2 will be 1, and this expression
                                  will evaluate to -0.5
                                  but if i is even, then i%2 will be 0, which makes
                                  this expression evaluate to 0
                                )

0

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

⌊2+.5××⍨ׯ1*⊢

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

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