পরবর্তী সংখ্যাগুলি বিয়োগ করুন


27

বিবরণ

একটি এন নম্বর থেকে পরবর্তী পি নম্বরগুলি বিয়োগ করুন। এন এর পরবর্তী সংখ্যাটি এন + 1 is

আমি কী বলতে চাইছি তা পেতে উদাহরণগুলি দেখুন।

উদাহরণ:

Input: N=2,P=3
Calculate: n - (n+1) - (n+2) - (n+3)     //Ending with 3, because P=3
Calculate: 2 -  2+1  -  2+2  - 2+3       //Replacing N with 2 from Input
Calculate: 2 -  3    -  4    - 5
Output: -10


Input: N=100,P=5
Calculate: n - (n+1) - (n+2) - (n+3) - (n+4) - (n+5)
Calculate: 100-  101 -  102  -  103  -  104  - 105
Output: -415


Input: N=42,P=0
Calculate: n
Calculate: 42
Output: 42


Input: N=0,P=3
Calculate: n - (n+1) - (n+2) - (n+3)
Calculate: 0 -  1    -  2    -  3
Output: -6


Input: N=0,P=0
Calulate: n
Calculate: 0
Output: 0

ইনপুট:

এন : পূর্ণসংখ্যা, ধনাত্মক, নেতিবাচক বা 0 0

পি : পূর্ণসংখ্যা, ধনাত্মক বা 0, নেতিবাচক নয়

আউটপুট:

পূর্ণসংখ্যা বা স্ট্রিং, 0 টি নেতৃস্থানীয় অনুমোদিত, পিছনে থাকা নতুন লাইনের অনুমতি

নিয়মাবলী:

  • কোনও ফাঁক নেই
  • এটি কোড-গল্ফ, তাই বাইট জেতে সংক্ষিপ্ততম কোড
  • ইনপুট এবং আউটপুট বর্ণিত হিসাবে অবশ্যই হতে হবে

1
এখানে প্রয়োজনীয় চ্যালেঞ্জটি ত্রিভুজ সংখ্যা গণনা করা।
পিটার টেলর

4
এটি কেবল ত্রিভুজাকার সংখ্যা ছাড়াও আরও অনেক কিছু রয়েছে; শুরুর পয়েন্টটি নির্বিচারে পাশাপাশি বিয়োগের সংখ্যাও শূন্য হতে পারে।
জেডিএল

ত্রিভুজাকার সংখ্যার জন্য এটিও সম্ভব যে বদ্ধ ফর্মটি ব্যবহারের চেয়ে প্রকৃত যোগফলটি আরও কম করা সম্ভব, যেখানে আপনি কেবল 0 থেকে এন পর্যন্ত একটি পরিসর যোগ করে স্বেচ্ছাসেবী বহুভুজ সংখ্যাগুলি গণনা করতে পারবেন না (আমি যদি নিকট ভোটের সাথে একমত হই তবে অন্যান্য চ্যালেঞ্জ সবেমাত্র ত্রিভুজাকার সংখ্যা চেয়েছিল asked)
মার্টিন এন্ডার

1
জন্য Input: N=0,P=3উদাহরণস্বরূপ, আপনার সম্প্রসারণ কিছু বিদেশী ডাবল নেগেটিভ হয়েছে
turbulencetoo

1
: @JDL, অংশ যা "শুধু ত্রিভুজ সংখ্যার চেয়ে আরো" একটি সহজ গুণ হল N * (P-1)। যে কার্যত এর সংজ্ঞা নিয়ে তুচ্ছ
পিটার টেলর

উত্তর:


15

05 এ বি 1 ই , 5 3 বাইট

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

Ý+Æ

ব্যাখ্যা

পি তারপর এন ইনপুট হিসাবে লাগে।

       # implicit input, ex 5, 100
Ý      # range(0,X): [0,1,2,3,4,5]
 +     # add: [100,101,102,103,104,105]
  Æ    # reduced subtraction: 100-101-102-103-104-105

4
আহ, আমি প্রায় আমার সমাধান পোস্ট করতে চেয়েছিলাম haha। এছাড়াও, তিন বাইট জন্য: Ý+Æ:)।
আদনান

