এবি যদি আর এ বি তে থাকে অন্য বি এ?


44

দুটি পূর্ণসংখ্যা, A এবং B দেওয়া, আউটপুট A যদি AB (A বিয়োগ বি) AB (A থেকে B) থাকে, অন্যথায় আউটপুট B

"একটি বিয়োগ বি" হ'ল স্ট্যান্ডার্ড বিয়োগফল।

"এ টু বি" হ'ল এ থেকে শুরু হওয়া এবং বিতে শেষ হওয়া পূর্ণসংখ্যার ব্যাপ্তি, উদাহরণস্বরূপ:

1 to 4: 1, 2, 3, 4
-2 to 5: -2, -1, 0, 1, 2, 3, 4, 5
3 to -1: 3, 2, 1, 0, -1
7 to 7: 7

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।

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

A B Output
1 4 4
-2 5 5
3 -1 -1
7 7 7
90 30 90
90 -30 -30
-90 30 30
-90 -30 -90
-2 -2 -2
-2 -1 -2
-2 0 -2
-2 1 1
-2 2 2
-1 -2 -2
-1 -1 -1
-1 0 -1
-1 1 1
-1 2 2
0 -2 -2
0 -1 -1
0 0 0
0 1 1
0 2 2
1 -2 -2
1 -1 -1
1 0 1
1 1 1
1 2 2
2 -2 -2
2 -1 -1
2 0 2
2 1 2
2 2 2

আসল চ্যাট-মিনি-চ্যালেঞ্জ

উত্তর:


44

পাইথন , 27 বাইট

lambda a,b:[a,b][2*b*b>a*b]

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

একটি গাণিতিক সূত্র। 2*b*b>a*bসমস্যা অবস্থার সমতুল্য অবহেলা কেন a-b in symrange(a,b)?

x in symrange(a,b)সমান যে নোট 0 in symrange(a-x,b-x)। এই প্রয়োগ করা হচ্ছে x=a-bদেয় 0 in symrange(b,2*b-a)। মান 0বিরতি অন্তর্ভুক্ত যদি না তা দুই ইতিবাচক মান বা দুই নেতিবাচক মানের মধ্যে প্রসারিত করা হয়। এটি গাণিতিকভাবে বলা যেতে পারে "" তাদের পণ্যটি b*(2*b-a)ইতিবাচক নয়।

শেষ b*(2*b-a)<=0অবধি, এ নিয়ে আবার লিখুন 2*b*b<=a*b। একটি বাইট আলোকসম্পাতের দ্বারা সংরক্ষিত হয় <=থেকে >এবং মামলা স্যুইচ করা হচ্ছে।



8

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

কোড:

DŸ¹Æå_è

সিপি -1222 এনকোডিং ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা:

D         # Duplicate the input.
 Ÿ        # Inclusive range.
  ¹Æ      # Push the input [a, b] and compute a - b.
    å     # Check if the number exists in the range.
     _    # Boolean negate
      è   # Index at the first input

1
@ ওকএক্স সিএমসি একটি বুলিয়ান চেয়েছিল।
ডেনিস


6

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

a=>b=>[a,b][2*b*b>a*b|0]

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

let f = a=>b=>[a,b][2*b*b>a*b|0]
let tests = [[1,4,4],[-2,5,5],[3,-1,-1],[7,7,7],[90,30,90],[90,-30,-30],[-90,30,30],[-90,-30,-90],[-2,-2,-2],[-2,-1,-2],[-2,0,-2],[-2,1,1],[-2,2,2],[-1,-2,-2],[-1,-1,-1],[-1,0,-1],[-1,1,1],[-1,2,2],[0,-2,-2],[0,-1,-1],[0,0,0],[0,1,1],[0,2,2],[1,-2,-2],[1,-1,-1],[1,0,1],[1,1,1],[1,2,2],[2,-2,-2],[2,-1,-1],[2,0,2],[2,1,2],[2,2,2]]
tests.map(test => `f(${test[0]})(${test[1]}) == ${test[2]}`).forEach(test => console.log(test, eval(test)))


4

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

lambda*s:s[min(s)<=s[1]-s[0]<=max(s)]

হিসাবে আহ্বান f(B, A)


4

পাইথন 2, 55 52 51 বাইট

lambda A,B:[B,A][A-B in range(min(A,B),max(A,B)+1)]

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

টিআইওর পরামর্শ অনুসারে ওপি উল্লিখিত প্রতিটি পরীক্ষার কেস পরিচালনা করে (এটি পোস্ট করার সময়)।


