চূড়ান্ত নম্বর


15

চ্যালেঞ্জ

এখানে চিত্র বর্ণনা লিখুন

এমন একটি প্রোগ্রাম লিখুন যা 4 টি সংখ্যার অ্যারে নেয় ( যা নির্দিষ্ট অ্যালগরিদমের দ্বারা উত্পন্ন সংখ্যার ক্রমকে উপস্থাপন করে) ) এবং পরবর্তী অনুসরণ করবে returns

আমরা কেবল একটি ধ্রুবক (অর্থাত্ অ-পরিবর্তনশীল) প্রকরণ সহ সাধারণ সংযোজন, বিয়োগ, গুণ এবং বিভাগ অ্যালগরিদম ব্যবহার করব।

বিভাগের জন্য আমরা floorপূর্ণসংখ্যার মানগুলি ব্যবহার করব : 133/4 = 33এবং33/4 = 8

আপনি ধরে নিতে পারেন যে সর্বদা একক বৈধ রিটার্ন মান থাকবে

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

[14,24,34,44] 54 ফিরে আসবে (অতিরিক্ত অ্যালগরিদম)

[105,45,-15,-75] -135 (বিয়োগ অ্যালগরিদম) ফিরে আসা উচিত

[5,25,125,625] 3125 (গুণক অ্যালগরিদম) ফেরত দেওয়া উচিত

[256,64,16,4] 1 (বিভাগ অ্যালগরিদম) ফিরে আসা উচিত

সাধারণ নিয়ম


2
এটি পরেরটি আসার একটি সরলীকৃত সংস্করণ ? এবং বর্ডারলাইন সদৃশ।
পিটার টেলর

7
ভবিষ্যতে, আমি আপনাকে লাইভে যাওয়ার আগে স্যান্ডবক্সে পোস্ট করার পরামর্শ দিচ্ছি যাতে আপনি আগেই অন্য ব্যক্তির মন্তব্য পেতে পারেন।
লিকি নুন

5
পূর্ণসংখ্যা বিভাগের জন্য আপনার সত্যিকারের কয়েকটি পরীক্ষার কেস যুক্ত করা উচিত। প্রায় সমস্ত উত্তর [261,65,16,4], [4,2,1,0], বা [2,1,0,0]
ড্যামিয়েন

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

3
আপনার সম্ভবত অ-নেতিবাচক পূর্ণসংখ্যার উল্লেখ করা উচিত, কারণ যখন একটি বিভাগ সিরিজ নেতিবাচক হয় তখন দুটি ব্যাখ্যা থাকে। উদাহরণস্বরূপ -81/4হয় হয় 21 r 3বা হয় -20 r -1
জোনাথন অ্যালান

উত্তর:


6

05 এ বি 1 , 18 16 18 বাইট

D¥¬QPi`+s-ë`r/s\*î

ব্যাখ্যা

D                   # duplicate
 ¥                  # delta's
  ¬Q                # compare first delta to the other deltas
    P               # product (1 if all deltas are equal, otherwise 0)
     i              # if 1 (we're dealing with addition or subtraction)
      `+s-          # add the difference between the elements to the last element
          ë         # else (we're dealing with multiplication or division)
           `r/      # divide the 2nd element by the 1st
              s\*   # multiply with the 4th element
                 î  # round up

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


আউটপুটটি [4,2,1,0] এর সাথে ভুল ...
ড্যামিয়েন

@ ড্যামিয়েন: আমাকে জানানোর জন্য ধন্যবাদ আমি এটি ঠিক করেছি এবং এটি আমাকে
কয়েকটা বাইটও বাঁচিয়েছে

গ্রেট। এখন এটি আমার সমস্ত পরীক্ষার কেসকে বৈধতা দেয়।
ড্যামিয়েন

চারটি দিয়ে ভাগ করার জন্য এজ কেস ব্যবহার করে দেখুন:[-325, -82, -21, -6]
জোনাথন অ্যালান

... আসলে আমি অনুমান করি যে প্রশ্নটি কেবলমাত্র অ-নেতিবাচক পূর্ণসংখ্যার জন্য হওয়া উচিত বা কোন কনভেনশনটি ব্যবহার করা উচিত তা নির্দিষ্ট করা উচিত।
জোনাথন অ্যালান