এটি কেবল ইনপুটটি স্যুইচ করে ( Pপ্রথম যায়)
আদনান

@ আদনান: আমি জানি না যে 05 এ বি Ý1 ই ছিল ... আমি ভেবেছিলাম যে কেবল 1-ভিত্তিক পরিসর আছে।
এমিগানা

কোন চরিত্রের এনকোডিংটি কেবলমাত্র 3 বাইট? ;-)
ইয়াঙ্কি

1
@ আয়ঙ্কি: সিপি -১২২২
এমিগিনা




10

জাভাস্ক্রিপ্ট (ES6), 20 19 18 বাইট

n=>p=>n+p*(~p/2-n)

জাভেয়ির পরামর্শ অনুসারে
কারিরিং করে 1 বাইট সংরক্ষণ করা হয়েছে ব্যবহারকারী 81655 এর জন্য 1 বাইট সংরক্ষণ করা হয়েছে thanks

পরীক্ষা

let f =
n=>p=>n+p*(~p/2-n)

console.log(f(2)(3))
console.log(f(100)(5))
console.log(f(42)(0))
console.log(f(0)(3))
console.log(f(0)(0))


আপনি ফাংশনটি কারি করে একটি বাইট সংরক্ষণ করতে পারেন। n=>p=>...এবং এর সাথে ফাংশনটি কল করছেf(n)(p)
Zwei

(n,p)=>n-p*(++p/2+n)সি # তেও কাজ করবে।
অ্যালোইসডজি বলেছেন মোনিকা

1
n-p*(++p/2+n)সমতূল্য n+p*(~p/2-n)
ব্যবহারকারী81655


7

হাস্কেল, 19 18 বাইট

n#p=n+sum[-n-p..n]

পূর্ববর্তী 19 বাইট সমাধান

n#p=n-n*p-(p*p+p)/2
n#p=n-sum[n+1..n+p]

7

সি #, 21 20 বাইট

সম্পাদনা: TheLethalCoder ধন্যবাদ একটি বাইট সংরক্ষণ করা

N=>P=>N-P++*(N+P/2);

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

পরীক্ষার কেস সহ পুরো উত্স:

using System;

namespace substract
{
    class Program
    {
        static void Main(string[] args)
        {
            Func<int,Func<int,int>>s=N=>P=>N-P++*(N+P/2);
            Console.WriteLine(s(2)(3));     //-10
            Console.WriteLine(s(100)(5));   //-415
            Console.WriteLine(s(42)(0));    //42
            Console.WriteLine(s(0)(3));     //-6
            Console.WriteLine(s(0)(0));     //0

        }
    }
}

1
1 বাইট সংরক্ষণ করার N=>P=>পরিবর্তে (N,P)=>
কার্চিং

5

গণিত, 15 বাইট

#2-##-#(#+1)/2&

একটি নামবিহীন ফাংশন যা প্রাপ্ত হয় Pএবং nতার ক্রমের পরামিতি হিসাবে।

বদ্ধ ফর্ম সমাধান ব্যবহার করে n - n*p - p(p+1)/2


5

পার্ল, 23 22 বাইট

এর জন্য +1 অন্তর্ভুক্ত -p

এসটিডিনের পৃথক লাইনে এন এবং পি (সেই ক্রমে) দিন:

subtract.pl
2
3
^D

subtract.pl:

#!/usr/bin/perl -p
$_-=eval"+2+\$_++"x<>

( ইনভয়েসগুলিকে 2 বাইট জরিমানা ''বাঁচাতে উদ্ধৃতিগুলি ব্যবহার করা হচ্ছে \কারণ এটির সাথে একত্রিত করা যায় না -e)

একই ধারণা এবং দৈর্ঘ্য:

#!/usr/bin/perl -p
$_+=eval"-1-++\$_"x<>

আশ্চর্যজনকভাবে প্রকৃত গণনা করা প্রত্যক্ষ সূত্র ব্যবহারের চেয়ে কম হয় (এগুলি $আসলে পাটিগণিতের জন্য আহত)


5

সি ++, 54 বাইট

  [](int N,int P){int F=N;while(P--)F-=++N;return F;}