4

জাভাস্ক্রিপ্ট ES6, 40 37 বাইট

a=>b=>a-b<(a<b?a:b)|a-b>(a<b?b:a)?b:a

ব্যাখ্যা:

a=>b=>                                   take a and b as inputs
      a-b<(a<b?a:b)                      if a-b is less than the lowest of a and b
                   |a-b>(a<b?b:a)        or a-b is greater than the largest of a and b
                                 ?b      return b
                                   :a    else return a

আরনাউল্ডকে ধন্যবাদ 3 বাইট সংরক্ষণ করা।

f=a=>b=>a-b<(a<b?a:b)|a-b>(a<b?b:a)?b:a

function t(){
    var tests = [[1,4,4],[-2,5,5],[3,-1,-1],[7,7,7],[90,30,90],[90,-30,-30],[-90,30,30],[-90,-30,-90],[-2,-2,-2],[-2,-1,-2],[-2,0,-2],[-2,1,1],[-2,2,2],[-1,-2,-2],[-1,-1,-1],[-1,0,-1],[-1,1,1],[-1,2,2],[0,-2,-2],[0,-1,-1],[0,0,0],[0,1,1],[0,2,2],[1,-2,-2],[1,-1,-1],[1,0,1],[1,1,1],[1,2,2],[2,-2,-2],[2,-1,-1],[2,0,2],[2,1,2],[2,2,2]];
    for (var test of tests) {
        console.log(`f(${test[0]},${test[1]}) == ${test[2]}`, f(test[0])(test[1])==test[2]);
    }
}

t();



2

আর, 49 30 28 বাইট

pryr::f("if"(2*b*b>a*b,b,a))

আব একটিতে রয়েছে তা নির্ধারণের জন্য @ xnor এর যুক্তি ব্যবহার করে: খ।


নামবিহীন ফাংশনগুলি সাধারণত অনুমোদিত হয়
মিকিটি

আপনি আরও 3 বাইট ব্যবহার করতে হারাতে পারেনpryr::f(match(a-b,a:b,b))
মাইল

এটি ভাগ করার জন্য @ মেল ধন্যবাদ, আমি%% কীভাবে আগে কাজ করে তা জানতাম না; আব যখন থাকে তখন কিন্তু এটি ব্যর্থ হয়: খ। f (-90, -30) = 31
বিএলটি

প্রকৃতপক্ষে. । 'pryr :: চ (ম্যাচ (AB, একটি: বি, 0) + + খ) সংশোধন করা হয়েছে যে (এবং এখনও একটি বাইট সংরক্ষণ
mnel

2

ক্লোজার, 71 41 বাইট

-30 ব্যবহার করে বাইট <=এবং min/ maxপরিবর্তে rangeসে।

#(if(<=(min % %2)(- % %2)(max % %2))% %2)

সেই অনুযায়ী ফেরত প্রেরণ করা (a - b)হচ্ছে কিনা তা পরিসীমাতে রয়েছে কিনা তা পরীক্ষা করে ।ab

(defn eh [a b]
  ; <= accepts any number of argments, and ensures all fall within the range
    (if (<= (min a b) (- a b) (max a b))
      a
      b))

2

পিএইচপি (7.1), 55 বাইট

নতুন অ্যারে ডেস্ট্রাকচারিং সিনট্যাক্স ব্যবহার করে :

[,$a,$b]=$argv;echo in_array($a-$b,range($a,$b))?$a:$b;

-rকমান্ড লাইন আর্গুমেন্ট হিসাবে সংখ্যা সরবরাহ করুন, সাথে চালান ।


2

পাওয়ারশেল , 37 35 32 বাইট

($a,$b=$args)[$a-$b-notin$a..$b]

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

-notinঅপারেটরটি ব্যবহার করে পাওয়ারশেলে সমস্যার আক্ষরিক অনুবাদ । একাধিক অ্যাসাইনমেন্ট এবং এনক্যাপসুলেশন ব্যবহার করে তিনটি বাইট সংরক্ষণ করা হয়েছে। এটি কাজ করে কারণ -এর চেয়ে বেশি অপারেটর অগ্রাধিকার রয়েছে -notinএবং কোডটির( ) অংশটি প্রথমে কার্যকর করা হয় এবং অ্যারে হিসাবে ফিরে আসে @($a,$b)। তবে এটির $a,$bপরিবর্তে আমাদের আউটপুট ফলাফলটি ফ্লিপ / ফ্লপ $b,$aকরতে ব্যবহার -notinকরতে হবে।