14

জাভাস্ক্রিপ্ট (ES6),  44   42  44 বাইট (স্থির)

(a,b,c,d)=>a-b+d-c?d/(a<b?a/b:a/b|0)|0:d+c-b

ইসমাইল মিগুয়েলের পরামর্শ অনুসরণ করে 2 বাইট সংরক্ষণ করা হয়েছে।
জন্য ফিক্সড সংস্করণ [2,1,0,0]এবং[1,0,0,0] যেমন edc65 দ্বারা প্রস্তাবিত

30 বাইট সংস্করণ

রেকর্ডের জন্য, আমার প্রথম প্রচেষ্টা 32 30 বাইট ছিল তবে বিভাগের জন্য ফ্লোর () সমর্থন অভাব ছিল। এটি বিশেষ ক্ষেত্রে যেমন [2,1,0,0]এবং এর জন্যও ব্যর্থ হয় [1,0,0,0]

(a,b,c,d)=>c-2*b+a?d*c/b:d+c-b

ডেমো

var f =
(a,b,c,d)=>a-b+d-c?d/(a<b?a/b:a/b|0)|0:d+c-b

var test = [
  [ 14, 24, 34, 44 ],     // should return 54 (addition Algorithm)
  [ 105, 45, -15, -75 ],  // should return -135 (subtraction algorithm)
  [ 5, 25, 125, 625 ],    // should return 3125 (multiplicative algorithm)
  [ 256, 64, 16, 4 ],     // should return 1 (division algorithm)
  [ 260, 65, 16, 4 ],     // should return 1 (division algorithm with floor())
  [ 2, 1, 0, 0 ],         // should return 0 (special case of division algorithm)
  [ 1, 0, 0, 0 ]          // should return 0 (special case of division algorithm)
];

test.forEach(l => console.log('[' + l.join`, `+ '] => ' + f(...l)));


বাহ, আমি জানতাম না যে জেএসের প্যাটার্ন মিল রয়েছে।
লিকি নুন

@ ল্যাকইনুন - ES6- এ ডেস্ট্রাকচারিং অ্যাসাইনমেন্টটি সত্যই চালু হয়েছিল। নোট করুন যে আপনি [a,b]=>ফাংশন পরামিতিগুলির জন্য করতে পারবেন না । প্রথম বন্ধনী আবশ্যক।
আর্নল্ড

দুর্দান্ত, তবে আপনার পূর্ণসংখ্যা বিভাগটি পরিচালনা করা উচিত: [260, 65, 16, 4] => 0.9846153846153847। এটা তোলে দিতে হবে 1
ডেমিয়েন

@ ড্যামিয়েন - আহা ভাল ... আমি জানতাম কেউ খেয়াল করবে। ;-) এটি স্থির
আর্নৌল্ড

[2,1,0,0] সম্পর্কে কী? 0. দেওয়া উচিত আমি মনে করি এটা কেবল পাল্টা উদাহরণ b*2==c+a<=> / বিয়োগ অ্যালগরিদম
ডেমিয়েন

11

ব্র্যাচ্ল্যাগ , 37 33 27 বাইট

b:[E]cL,?:Iz{:+a|:*a|:/a}Lt

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

@ লিকইনুনকে 10 বাইট সংরক্ষণ করা হয়েছে

ব্যাখ্যা

Input = [A:B:C:D]

b:[E]cL,     L = [B:C:D:E]
?:Iz         Create the list [[B:I]:[C:I]:[D:I]:[E:I]]
{            Either…
    :+a          Sum all couples of that list
|            or…
    :*a          Multiply all couples of that list
|            or…
    :/a          Integer divide all couples of that list
}L          The result is L
t           Output is the last element of L

LeakyNun হিসাবে উল্লেখ করেছেন, আমাদের বিয়োগের কেসের প্রয়োজন নেই কারণ Iকোনও পূর্ণসংখ্যার হতে পারে।


4
বাহ, ব্র্যাচিয়েলগ (& প্রোলগ) দুর্দান্ত
মালটিসেন

2
সংযোজন এবং বিয়োগফল একই
লিকি নুন