[] (ইন্ট এন, ইন পি

টেস্ট:

#include <iostream>
int main(void)
{
    int N, P;
    std::cin >> N >> P;
    auto f = [](int N,int P){int F=N;while(P--)F-=++N;return F;};
    std::cout << f(N,P) << std::endl;
    return 0;
}

2
পিপিসিজিতে আপনাকে স্বাগতম! দুর্ভাগ্যক্রমে, সমস্ত সাবমিশনগুলির প্রোগ্রাম বা কলযোগ্য ফাংশন হওয়া দরকার , যদিও এটি কেবল একটি স্নিপেট যা ইনপুটটিকে পূর্বনির্ধারিত ভেরিয়েবলগুলিতে সঞ্চয় করে এবং অন্যটিতে আউটপুট সংরক্ষণ করে।
মার্টিন এন্ডার

1
@ মার্টিনএেন্ডারে আমি ল্যাম্বডা দিয়ে সি ++ এ পরিবর্তন করেছি। এটা কি গ্রহণযোগ্য?
ভোল্যান্ড এবং


আপনি f;g(n,p){f=n;while(p--)f-=++n;return f;}আপনার অ্যালগোরিদম ব্যবহার করে 40 বাইট সহ সিতে এটি করতে পারেন
ক্লাবল্যাঙ্ক

@ ক্লেব্ল্যাঙ্ক টিপটির জন্য ধন্যবাদ - গ্লোবাল ভেরিয়েবল এবং একটি সুস্পষ্ট প্রকার ছাড়াই ঘোষণা সত্যই কার্যকর। কত দুঃখের বিষয় যে C99 স্ট্যান্ডার্ড অন্তর্ভুক্তটিকে সরিয়ে দিয়েছেint
ভোল্যান্ড এবং


4

ব্র্যাচল্যাগ , 19 17 বাইট

hHyL,?+y:Lx+$_:H+

ব্যাখ্যা

hH                  Input = [H, whatever]
 HyL,               L = [0, …, H]
     ?+             Sum the two elements in the Input
       y            Yield the range from 0 to the result of the sum
        :Lx         Remove all elements of L from that range
           +        Sum the remaining elements
            $_      Negate the result
              :H+   Add H

4

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

:y+s-

ইনপুট হয় Pএবং তারপর N

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

ব্যাখ্যা

:     % Take P implicitly. Range [1 2 ... P]
      %     Stack: [1 2 ... P]
y     % Take N implicitly at the bottom of the stack, and push another copy
      %     Stack: N, [1 2 ... P], N
+     % Add the top two arrays in the stack , element-wise
      %     Stack: N, [N+1 N+2 ... N+P]
s     % Sum of array
      %     Stack: N, N+1+N+2+...+N+P
-     % Subtract the top two numbers
      %     Stack: N-(N+1+N+2+...+N+P)
      % Implicitly display

3

ব্যাচ, 30 বাইট

@cmd/cset/a%1-(%1*2+%2+1)*%2/2

কমান্ড-লাইন প্যারামিটারগুলি গ্রহণ করে nএবং pহিসাবে কোনও পেছনের নতুন লাইন ছাড়াই ফলাফল মুদ্রণ করে।



3

আর, 17 14 বাইট

N-N*P-sum(0:P)

3 বাইট দূরে গল্ফ করার জন্য বিলিউবকে ধন্যবাদ। পূর্ববর্তী উত্তর:

N-sum(N+if(P)1:P)

নোট করুন যে 1: 0 ভেক্টরে প্রসারিত হয়েছে (1,0) সুতরাং আমাদের যদি (পি) শর্তটি (বা ব্যবহার seq_lenকরতে হয় তবে এটি আরও বাইট হয়) প্রয়োজন। শর্ত ছাড়াই, আমরা পি = 0 হলে ভুল আউটপুট পেতে পারি।

যদি পি শূন্য হয়, তবে যোগফল প্রসারিত হয় sum(N+NULL), তারপরে sum(numeric(0)), যা শূন্য।


3
এটি সম্পূর্ণ প্রোগ্রাম হিসাবে যোগ্যতা অর্জন করে কিনা তা নিশ্চিত নন কারণ এর জন্য এন এবং পি এর ইতিমধ্যে সংজ্ঞা দেওয়া দরকার requires যেভাবেই হোক n-n*p-sum(0:p)
কোনওভাবেই

সমস্যার আমার ব্যাখ্যাটি হ'ল এন এবং পি ইতিমধ্যে সংজ্ঞায়িত হয়েছে (অন্যান্য উত্তরগুলিও এই লাইনটি গ্রহণ করবে বলে মনে হচ্ছে)। গল্ফিং পয়েন্ট যদিও নেওয়া।
জেডিএল

3
নির্দিষ্ট না করা থাকলে সাবমিশনগুলিকে কেবল স্নিপেট নয়, পুরো প্রোগ্রাম বা কলযোগ্য ফাংশন হওয়া দরকার । অন্যান্য উত্তরগুলি এই ধারণাটি করে যে ভেরিয়েবলগুলি ইতিমধ্যে সংজ্ঞায়িত করা হয়েছে?
মার্টিন এন্ডার

আমি জাভাস্ক্রিপ্ট বিশেষজ্ঞ নই, তবে দেখে মনে হচ্ছে জাভাস্ক্রিপ্ট সমাধান ইতিমধ্যে সংজ্ঞায়িত হিসাবে ভেরিয়েবলগুলি নিচ্ছে। যদিও এটি আমার নিজের ভুল বোঝাবুঝি হতে পারে। যেহেতু সমস্যাটির ক্ষেত্রে এন এবং পি নামকরণ করা হয়েছিল, তাই আমি এটি "অন্যথায় নির্দিষ্ট" হিসাবে নিয়েছি। যদি তা না হয় তবে আমাদের একটি মোড়কের প্রয়োজন function(N,P){...}বাN=scan();P=scan();...
JDL

@ জেডিএল জাভাস্ক্রিপ্ট এন্ট্রি পূর্বনির্ধারিত পরিবর্তনশীল গ্রহণ করবে না
নীল

3

পিএইচপি, 33 বাইট

$n-=$n*$p+array_sum(range(0,$p));

আমার মনে হয় পিএইচপি-কোডের জন্য আপনার ব্যবহার <?phpবা সংক্ষিপ্ত হওয়া দরকার <?। আপনার উত্তর সম্পাদনা করুন।
পল স্মিটজ


দুঃখিত, যা বলেছেন তা ভুলে যাও আমি এটির সাথে অনেক উত্তর দেখেছি, এবং তাই ভেবে দেখেছি যে এর জন্য একটি নিয়ম আছে, যা এটি নয়। এর মতো আলোচনা এড়াতে একটি হওয়া উচিত।
পল স্মিটজ

3

জেলি , 7 বাইট

RS+×_×-

আর্গুমেন্টগুলি ট্রাইআইটঅনলাইনেP, N
এটি পরীক্ষা করা হয়

কিভাবে?

RS+×_×-  - takes two arguments: P, N
R        - range(P): [1,2,3, ... ,P]
 S       - sum: 1+2+3+ ... +P
   ×     - multiply: P*N
  +      - add: 1+2+3+ ... +P + P*N
    _    - subtract: 1+2+3+ ... +P + P*N - N
      -  - -1
     ×   - multiply: (1+2+3+ ... +P + P*N - N)*-1
                   = -1-2-3- ... -P - P*N + N
                   = N - (N+1) - (N+2) - (N+3) - ... - (N+P)



3

জাভা, 67 , 63 বাইট

Golfed:

int x(int n,int p){return-((p%2<1)?p*p/2+p:p/2*(p+2)+1)+n-p*n;}

Ungolfed:

int x(int n, int p)
{
    return -((p%2<1) ? p*p/2+p : p/2 * (p+2) + 1) + n - p*n;
}

মূলত আমি সূত্রে কিছু গণিত করেছি। n - p*nঅংশ সব যত্ন নেয় nসূত্রে এর। তারপরে আমি একত্রে বাড়তি পূর্ণসংখ্যার সেট (গাণিতিক সিরিজ) এর সংমিশ্রণের একটি দুর্দান্ত মজাদার সম্পত্তি ব্যবহার করেছি: আমি প্রথম এবং শেষের পূর্ণসংখ্যার যোগফলটি ব্যবহার করেছি এবং তারপরে এটির দ্বারা গুণিত set.length / 2করব (আমি সমতাটিও পরীক্ষা করে সঠিকভাবে এটি পরিচালনা করি)।

এটি ব্যবহার করে দেখুন: https://ideone.com/DEd85A


int n,int pবাইট সংরক্ষণ করার জন্য আপনি স্থানটি সরাতে পারেন । এছাড়াও, আপনি পরিবর্তন করতে পারেন p%2==0থেকে p%2<1অন্য বাইট সংরক্ষণ করুন। - আমি যখন জানিনা যে আপনি ইতিমধ্যে একটি জাভা উত্তর পোস্ট করেছেন যখন আমি লুপটির সাথে আমার সংক্ষিপ্ত রূপটি পোস্ট করেছি । আমি আপনার গাণিতিক সূত্রটি পছন্দ করি তবে আমার কাছ থেকে এটি +1 করুন। :)
কেভিন ক্রুইজসেন