1

ব্যাচ, 107 বাইট

@set/aa=%1,r=b=%2,x=a-b
@if %a% gtr %b% set/aa=b,b=%1
@if %a% leq %x% if %x% leq %b% set/ar=%1
@echo %r%



1

> <> , 21 বাইট

@ Xnor এর কৌশলটি ব্যবহার করে । আমরা -v B Aস্ট্যাকটি প্রিপুলেট করতে ব্যবহার করি । ( -v A Bএটি +1 বাইট)।

:01pr:11p::2**r*)1gn;

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

ব্যাখ্যা

                        Input: [B, A] on stack.
:01pr:11p::2**r*)1gn;
:                       Duplicate.           [B, A, A]
 01p                    Push A to [0,1].     [B, A]
    r                   Reverse              [A, B]
     :                  Duplicate.           [A, B, B]
      11p               Push B to [1,1].     [A, B]
         ::             Duplicate x 2.       [A, B, B, B]
           2            Push 2.              [A, B, B, B, 2]
           2**          Compute 2*B*B.       [A, B, 2*B*B]
              r         Reverse.             [2*B*B, B, A]
               *        Compute A*B.         [2*B*B, A*B]
                )       >                    [2*B*B > A*B]
                 1      Push 1.              [2*B*B > A*B, 1]
                  g     If 2*B*B > A*B
                         get B, else get A.  [2*B*B > A*B ? B : A]
                   n    Output as number.
                    ;   Terminate.

1

রুবি , 27 22 বাইট

->a,b{(b*a<2*b*b)?b:a}

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

এখানে উদ্ভাবনী কিছুই। এর পিছনে সরল গণিত:

(A<=A-B<=B or B<=A-B<=A)

হিসাবে লেখা যেতে পারে

(B>=0 and A>=2B) or (B<=0 and A<=2B)

এটি হ'ল: যদি A-2B এর বি হিসাবে একই চিহ্ন থাকে তবে আমরা সীমার মধ্যে থাকি।


1

স্পেসবিএএস - 38 বাইট

1 INPUT a,b: ?IIF(a-b IN [a TO b],a,b)

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


1

হাস্কেল, 21 বাইট

a!b|b*a<2*b*b=b|0<1=a

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

সুপাঠ্য

func :: Int -> Int -> Int
func a b
    | b*a < 2*b*b = b
    | otherwise = a

ব্যাখ্যা

অ্যাব সীমাবদ্ধ কিনা তা পরীক্ষা করতে @ xnor এর সূত্র ব্যবহার করে। এর বাইরে বিশেষ কিছু নেই।


1

হাস্কেল, 58 বাইট

সম্প্রতি আমি আবার তীর প্রেমে পড়েছি। দুর্ভাগ্যক্রমে তাদের আমাদের বাইনারি ফাংশনগুলির পরিবর্তে টিপলসের সাথে কাজ করা প্রয়োজন। এবং অবশ্যই হাস্কেলের কোনও প্রতিসম rangeফাংশন নেই।

import Control.Arrow
u=uncurry
app<<<elem.u(-)&&&(u enumFromTo<<<u min&&&u max)


1

অক্টাভা, 55 বাইটস

@(a,b)(c=b*~[find((a:1-2*(b<a):b)==(a-b)) 0](1))+(a*~c)

এটি সম্ভবত আরও অনুকূলিত করা যেতে পারে। আমি পরে একটি ব্যাখ্যা যোগ করব।


একটি সহজ পদ্ধতির । সেখানে সমস্ত "ক্রেজি স্টাফ" এর জন্য +1 যদিও: পি
স্টিভি গ্রিফিন


1

দ্রুত -38 30 22 বাইট

8 ম্যাট সংরক্ষণ করে 8 ম্যাটকে ধন্যবাদ

print(a...b~=a-b ?a:b)

অনলাইনে আইবিএম সুইফট স্যান্ডবক্সে চেষ্টা করে দেখুন!


বা 21 বাইট:

( @ এক্সনারের সূত্রে ধন্যবাদ ) এবং @ ম্যাটকে ধন্যবাদ 8 টি বাইট সংরক্ষণ করেছে

print(2*b*b>a*b ?a:b)

গল্ফিংয়ের জন্য সুইফ্ট সেরা ভাষা নয় (এটি খুব কঠোর), সুতরাং আপনি যদি অন্য কোনও গল্ফিংয়ের সুযোগ দেখতে পান তবে আমি উত্তরটি পুরোপুরি সম্পাদনা করব।