1
@ লেকিউন সঠিক, ধন্যবাদ!
ফ্যাটালাইজ করুন




5

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

lambda(a,b,c,d):[d+c-b,d*c/b][c-2*b+a>0]

এটি আক্ষরিকভাবে জেএস উত্তরটি পাইথনে প্রবেশ করিয়েছে (ধন্যবাদ @ লিক্যুন!) আমার পূর্বের পদ্ধতিটি হাস্যকরভাবে দীর্ঘ ছিল, তবে এটি এখানে:

পাইথন 2, 169 166 বাইট

দ্বিতীয় এবং তৃতীয় স্তরগুলি হ'ল যথাক্রমে একটি কাঁচা ট্যাব এবং কাঁচা ট্যাব প্লাস একটি স্থান, যা মার্কডাউনের সাথে সত্যিই খারাপভাবে খেলে , তাই ট্যাবগুলিকে 2 স্পেস দ্বারা প্রতিস্থাপন করা হয়েছে।

x=input()
q='%d%s%d'
for i in range(max(x)):
 for o in'+-*/':
  a=1
  for e,n in zip(x,x[1:]):
   try:1/(eval(q%(e,o,i))==n)
   except:a=0
  if a:print eval(q%(x[-1],o,i))

বেশ সহজ; ধ্রুব হতে পারে বলে মনে করে প্রতিটি ধ্রুবক এবং অপারেটর চেষ্টা করে, তারপরে যদি ধ্রুবক / অপারেটর সংমিশ্রণ তালিকার প্রতিটি উপাদানগুলির জন্য কাজ করে ( গুলি try/ exceptএড়ানোর জন্য / জোড় ব্যবহার করে ZeroDivisionError), তবে এটি তালিকার শেষ উপাদানটির জন্য ফলাফল মুদ্রণ করে।

আমি নিশ্চিত এখানে আরও একটি ভাল পদ্ধতি আছে, এটি নিষ্পাপ পদ্ধতি ive


আপনি আরও ভাল জেএস উত্তরটি পাইথনে পোর্ট করতে চান
লিকি নুন

বিরতি [1,0,0,0]যার জন্য আউটপুট হওয়া উচিত0
জোনাথন অ্যালান

3

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

এই স্ক্রিপ্টটি একই চেকটিতে যোগ করার এবং বিয়োগের চেষ্টা করছে, তারপরে এটি বহুবার চেষ্টা করে, যদি এটি ব্যর্থ হয় তবে এটি অবশ্যই বিভাগ হতে হবে be

DECLARE 
@1 INT=6561,
@2 INT=729,
@3 INT=81,
@  INT=9

PRINT IIF(@2-@1=@-@3,@*2-@3,IIF(@1*@2=@3,@*@1,sqrt(@)))

বেহালা


3

সি #, 63 বাইট

int f(int[]x)=>2*x[1]-x[0]==x[2]?x[3]+x[1]-x[0]:x[3]*x[1]/x[0];

প্রথম এবং দ্বিতীয় উপাদানটির মধ্যে পার্থক্য দ্বিতীয় এবং তৃতীয় উপাদানের পার্থক্যের মতো কিনা তা পরীক্ষা করে। যদি তা হয় তবে এটি সংযোজন / বিয়োগ করে, অন্যথায় এটি গুণ / ভাগ করে।


2

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

(a,b,c,d)=>(x=b-a,c-b==x&&d-c==x)?d+x:(x=b/a,b*x|0==c&&c*x|0==d)?d*x|0:-1

পরীক্ষা :

console.log(s.apply(null,[14,24,34,44]), 54);
console.log(s.apply(null,[105,45,-15,-75]), -135);
console.log(s.apply(null,[5,25,125,625]), 3125);
console.log(s.apply(null,[256,64,16,4]), 1);

console.log(s.apply(null,[2,1,0,0]),0);
console.log(s.apply(null,[1,0,0,0]),0);
console.log(s.apply(null,[-325,-82,-21,-6]),-1);

console.log(s.apply(null,[-1,-1,-1,-1]),-1);
console.log(s.apply(null,[0,0,0,0]),0);

তাদের সকলের জন্য কাজ করে।