দুর্দান্ত সূত্র! p%2>0অর্ডারটি ব্যবহার করে এবং টার্নারিটিতে স্যুইচ করা আপনি একটি অক্ষর সংরক্ষণ করতে পারেন।
হিজরত

ওহ এবং এটিও p/2 *(p+2)সমানp*p/2+p
ফ্রোজেন

Hehe দুর্দান্ত উন্নতি :) আসলে এই সূত্রটি একটি মজার উপাখ্যান থেকে এসেছে :) @ কেভিন ক্রুজসেন চমৎকার উত্তর, আমার চেয়ে অবশ্যই ভাল :) +1
পিচ

3

জাভা 7, 43 40 বাইট

int c(int n,int p){return n-p*n+p*~p/2;}

জাভা 8, 19 বাইট

(n,p)->n-p*n+p*~p/2

@ জোনাথন অ্যালান এর আশ্চর্যজনক পাইথন 2 সূত্র থেকে নির্লজ্জভাবে চুরি হয়েছে ।

আসল উত্তর ( 61 60 বাইট):

int c(int n,int p){int r=n,i=1;for(;i<p;r-=n+++i);return r;}

অবহেলিত ও পরীক্ষার কেস:

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

class M{
  static int c(int n, int p){
    return n - p*n + p*~p / 2;
  }