প্রিন্টের মতো প্রিন্টের ভিতরে কেন টের্নারি রাখবেন না (a ... b ~ = ab? A: b)
ম্যাট

ওহ, হ্যাঁ, ভাল আইডিএ। ধন্যবাদ @ ম্যাট
মিঃ এক্সকোডার

1

জাভা 7, 84 60 58 বাইট

int c(int a,int b){return(a<b?a:b)>a-b|(a<b?b:a)<a-b?b:a;}

জাভা 8, 37 বাইট

a->b->(a<b?a:b)>a-b|(a<b?b:a)<a-b?b:a

ব্যাখ্যা:

int c(int a, int b){          // method with two integer parameters and integer return-type
  return (a<b ? a : b) > a-b  //  if smallest of the input is larger than a-b
       | (a<b ? b : a) < a-b  //    or if the largest of the input is smaller than a-b
    ? b                       //   return b
    :                         //  else
      a                       //   return a
}                             // end of method

পরীক্ষার কোড: এটি এখানে চেষ্টা করে দেখুন।


1

টিআই-বেসিক (টিআই -৪৮ প্লাস সিই), 26 24 23 বাইট

Prompt A,B
A-B≥A and A-B≤B
AAns+Bnot(Ans

টিআই-বেসিক একটি টোকেনাইজড ভাষা; ব্যবহৃত সমস্ত টোকেনগুলি এক-বাইট টোকেন

Prompt আপনাকে দুটি সংখ্যার জন্য অনুরোধ জানাবে।

A-B≥A and A-B≤Bএবিটি এ এবং বি (সমেত) এর মধ্যে রয়েছে কিনা তা পরীক্ষা করে; এটি সত্য হলে একটি 1 এবং মিথ্যা যদি শূন্য হয়, যা এতে সঞ্চিত রয়েছে Ans

যেহেতু আমরা A ফিরিয়ে দিচ্ছি যদি AB A এবং B এর মধ্যে থাকে তবে আমরা A কে আনস দিয়ে গুণ করব, যা আমাদের A এ ফিরে আসার কথা যদি A হয়, এবং অন্যথায় 0 হয়।

এরপরে, আমরা Bnot(Ansএটি যুক্ত করি। যদি উত্তর 1 (সত্যবাদী) হয়, আমরা not(এটি পেয়েছি এবং 0 পাই, সুতরাং আমাদের যোগফলটি A. হয় উত্তর 0 (মিথ্যা) হলে, আমাদের not(এটি 1 পেতে হবে, যা আমরা বি দ্বারা গুণিত এবং বি পেতে 0 যুক্ত করে get

টিআই-বেসিকের সর্বশেষ মূল্যায়ন সুস্পষ্টভাবে ফিরে আসে।

-২ বাইটস স্কট মিলনারকে ধন্যবাদ


আপনি তৃতীয় লাইনটি স্টোর না Yকরে Ansএবং চতুর্থ লাইনে ব্যবহার করে দুটি বাইট সংরক্ষণ করতে পারেন ।
স্কট মিলনার

1

পাইট , 32 বাইট

←Đ←Đ3Ș⇹Đ3ȘĐ4Ș3Ș-3Ș⇹Ř∈Đ3Ș⇹¢*3Ș⇹*+

স্টিডিন থেকে এ এবং বি দুটি পৃথক ইনপুট হিসাবে গ্রহণ করে

ব্যাখ্যা:

এএবিবি -> এবিবিএ -> এব্যাব -> এবিবিবি -> এবিবিবিএ -> এবিবিবিএ -> এবিএবিবি -> এবাবিবিএ -> এবিবিসি -> এবিসিবিএ -> এবিসিএবি -> এবিসি [এ, ..., বি] -> এবিডি -> এবিডিডি - > এডিডিবি -> এডিবিডি -> এডি {বি * (1-ডি)} -> {বি * (1-ডি)} এডি -> {বি * (1-ডি)} + {এ * ডি}

যেখানে: সি = বিএ এবং ডি = সি∈ [এ, ..., বি] (1 সত্য হলে, 0 মিথ্যা হলে)


0

ওহম , 10 বাইট (সিপি 437)

এটি করার জন্য সম্ভবত একটি গল্ফিয়ার উপায় রয়েছে, তবে রুবির কঠোরভাবে টাইপযুক্ত প্রকৃতি এটিকে কঠিন করে তোলে।

G┼┘-îε?┼¿┘

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