1
এখানে শিষ্টাচার সম্পর্কে নিশ্চিত ছিল না। আমি জানি অন্য জেএস উত্তর ইতিমধ্যে আছে, তবে এটি প্রান্তের কেসগুলিকে সম্বোধন করে না। খনি লম্বা, তবে সবগুলি পরিচালনা করে। আমি সঠিকভাবে না করে থাকলে আমাকে জানান।
ওজন ll

1
অন্য উত্তর হিসাবে একই ভাষায় উত্তর পোস্ট করার ক্ষেত্রে কোনও ভুল নেই, বিশেষত যদি আপনার উত্তরটি সঠিক হয় এবং অন্যটি না হয়। আমি জানি না যে এটি করার মতো পর্যাপ্ত প্রতিনিধি আপনার কাছে রয়েছে তবে আপনি কোন উত্তরের কেসগুলি অনুপস্থিত তা তাদের জানানোর জন্য আপনি এই উত্তরে মন্তব্য করতেও চাইতে পারেন।
জেমস

আমি আসলে অন্য পোস্ট থেকে প্রান্তের মামলাগুলি নিয়েছি, তবে তারা সমস্যাটি সমাধান করেনি। ; পি
হুথহেলিস্ট্যাট

2

গেমমেকার ল্যাঙ্গুয়েজ, 70 বাইট

a=argument0;If a[3]+a[1]=a[2]*2return a[4]*2-a[3]return a[4]*a[4]/a[3]

2

আর, 68 74

অ্যারে: 68 বাইট

function(x)if(x[2]-x[1]==x[3]-x[2])x[4]+x[2]-x[1]else x[4]%/%(x[1]%/%x[2])

> (function(x)if(x[2]-x[1]==x[3]-x[2])x[4]+x[2]-x[1]else x[4]*x[2]/x[1])(c(14,24,34,44))
[1] 54

4 ইনপুট: 45 বাইট

function(a,b,c,d)if(b-a==c-b)d+b-a else d*b/a

সঙ্গে বোনাস সমাধান log, exp, var, 71 বাইট

if(var(v<-diff(x<-scan(,1)))==0)x[4]+v[1]else x[4]*exp(diff(log(x)))[1]

আপডেট: পূর্ণসংখ্যা বিভাগ


এটি কি অ্যারের পরিবর্তে চারটি ভেরিয়েবল গ্রহণ করছে না? যদি না হয় তবে আপনি b-aবাইট সংরক্ষণ করার জন্য চারপাশের বন্ধনীর হাত থেকে মুক্তি পেতে পারেন (এবং আমি লক্ষ করি যে আপনার উদাহরণ কলগুলি আবার স্পেস যুক্ত করছে)।
জোনাথন অ্যালান

@ জোনাথান অ্যালান আপনি ঠিক বলেছেন এটি কোনও অ্যারে নেয় না। বাইট গণনা আপডেট করা হয়েছে। প্রথম কারণে প্রথম বন্ধনী প্রয়োজন, তবে আমরা পরিবর্তে একটি স্থান যুক্ত করে একটি বাইট সংরক্ষণ করতে পারি। কলগুলিতে অতিরিক্ত স্থানের প্রয়োজন নেই।
ভ্লো

হ্যাঁ, এজন্যই আমি বলেছিলাম আপনি 2 এর চেয়ে 1 বাইট বাঁচাতে পারবেন
জোনাথন অ্যালান

দ্রষ্টব্য, এটি বর্তমানে পূর্ণসংখ্যা বিভাগের প্রয়োজনীয়তা পুরোপুরি পরিচালনা করে না, উদাহরণস্বরূপ 261,65,16,4রিটার্নের 0.9961686পরিবর্তে 1(অবশ্যই প্রশ্নটিতে এটির জন্য একটি পরীক্ষার কেস থাকতে হবে)।
জোনাথন অ্যালান

1
@ জোনাথন অ্যালান ফাংশন (x) যদি (x [2] -x [1] == এক্স [3] -x [2]) x [4] + এক্স [2] -x [1] অন্য এক্স [4]% / % (x [1]% /% x [2])
ভেলো

1

জাভা, 125 123 বাইট