  public static void main(String[] a){
    System.out.println(c(2, 3));
    System.out.println(c(100, 5));
    System.out.println(c(42, 0));
    System.out.println(c(0, 3));
    System.out.println(c(0, 0));
  }
}

আউটপুট:

-10
-415
42
-6
0

এটি সম্পর্কে জাভা 7 কী দরকার?
mbomb007

@ mbomb007 int c(int n,int p){...}। এটি যদি জাভা 8 (বা 9) হত তবে এটি হতে পারে (n,p)->n-p*n+p*~p/2( 19 বাইট )
কেভিন ক্রুইজসেন

তারপরে সেই বাইটগুলি বাঁচাতে এটি করুন।
mbomb007




1

পাইথ, 11 বাইট

Ms+Gm_+GdSH

একটি ফাংশন gযা আর্গুমেন্টের মাধ্যমে nএবং pমাধ্যমে ইনপুট নেয় এবং ফলাফল মুদ্রণ করে। এটি ফর্ম বলা যেতে পারে gn p

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

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

Ms+Gm_+GdSH  Function g. Inputs: G, H
M            g=lambda G,H:
         SH   1-indexed range, yielding [1, 2, 3, ..., H]
    m_+Gd     Map lambda d:-(G+d) over the above, yielding [-(G+1), -(G+2), -(G+3),
              ..., -(G+H)]
  +G          Add G to the above, yielding [G, -(G+1), -(G+2), -(G+3), ..., -(G+H)]
 s            Reduce on addition with base case 0, yielding G-(G+1)-(G+2)-(G+3)...
              -(G+H)
              Implicitly print


1

ম্যাপেল, 19 বাইট

n-sum(i,i=n+1..n+p)

ব্যবহার:

> f:=(n,p)->n-sum(i,i=n+1..n+p);
> f(2, 3);
  -10
> f(100,5);
  -415
> f(42,0);
  42

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