Golfed:

int m(int[]a){int r=(a[1]>a[0])?a[1]/a[0]:a[0]/a[1];return(a[0]-a[1]==a[1]-a[2])?a[3]-a[0]+a[1]:(a[0]<a[1])?a[3]*r:a[3]/r;}

Ungolfed:

int m(int[] a)
{
    int r = (a[1] > a[0]) ? a[1] / a[0] : a[0] / a[1];
    return (a[0] - a[1] == a[1] - a[2]) ? a[3] - a[0] + a[1] : (a[0] < a[1]) ? a[3] * r : a[3] / r;
}

এই কোডটিতে অবশ্যই কিছু সমস্যা রয়েছে কারণ এটি শূন্য এবং এই জাতীয় জিনিস দ্বারা বিভাগ পরিচালনা করে না। ইনপুট অ্যারেতে 4 এর চেয়ে বেশি সংখ্যক (বা কম) হলে এটি অবশ্যই কাজ করবে নাa । যা এটিকে বোকা ছাড়িয়ে যায়, কিন্তু আমি মজা করেছিলাম :)

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


1

টিআই-বেসিক, 37 বাইট

যে কোনও টিআই -৩ / / ৮৪ ক্যালকুলেটরটিতে কাজ করে

Input L1                     gets input into an array
L1(4)²/L1(3                  calculate the fifth number in a geometric series
If not(sum(ΔList(ΔList(L1    if ΔList(ΔList(L1)) yields an array of all zeroes
L1(4)2-L1(3                  calculate the fifth number in an arithmetic series
                             Ans is implicitly returned

1

পাইথন 2, 75 66 65 61 বাইট

lambda(a,b,c,d):d*2-c if d-c==b-a else d*b/a or b and d/(a/b)

আমার আগের 38 বাইট এন্ট্রির চেয়ে অনেক বেশি দীর্ঘ যা ডিভিশন সিরিজটি সঠিকভাবে পূরণ করে না (ঠিক যেমনটি অন্যরা করেনি)।

পরীক্ষার কেস এবং আরও প্রান্তের কেসগুলি আদর্শে রয়েছে

নোট: একটি নেতিবাচক এখানে পূর্ণসংখ্যা বিভাজন ভাজক হিসাবে একই চিহ্ন দিয়ে একটি বাকি থাকার হিসাবে সংজ্ঞায়িত করা হয়, তাই -81/4হবে -21একটি অবশিষ্টাংশ সঙ্গে 3এবং -81/-4হবে 20একটি অবশিষ্টাংশ সঙ্গে -1


1
negativeণাত্মক সংখ্যায় বিভাজিত negativeণাত্মক সংখ্যাটি ইতিবাচক ...-81/-4 != -21
ধ্বংসাত্মক লেবু

পছন্দ করুন আমি এটি সম্পাদনা করেছি এবং পরীক্ষার কেস [325, -82,20, -5] যুক্ত করেছি।
জোনাথন অ্যালান

1

জেলি , 14 বাইট

ṪḤ_ṪµṪ²:ṪµIE$?

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

ṪḤ_ṪµṪ²:ṪµIE$?  Main Link =
             ?  If
          IE$   [condition]
          I     The differences between consecutive elements
           E    Is equal
ṪḤ_Ṫ            [then]
Ṫ               The last element
 Ḥ              Doubled
  _             Minus
   Ṫ            The last element (second-last of original list)
    µṪ²:Ṫµ      [else]
     Ṫ          The last element
      ²         Squared
       :        Divided by
        Ṫ       The last element (second-last of original list)

0

পাইথ, 18 বাইট

?-+vzJEyQ/^E2J-yEJ

ইনপুটটিকে মানগুলির একটি নতুনরেখা-বিভক্ত তালিকা হিসাবে গ্রহণ করে।

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

ব্যাখ্যা:

?                         If
 -                          the following are not equal:
  +vzJE                      the sum of first and third values (and call the third value J)
       yQ                    and the second value * 2;
                            (i.e. if it is not an additive or subtractive formula)
          ^E2             Then: square the fourth value
         /   J              and divide by the third
?                         Else:
               yE           double the fourth value
              -  J          and subtract the third
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.