ক্রু বনাম ট্যাক্সিক্যাব


36

একটি বিন্দু ভ্রমণ মিথ্যা কল্পনা একটি মাইল দূরে অনুভূমিকভাবে এবং বি আপনার বর্তমান অবস্থান থেকে মাইল দূরে উল্লম্বভাবে। বা অন্য কথায়, (0, 0)পয়েন্ট থেকে ভ্রমণ (a, b)। আপনি কতদূর ভ্রমণ শেষ করতে হবে? এটিকে সোজা প্রশ্ন মনে হলেও উত্তরটি আপনি কাকে জিজ্ঞাসা করছেন তার উপর নির্ভর করে। আপনি যদি একটি কাক, এবং আপনি ভ্রমণ করতে পারেন কাক উড়ে হিসাবে , ভ্রমণ দুরুত্ব ঠিক হয় ইউক্লিডিয় দূরত্ব থেকে (a, b)। এই

sqrt(a^2 + b^2)

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

abs(a) + abs(b)

একে ট্যাক্সিক্যাব দূরত্ব বলে । এই চিত্রটি দু'জনের মধ্যে পার্থক্যটি সুন্দরভাবে দেখায়:

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

ভ্রমণের জন্য (6, 6), একটি কাক কেবল সবুজ লাইনে উড়তে পারে এবং এটি একটি দূরত্ব 6 * sqrt(2)বা প্রায় 8.49 দেয়। একটি ট্যাক্সিক্যাব লাল, নীল বা হলুদ পাথ নিতে পারে তবে সেগুলি 12 টিই নেবে।

এটি আমি জিজ্ঞাসা করছি আসল প্রশ্ন বাড়ে। যদি একটি কাক এবং ট্যাক্সিক্যাব উভয়ই বিন্দু থেকে ছেড়ে যায় (0, 0)এবং পয়েন্টে ভ্রমণ করে (a, b), ট্যাক্সিক্যাবের পথ আর কত দীর্ঘ? বা আরও গণিতের জার্গনে,

একটি দ্বিমাত্রিক ভেক্টর দেওয়া, ভেক্টরের আদর্শ 2 এবং ভেক্টরের আদর্শ 1 এর মধ্যে পার্থক্য নির্ধারণ করুন।

এই প্রশ্নের উত্তর দেওয়ার জন্য আপনাকে অবশ্যই সংক্ষিপ্ততম প্রোগ্রাম বা ফাংশন লিখতে হবে। আপনি 'এ' এবং 'বি' কে দুটি পৃথক ইনপুট বা দুটি আইটেম টুপল হিসাবে নিতে বেছে নিতে পারেন। আপনি যে কোনও যুক্তিসঙ্গত ফর্ম্যাটে ইনপুট এবং আউটপুট নিতে পারেন। পার্থক্যটি যদি একটি সংখ্যাসূচক হয় তবে আপনার অবশ্যই কমপক্ষে দুটি দশমিক স্থানে নির্ভুল হওয়া উচিত।

আপনি সর্বদা অনুমান করতে পারেন যে 'ক' এবং 'বি' পূর্ণসংখ্যা হবে এবং সেগুলি উভয়ই 0 হবে না (যদিও এটি সম্ভব যে এর দুটির মধ্যে একটিও শূন্য হবে)

যথারীতি, স্ট্যান্ডার্ড লুফোলগুলি প্রয়োগ হয় এবং আপনার প্রোগ্রামটিকে যতটা সম্ভব সংক্ষিপ্ত করে বাইটে গণ্য করার চেষ্টা করুন।

কোডটি কীভাবে কাজ করে তার একটি ব্যাখ্যা পোস্ট করে যে কোনও উত্তর আমি আপভোট করব এবং বাইটগুলি সংরক্ষণ করতে ব্যবহৃত কোনও দুর্দান্ত কৌশল দেখায়।

আপনার কোড পরীক্ষা করার জন্য এখানে কয়েকটি উদাহরণ রয়েছে:

#input    #output
3, 4      2
-3, 4     2
-3, -4    2
6, 6      3.51
42, 0     0
10, 10    5.86
3, 3      1.76

মজা গল্ফিং আছে! :)


9
আমরা কি জটিল সংখ্যা হিসাবে ইনপুট নিতে পারি?
উরিল

আমি মনে করি পরীক্ষার জন্য 10,10টেস্টকেসটি 5.86 হওয়া দরকার, যেহেতু এটি বেরিয়ে এসেছিল 5.85786...এবং আপনি এর নীচের অংশটিকে গোল করে নিয়েছেন ।
নম্বরমানিয়াক

4
আমি প্রথমে দ্য গা বনাম
দ টেকিকাব

আমরা কি নেতিবাচক ফলাফল দিতে পারি?
অ্যাডম

@ অ্যাডেম নং (ধারণা অনুসারে, আপনি একটি দূরত্বে ফিরে যাচ্ছেন, যা সর্বদা ইতিবাচক)
ডিজেএমসিএমহেম

উত্তর:


108

ট্যাক্সি , 7394 3773 বাইট

Go to Post Office:w 1 l 1 r 1 l.Pickup a passenger going to Tom's Trims.Pickup a passenger going to Tom's Trims.Go to Tom's Trims:n.[a]Pickup a passenger going to The Babelfishery.Go to The Babelfishery:s 1 l 1 r.Pickup a passenger going to Cyclone.Go to Cyclone:n 1 l 1 l 2 r.Pickup a passenger going to Addition Alley.Pickup a passenger going to Multiplication Station.1 is waiting at Starchild Numerology.Go to Starchild Numerology:s 2 l 2 r.Pickup a passenger going to Cyclone.Go to Cyclone:w 1 r 4 l.Pickup a passenger going to Addition Alley.Go to Addition Alley:n 2 r 1 r.Pickup a passenger going to The Underground.Go to Cyclone:n 1 l 1 l.Pickup a passenger going to Multiplication Station.Go to The Underground:n 2 r 2 r.Switch to plan "b" if no one is waiting.Pickup a passenger going to Charboil Grill.Go to Charboil Grill:s 2 r 1 l 1 l 2 r.-1 is waiting at Starchild Numerology.Go to Starchild Numerology:e 2 r.Pickup a passenger going to Multiplication Station.Go to The Underground:w 1 r 2 r 1 r 2 l.[b]Go to Multiplication Station:s 1 l 1 r.Go to Tom's Trims:s 1 r 3 r.Switch to plan "c" if no one is waiting.Switch to plan "a".[c]Go to Multiplication Station:s 1 l 3 l.Pickup a passenger going to Cyclone.Pickup a passenger going to Cyclone.Go to Cyclone:s 1 r 2 l 2 r.Pickup a passenger going to Addition Alley.Pickup a passenger going to Cyclone.Pickup a passenger going to Addition Alley.Go to Addition Alley:n 2 r 1 r.Pickup a passenger going to Multiplication Station.-1 is waiting at Starchild Numerology.Go to Starchild Numerology:n 1 l 1 l 1 l 3 l.Pickup a passenger going to Multiplication Station.Go to Multiplication Station:w 1 r 2 r 1 r 4 l.Pickup a passenger going to Rob's Rest.Go to Rob's Rest:s 1 r 2 l 1 l 1 r 1 r.Go to Cyclone:s 1 l 1 l 1 l 1 r.Pickup a passenger going to Cyclone.[d]Pickup a passenger going to Multiplication Station.Pickup a passenger going to Multiplication Station.Go to Multiplication Station:s 1 l 2 r 4 l.Pickup a passenger going to Addition Alley.Go to Cyclone:s 1 r 2 l 2 r.Switch to plan "e" if no one is waiting.Switch to plan "d".[e]Go to Addition Alley:n 2 r 1 r.Pickup a passenger going to Cyclone.99 is waiting at Starchild Numerology.Go to Starchild Numerology:n 1 l 1 l 1 l 3 l.Pickup a passenger going to The Underground.Go to Cyclone:e 1 l 2 r.Pickup a passenger going to Trunkers.Pickup a passenger going to Sunny Skies Park.Go to Sunny Skies Park:n 1 r.Go to Trunkers:s 1 l.[f]Pickup a passenger going to Cyclone.Go to Cyclone:w 2 r.Pickup a passenger going to Divide and Conquer.Pickup a passenger going to Trunkers.Go to Trunkers:s 1 l.Go to Sunny Skies Park:w 1 r.Pickup a passenger going to Cyclone.Go to Cyclone:n 1 l.Pickup a passenger going to Divide and Conquer.Go to Zoom Zoom:n.Go to Divide and Conquer:w 1 l 2 r 1 r.Pickup a passenger going to Addition Alley.Go to Cyclone:e 1 l 1 l 2 l.Pickup a passenger going to Addition Alley.Go to Addition Alley:n 2 r 1 r.Pickup a passenger going to Divide and Conquer.2 is waiting at Starchild Numerology.Go to Starchild Numerology:n 1 l 1 l 3 l 2 r.Pickup a passenger going to Divide and Conquer.Go to Divide and Conquer:w 1 r 2 r 1 r 2 l 3 l.Pickup a passenger going to Sunny Skies Park.Go to Sunny Skies Park:e 1 l 1 l 2 l 1 l.Go to The Underground:s 1 l 1 r 2 l.Switch to plan "g" if no one is waiting.Pickup a passenger going to The Underground.Go to Trunkers:s 2 r 1 l.Switch to plan "f".[g]Go to Rob's Rest:n 3 l 2 l 1 l 2 r 1 r.Pickup a passenger going to What's The Difference.Go to Sunny Skies Park:s 1 l 1 l.Pickup a passenger going to What's The Difference.Go to What's The Difference:n 1 r 1 l.Pickup a passenger going to The Babelfishery.Go to The Babelfishery:e 3 r.Pickup a passenger going to Post Office.Go to Post Office:n 1 l 1 r.

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

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

ইঞ্জিনিয়ার টোস্টের অব্যক্ত স্কোয়ার রুট অ্যালগরিদম: এটি অনলাইনে চেষ্টা করুন!

বর্ণহীন, ব্যাখ্যা সহ:

[ Crow vs. Taxi ]


[ GET THE NEGATIVE ABSOLUTE VALUES OF BOTH STDINS ]

[Move the stdin values to Tom's Trims b/c:]
[1) Stdin doesn't count as a passenger waiting]
[2) Checking for no one waiting is shorter that keeping tracker of a count for just 2 iterations OR repeating all the code over again]
Go to Post Office:w 1 l 1 r 1 l.
Pickup a passenger going to Tom's Trims.
Pickup a passenger going to Tom's Trims.
Go to Tom's Trims:n.

[a]
[Clone the first waiting value]
[If we've already picked up both, move to the next process]
[Switch to plan "c" if no one is waiting.]
Pickup a passenger going to The Babelfishery.
Go to The Babelfishery:s 1 l 1 r.
Pickup a passenger going to Cyclone.
Go to Cyclone:n 1 l 1 l 2 r.
Pickup a passenger going to Addition Alley.
Pickup a passenger going to Multiplication Station.

[Add one to the value]
1 is waiting at Starchild Numerology.
Go to Starchild Numerology:s 2 l 2 r.
Pickup a passenger going to Cyclone.
Go to Cyclone:w 1 r 4 l.
Pickup a passenger going to Addition Alley.
Go to Addition Alley:n 2 r 1 r.
Pickup a passenger going to The Underground.

[Pick up a clone of that one to feed into Multiplication Station]
Go to Cyclone:n 1 l 1 l.
Pickup a passenger going to Multiplication Station.

[Subtract one and see if that's more than zero]
Go to The Underground:n 2 r 2 r.
Switch to plan "b" if no one is waiting.

[It was more than zero so we make it negative]
[First, though, get rid of the pesky result from The Underground]
Pickup a passenger going to Charboil Grill.
Go to Charboil Grill:s 2 r 1 l 1 l 2 r.
-1 is waiting at Starchild Numerology.
Go to Starchild Numerology:e 2 r.
Pickup a passenger going to Multiplication Station.
Go to The Underground:w 1 r 2 r 1 r 2 l.

[b]
[Make sure it's a negative value and leave it at Multiplication Station]
[Either it was already negative OR we now have -1 as a passenger]
Go to Multiplication Station:s 1 l 1 r.

[Get the next stdin unless we've already gotten them both]
Go to Tom's Trims:s 1 r 3 r.
Switch to plan "c" if no one is waiting.
Switch to plan "a".


[ ADD THE TWO NEGATIVES AND INVERT TO GET THE TAXI DISTANCE]

[c]
[Pickup the two negative absolute values and clone them]
Go to Multiplication Station:s 1 l 3 l.
Pickup a passenger going to Cyclone.
Pickup a passenger going to Cyclone.
Go to Cyclone:s 1 r 2 l 2 r.
Pickup a passenger going to Addition Alley.
Pickup a passenger going to Cyclone.
Pickup a passenger going to Addition Alley.

[Add the two clones values to get the negative Taxi distance]
Go to Addition Alley:n 2 r 1 r.
Pickup a passenger going to Multiplication Station.

[Invert to get the Taxi distance and store it at Rob's Rest]
-1 is waiting at Starchild Numerology.
Go to Starchild Numerology:n 1 l 1 l 1 l 3 l.
Pickup a passenger going to Multiplication Station.
Go to Multiplication Station:w 1 r 2 r 1 r 4 l.
Pickup a passenger going to Rob's Rest.
Go to Rob's Rest:s 1 r 2 l 1 l 1 r 1 r.


[ FIND THE CROW DISTANCE ]
[Uses the Babylonian method: https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method ]

[Square and Sum the cloned values]
Go to Cyclone:s 1 l 1 l 1 l 1 r.
Pickup a passenger going to Cyclone.
[d]
Pickup a passenger going to Multiplication Station.
Pickup a passenger going to Multiplication Station.
Go to Multiplication Station:s 1 l 2 r 4 l.
Pickup a passenger going to Addition Alley.
Go to Cyclone:s 1 r 2 l 2 r.
Switch to plan "e" if no one is waiting.
Switch to plan "d".
[e]
Go to Addition Alley:n 2 r 1 r.
Pickup a passenger going to Cyclone.

[Pickup our cycle counter]
[It's cheaper to do this than to check each iteration's value as equal to the last]
[Taxi can only handle integers up to 2^31-1 so 99 iterations is sufficient.]
99 is waiting at Starchild Numerology.
Go to Starchild Numerology:n 1 l 1 l 1 l 3 l.
Pickup a passenger going to The Underground.

[Duplicate stdin to be stored as S at Trunkers and as x0 at Sunny Skies Park]
[a & b are always integers so Trunkers won't hurt S and it's close with a short name so it's good for golfing]
Go to Cyclone:e 1 l 2 r.
Pickup a passenger going to Trunkers.
Pickup a passenger going to Sunny Skies Park.
Go to Sunny Skies Park:n 1 r.
Go to Trunkers:s 1 l.

[ This is our starting position for square root:           ]
[  • x at Sunny Skies Park                                 ]
[  • S at Trunkers                                         ]
[  • Taxi at Trunkers                                      ]
[  • The iterator as a passenger going to The Underground  ]

[f]

[Duplicate S so we don't lose it]
Pickup a passenger going to Cyclone.
Go to Cyclone:w 2 r.
Pickup a passenger going to Divide and Conquer.
Pickup a passenger going to Trunkers.
Go to Trunkers:s 1 l.

[Diplicate x for division and addition]
Go to Sunny Skies Park:w 1 r.
Pickup a passenger going to Cyclone.
Go to Cyclone:n 1 l.
Pickup a passenger going to Divide and Conquer.

[Gas will be super important in this loop]
Go to Zoom Zoom:n.

[Perform (x + S/x)/2]
[(/2) turns out to be a few bytes shorter than (*.5), mostly due to place names]
Go to Divide and Conquer:w 1 l 2 r 1 r.
Pickup a passenger going to Addition Alley.
Go to Cyclone:e 1 l 1 l 2 l.
Pickup a passenger going to Addition Alley.
Go to Addition Alley:n 2 r 1 r.
Pickup a passenger going to Divide and Conquer.
2 is waiting at Starchild Numerology.
Go to Starchild Numerology:n 1 l 1 l 3 l 2 r.
Pickup a passenger going to Divide and Conquer.
Go to Divide and Conquer:w 1 r 2 r 1 r 2 l 3 l.
Pickup a passenger going to Sunny Skies Park.
Go to Sunny Skies Park:e 1 l 1 l 2 l 1 l.
[Now we have the next iteration of x]

[Check the iterator]
Go to The Underground:s 1 l 1 r 2 l.
Switch to plan "g" if no one is waiting.
Pickup a passenger going to The Underground.

[Reset the loop]
Go to Trunkers:s 2 r 1 l.
Switch to plan "f".


[ ADD THE NEGATIVE SUM TO THE SQUARE ROOT TO GET THE NEGATIVE DIFFERENCE ]

[g]
Go to Rob's Rest:n 3 l 2 l 1 l 2 r 1 r.
Pickup a passenger going to What's The Difference.
Go to Sunny Skies Park:s 1 l 1 l.
Pickup a passenger going to What's The Difference.
Go to What's The Difference:n 1 r 1 l.
Pickup a passenger going to The Babelfishery.
Go to The Babelfishery:e 3 r.
Pickup a passenger going to Post Office.
Go to Post Office:n 1 l 1 r.

1
এটি উন্মাদ ...
গ্রিফন - মনিকা

2
@ গ্রিফন পাগল জিনিসটি আমি 100% নিশ্চিত যে আমি আমার যুক্তিটি পুনর্বিবেচনা করার পরে আমি যখন
স্টিফেন

4
4 ঘন্টা নিজেই +1 প্রাপ্য!
শেগি

4
আমি নিশ্চিত যে পুরো গল্ফার পড়বে এমন গল্ফার সংখ্যা আপনার বাইটের চেয়ে কম হবে: ডি
গ্রাজাদিয়ানু অ্যালেক্স।

1
+1 এর জন্য-1 is waiting at Starchild Numerology.
কীউ গান

10

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

-১ বাইট @dtkaias ধন্যবাদ

(x,y,s=Math.hypot)=>s(x)+s(y)-s(x,y)

কোড স্নিপেট উদাহরণ:

f=

(x,y,s=Math.hypot)=>s(x)+s(y)-s(x,y)

for(i=0;i<7;i++)
  a=[3,-3,-3,6,42,10,3][i],
  b=[4,4,-4,6,0,10,3][i],
  console.log(`f(${a},${b}) = ${f(a,b)}`)


ES6 নেই **
নিল

2
একটি সত্য ES6 সংস্করণ সম্ভবত 41 বাইট হতে হবে: (x,y,s=Math.sqrt)=>s(x*=x)+s(y*=y)-s(x+y)
নীল

পছন্দ করুন এটি হ'ল সংশোধন ইতিহাস ...
নিল

কেন হবে না a=>b=>a+b-Math.hypot(a,b)?
dtkaias

1
ঠিক আছে, কীভাবে (x,y,s=Math.hypot)=>s(x)+s(y)-s(x,y), 36 বাইটের জন্য, ES6 সামঞ্জস্যপূর্ণ
dtkaias

8

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

x->norm(x,1)-norm(x)

লাগে aএবং bএকটি তালিকা হিসাবে।

জুলিয়ার normদ্বিতীয় যুক্তি ডিফল্ট 2 - তাই এটি সমান হবে norm(x, 1) - norm(x, 2)


আমি জুলিয়া ব্যবহার সম্পর্কে ভেবেছিলাম!
enedil

আমি পোস্ট করতে যাচ্ছি এমন ম্যাটল্যাব উত্তরের সাথে খুব মিল।
TheIncredibleZ1

6

জাভা 8, 47 বাইট

Golfed:

(a,b)->(a<0?-a:a)+(b<0?-b:b)-Math.sqrt(a*a+b*b)

এটি যতটা বেসিক হিসাবে এটি হয়: পার্থক্যটি খুঁজতে দুটি গণনা করা মানকে বিয়োগ করুন। এটি Math.abs()প্রতিটি ঘটনাকে একটি করে বাইট সংরক্ষণ করার পরিবর্তে তিনটি যুক্তি ব্যবহার করে। দুর্ভাগ্যক্রমে, অপারেটর অগ্রাধিকারের কারণে প্রথম বন্ধনীগুলির প্রয়োজন।

আউটপুটটি জাভা doubleযা কিছু ধারণ করতে পারে তা হ'ল যা দুটি দশমিকেরও বেশি স্থানে সঠিক এবং প্রশ্নের যথার্থতার প্রয়োজনীয়তা পূরণ করে।

Ungolfed:

public class TheCrowVsTheTaxicab {

  public static void main(String[] args) {
    int[][] inputs = new int[][] { { 3, 4 }, { -3, 4 }, { -3, -4 }, { 6, 6, }, { 42, 0 }, { 10, 10 }, { 3, 3 } };
    double[] outputs = new double[] { 2, 2, 2, 3.51, 0, 5.85, 1.76 };

    for (int i = 0; i < inputs.length; ++i) {
      double actual =
        f((a, b) -> (a < 0 ? -a : a) + (b < 0 ? -b : b) - Math.sqrt(a * a + b * b), inputs[i][0], inputs[i][1]);

      System.out.println("Input:    " + inputs[i][0] + ", " + inputs[i][1]);
      System.out.println("Expected: " + outputs[i]);
      System.out.println("Actual:   " + actual);
      System.out.println();
    }
  }

  private static double f(java.util.function.BiFunction<Integer, Integer, Double> f, int a, int b) {
    return f.apply(a, b);
  }
}

আউটপুট:

Input:    3, 4
Expected: 2.0
Actual:   2.0

Input:    -3, 4
Expected: 2.0
Actual:   2.0

Input:    -3, -4
Expected: 2.0
Actual:   2.0

Input:    6, 6
Expected: 3.51
Actual:   3.5147186257614305

Input:    42, 0
Expected: 0.0
Actual:   0.0

Input:    10, 10
Expected: 5.85
Actual:   5.857864376269049

Input:    3, 3
Expected: 1.76
Actual:   1.7573593128807152

1
আপনি একটি বাইট সংরক্ষণ করতে সংবাহন ব্যবহার করতে পারেন: a->b->
জাকব

4

গণিত, 32 বাইট

N[Tr@Abs[a={##1}]-Sqrt@Tr[a^2]]&

অথবা

গণিত, 31 বাইট

N[Abs@#+Abs@#2-Sqrt[#^2+#2^2]]&

বা @ কোনও গাছের পরামর্শ নেই

গণিত, 26 বাইট

N[Tr@Abs@{##}-Abs[#+I#2]]&

বা @ আলেফালফার পরামর্শ

গণিত, 19 বাইট

N[#~Norm~1-Norm@#]&

চমৎকার কাজ! ইউক্যালিডিয়ান অংশের জন্য জটিল সংখ্যা ব্যবহার করে আপনি কয়েকটি বাইট সংরক্ষণ করতে পারেন:N[Tr@Abs@{##}-Abs[#+I#2]]&
গাছ নয়

2
N[#~Norm~1-Norm@#]&
আলেফাল্ফ

2
@লেফালফ #~Norm~1-N@Norm@#&?
মার্টিন ইন্ডার


4

আর , 30 বাইট

function(v)norm(v)-norm(v,'f')

v1-কলামের ম্যাট্রিক্স হিসাবে গ্রহণ করে । normম্যাট্রিক্সের একটি বিশেষ আদর্শ গণনা করে, ডিফল্ট হিসাবে L1 আদর্শ (ট্যাক্সিক্যাব), এবং fL2 আদর্শ ( 'f'ফ্রোবেনিয়াস / ইউক্যালিডিয়ান)।

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


বাহ, আর এর দুটি বিল্ট-ইন রয়েছে, দুর্দান্ত!
বিএলটি

3

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

-২ বাইটস ভল্টাহ ধন্যবাদ।

মজার সত্য, এই কোডের 11 বাইট কেবল প্রশ্ন থেকে অনুলিপি করা হয়েছিল এবং গল্ফ করেছিল।

lambda a,b:abs(a)+abs(b)-(a*a+b*b)**.5

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



@ মিঃ এক্সকোডার আমি এটি নিয়ে খুব বেশি চিন্তিত হব না, আমি সম্ভবত আউট-গল্ফ হয়ে যাব। : পি
সম্পূর্ণরূপে

ওভালতাহ ওহ, ভাল কথা ধন্যবাদ!
সম্পূর্ণরূপে

5
abs(a+b*1j)এর পরিবর্তে কাজ করা উচিত(a*a+b*b)**.5
স্টিমি রুট

3

জাপট , 11 9 বাইট

-2 বাইটস @ETH প্রডাকশনগুলিতে ধন্যবাদ

Nxa -MhUV

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

ব্যাখ্যা

Nxa -MhUV   // implicit: U and V are input integers, N = [U,V]

N a         // get absolute value of both inputs
 x          // sum those values
    -MhUV   // subtract hypot(U, V) -> sqrt(U^2 + V^2)

ভাল লাগছে, আমি মনে করি এটি ব্যবহারের প্রথম দেখলাম Mh। আমি বিশ্বাস করি আপনি খাটো করতে পারেন Ua +Vaথেকে Nxa(ইনপুট এর সমষ্টি, দৌড়ানো aপ্রতিটি দিকে)
ETHproductions

@ ইথ প্রডাকশনস ওহ ঠিক আছে, ভুলে গিয়েছি যে যোগফলের mapচ্ছিক মানচিত্রের প্যারামিটার ছিল। ধন্যবাদ!
জাস্টিন মেরিনার 21

সুতরাং * "এর জন্য একটি ব্যবহার Mhরয়েছে!: ডি জাপ্টের বেশিরভাগ পদ্ধতিগুলি @ETH প্রপুটিকেশনগুলিকে আর্গুমেন্ট হিসাবে" অটো-ফাংশন "বলে যা নিতে পারে। তাদের সম্পর্কে আরও জানার জন্য এই টিপটি দেখুন And এবং আমি আগামীকাল একটি টিপস লিখব অ্যারে হ্রাস সঙ্গে স্বয়ংক্রিয় ফাংশন ব্যবহার করে কিছু মজার ফলাফল অর্জন (যেমন, rwএকটি অ্যারের সর্ববৃহৎ পূর্ণসংখ্যা ফিরে আসবে)।
রোমশ

@ শেগি ধন্যবাদ, আমি "অটো-ফাংশন" সম্পর্কে প্রাথমিক ধারণা পেয়েছিলাম তবে জ্যাপ টিপসের জন্য একটি পোস্ট আছে তা বুঝতে পারি নি। অবশ্যই পোস্টটি দেখতে হবে।
জাস্টিন মেরিনার

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

3

স্কিম - 58 বাইট।

(define (f a b) (-(+(abs a)(abs b))(sqrt(* a a)(* b b))))

3
পিপিসিজিতে আপনাকে স্বাগতম!
মার্টিন ইন্ডার

আপনি দুটি স্থান সরিয়ে ফেলতে পারেন - একটি defineএবং এর (মধ্যে এবং একটি এর মধ্যে )এবং এর মধ্যে (
ক্লিমিক

Error: sqrt: too many arguments (at most: 1 got: 2) [f, sqrt]
হারুন

(lambda(a b)(...))একটি নামের সাথে এটি বাঁধার পরিবর্তে যথেষ্ট হওয়া উচিত। এছাড়াও, (sqrt(* a a b b))একটি দম্পতি বাইট সংরক্ষণ করতে হবে।
ড্যানিয়েল শেপলার


3

এপিএল (ডায়ালগ) , 14 বাইট

আকারে যুক্তি গ্রহণ করে xJy, যেমন3J4

||-2+/∘|9 11○⊢

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

| মাত্রার ডক

| তর্কটির প্রস্থতা

- ঋণচিহ্ন

2+/ জুটি অনুসারে যোগফল

 এর

| এর আকার

9 11.○⊢ যুক্তিটির আসল এবং কল্পিত অংশগুলি। ডক

গল্ফিংয়ের জন্য বিশেষ কৌশলটি ছিল নো-অফ বাম যুক্তি 2+/সরবরাহ করার জন্য জোড়াযুক্ত হ্রাস ( ) ব্যবহার করা +/, যার ফলে বন্ধন এড়ানো:||-(+/∘|9 11○⊢)


3

জে, 13 বাইট

+/@:|-+/&.:*:

এটি এমন একটি ফাংশন যা স্থানাঙ্কগুলি অ্যারে হিসাবে গ্রহণ করে, যেমন:

   (+/@:|-+/&.:*:) _3 4
2

ব্যাখ্যা:

+/             sum
  @:           of
    |          absolutes
     -         minus
      +/       sum
        &.:    under
           *:  square

ভাল ব্যবহার &.:- আমি :আন্ডার এর সম্পর্কে অবগত ছিল না ।
জোনাহ


2

টিআই-বেসিক (টিআই -৪৪ প্লাস সিই), 10 বাইট

sum(abs(Ans))-√(sum(Ans2

প্রোগ্রাম যা দুটি পূর্ণসংখ্যার একটি তালিকা হিসাবে ইনপুট Ans, উদাহরণস্বরূপ কল {3,4}:prgmCROW( 3,4ইনপুট এবং CROWপ্রোগ্রামের নামের সাথে প্রতিস্থাপন )।

ব্যাখ্যা:

sum(abs(Ans))-√(sum(Ans2
        Ans               # The input list of two integers
    abs(   )              # Absolute value of each item in the list
sum(        )             # Sum of the list
                    Ans   # The input list of two integers
                       2  # Square of each item in the list
                sum(      # Sum of the list
              √(          # Square root of the sum
             -            # Difference of the two values

এটি আমার কাছে 24-26 বাইটের মতো দেখায়, কীভাবে এবং ^ Ans ^ 2 enc এনকোড করা আছে তার উপর নির্ভর করে । 10 টি কীস্ট্রোক , সম্ভবত, তবে এটি একই জিনিস নয়।
রায়

@ রে টিআই-বেসিক একটি টোকেনাইজড ভাষা
pizzapants184

আমি বেশিরভাগ টিআই -৯৯ বেসিকের সাথে পরিচিত, যেখানে এটি হয় না। আপত্তি প্রত্যাহার।
রায়



2

জিএনইউ এপিএল 1.2, 24 বাইট

∇f P
(+/|P)-(+/P*2)*.5
∇

∇f Pএকটি ফাংশন ঘোষণা করে fযা একটি ভেক্টরকে Pদূরত্ব যুক্ত যুক্তি হিসাবে চিহ্নিত করে (যেমন [3, 4])

এপিএল ভেক্টরগুলিতে কাজ করে, তাই ভেক্টরের প্রতিটি উপাদানগুলিতে অপারেটর ( ফাংশন) +/|Pপ্রয়োগ করে এবং তারপরে প্রতিটি উপাদানটির মূল্যায়ন করে (সুতরাং সমস্ত উপাদান যুক্ত করুন)। এটি ট্যাক্সি দূরত্ব দেয়।|abs+

P*2একটি ভেক্টর পাওয়া যায় Pযা প্রতিটি মৌলিক স্কোয়ারের মতো তবে একই is +/P*2এগুলি একসাথে যুক্ত করতে এবং তারপরে *.5স্কোয়ার রুটটি পেতে (অগ্রাধিকারের প্রথম বন্ধনীগুলির সাথে কারণ এপিএল ডান থেকে বামে) । এটি কাককে দূরত্ব দেয়।

অগ্রাধিকারের জন্য ট্যাক্সিের দূরত্বের জন্য অতিরিক্ত জুটি বন্ধন যুক্ত করুন এবং পার্থক্যটি গণনা করুন।

ফাংশন শেষ করতে।


1
আপনি একটি বেনাম ল্যাম্বদা ব্যবহার করতে পারবেন না? {(+/|⍵)-(+/⍵*2)*.5}?
অ্যাডম

@ অ্যাডম আমার এপিএল নিয়ে প্রচুর অভিজ্ঞতা নেই এবং জিএনইউ ইন্টারপ্রেটারের নতুন সংস্করণ (1.7) ম্যাকে সংকলন করবে না, তাই কিছু সীমাবদ্ধতা থাকতে পারে। এটি কাজ করে কিনা তা দেখার জন্য আমি পরে চেষ্টা করব। ভকভগক.
আর্ক 676

জিএনইউ এপিএলের প্রায় সমস্ত বৈশিষ্ট্য ডায়ালগ এপিএলে রয়েছে যা ম্যাকের জন্য নিখরচায় পাওয়া যায় । আপনি এটি অনলাইনেও দেখতে পারেন ।
অ্যাডম

এছাড়াও, আরও এপিএল শিখতে এপিএল চ্যাট রুমে নির্বিঘ্নে যোগ দিন
অ্যাডম

2

জে , 9 8 বাইট

-1 আমার সহকর্মী মার্শালকে ধন্যবাদ।

+&|-|@j.

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

লাগে একজন বাম যুক্তি এবং বি ডান আর্গুমেন্ট হিসাবে।

+ যোগফল

& এর

| মাত্রা

- ঋণচিহ্ন

| বিশালতা

@ এর

j. + বি i

গল্ফিং ট্রিক: একটি জটিল জটিল সংখ্যার সাথে মানগুলি একত্রিত করুন কারণ তির্যকটি এর মতো পাওয়া সহজ, পাশাপাশি তাদের পৃথক রাখছেন কারণ সমষ্টিটি এর মতো পাওয়া সহজ।


2

++ , 59 যোগ করুন 57 বাইট যুক্ত করুন

D,f,@@,|@|+
D,g,@@,d*@d*+
_
$f>G>G
V
$g>?>?
S
-G
$f>x>0
O

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

এটি সমাধান করতে আমার বয়স হয়েছিল। এটি চূড়ান্ত উত্তরটি গোল করে না কারণ এটি যোগ করা ++ এ সম্ভব নয়। প্রোগ্রামটি ইনপুটগুলির সাথে এইভাবে কাজ করে -3এবং -4( ACCএটি সঞ্চয়ের মান)

D,        Define a function
  f,      called f
  @@,     that takes 2 arguments (e.g. -3, -4)
     |    absolute value;   STACK = [-3, 4]
     @    reverse stack;    STACK = [4, -3]
     |    absolute value;   STACK = [4, 3]
     +    sum;              STACK = [7]
          implicitly return the top of the stack

D,        Define a function
  g,      called g
  @@,     that takes 2 arguments (e.g. -3, -4)
     d    duplicate;  STACK = [-3, -4, -4]
     *    multiply;   STACK = [-3, 16]
     @    reverse;    STACK = [16, -3]
     d    duplicate;  STACK = [16, -3, -3]
     *    multiply;   STACK = [16, 9]
     +    sum;        STACK = [25]
          implicitly return the top of the stack

_         store the inputs in the second stack;  ACC = 0;  STACK = [-3, -4]
$f>G>G    apply f with -3 and -4 as arguments;   ACC = 7;  STACK = []
V         store ACC in the stack;                ACC = 7;  STACK = [7]
$g>?>?    apply g with -3 and -4 as arguments;   ACC = 25; STACK = [7]
S         square root the ACC;                   ACC = 5;  STACK = [7]
-G        subtract the stack value from the ACC; ACC = -2; STACK = []
$f>x>0    apply f with ACC and 0 as arguments;   ACC = 2;  STACK = []
O         output ACC as a number

1

পিএইচপি> = 7.1, 54 বাইট

[,$x,$y]=$argv;echo abs($x)+abs($y)-sqrt($x**2+$y**2);

পিএইচপি স্যান্ডবক্স অনলাইন

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

<?=abs($x=$argv[1])+abs($y=$argv[2])-sqrt($x**2+$y**2);

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

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

পুরো প্রোগ্রামের পরিবর্তে একটি ফাংশন সহ

function f($x,$y){return abs($x)+abs($y)-sqrt($x**2+$y**2);}

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


1

এক্সেল ভিবিএ, 34 বাইট

বেনামে VBE অবিলম্বে উইন্ডো ফাংশন যা পরিসীমা থেকে ইনপুট নেয় [A1:B1]এবং ইউক্যালিডিয়ান এবং ট্যাক্সিক্যাব দূরত্বগুলির মধ্যে VBE তাত্ক্ষণিক উইন্ডোতে পার্থক্য আউট করে।

?[ABS(A1)+ABS(B1)-SQRT(A1^2+B1^2)]

1
এটি শীটটিতে সরাসরি একটি ঘরে রাখতে দুটি বাইট সংক্ষিপ্ত:=ABS(A1)+ABS(B1)-SQRT(A1^2+B1^2)
ইঞ্জিনিয়ার টোস্ট

@ ইঞ্জিনিয়ারস্টাস্ট, আমি ভেবেছিলাম যে আমি ইতিমধ্যে আমার গুগল শীট / এক্সেল সমাধানগুলি রেখেছি - এটি উল্লেখ করার জন্য ধন্যবাদ
টেলর স্কট





1

রুবি (2.0.0 - 2.3.0), 57 বাইটস 57

x,y=$*.map(&:to_i);puts x.abs+y.abs-Math.sqrt(x**2+y**2)

এটি ARGV যেমন থেকে ইনপুট গ্রহণ করে

ruby -e 'x,y=$*.map(&:to_i);puts x.abs+y.abs-Math.sqrt(x**2+y**2)' -- -3 4

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

প্রথম কৌশলটি বাইট সংরক্ষণ করে .mapতার পরিবর্তে .eachব্যবহার করছে, তারপরে &:symbolএকটি to_iঅ্যারেতে প্রতিটি আইটেমের উপর চালানো একটি প্রোপ ম্যাপটি পাস করার জন্য স্বরলিপিটি ব্যবহার করে এবং x এবং y এর মান নির্ধারণের জন্য একাধিক অ্যাসাইনমেন্ট ব্যবহার করে।

একটি দীর্ঘ সংস্করণ হবে:

(x, y) = ARGV.map{ |string| string.to_i }

(যেহেতু মানচিত্রটি একটি অ্যারে প্রদান করে, একাধিক অ্যাসাইনমেন্ট সম্ভবত এটি করার উপায়, এটি কোনও অতিরিক্ত পরামিতি ফেলে দেয় তবে আমরা যেভাবেই কেবল দুটি ইনপুট ধরে নিচ্ছি)

তারপরে আমি সমীকরণের সমস্ত শূন্যস্থান সরিয়ে ফেলেছি।

এখানে একটি দীর্ঘ সংস্করণ, 84 বাইট

$*.map!(&:to_i);puts$*.inject(0){|x,y|x+y.abs}-Math.sqrt($*.inject(0){|x,y|x+y**2})

এখানে লক্ষ্যটি ছিল আমার নিজের পুনরাবৃত্তি না করা, যেমন দু'বার লিখতে xবা absদু'বার লিখতে twicex**2 + y**2

এটা কাজ করে না.

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

injectএবং reduceপ্রতিশব্দ হয়, ইনজেক্টের স্বাক্ষর থাকে

inject(initial) {| memo, obj | block }

আমাদের ক্ষেত্রে আমাদের প্রাথমিকটি 0 তে সেট করতে হবে, তারপরে আমাদের সংস্থাপক (যেমন: মেমো = 0) এবং প্রতিটি পুনরাবৃত্তি থেকে অবজেক্টটি রয়েছে।

এই পদ্ধতির নীচের দিকটি হ'ল এটি দুটিরও বেশি ইনপুট নেবে এবং যোগফল বা বর্গক্ষেত্র যোগ করবে, তারপরে অ্যারেতে সমস্ত মান sqrt করবে।

আমি মনে করি - যদিও আমার কাছে পরীক্ষার জন্য রুবি ২.৪.০ নেই - এটিও কাজ করবে, যা by২ বাইটে আসে:

$*.map!(&:to_i);puts$*.sub{|x,y|x+y.abs}-Math.sqrt($*.sum{|x,y|x+y**2})

যোগফল 0-এ ডিফল্ট হয় এবং যতদূর আমি বলতে পারি, ইনজেক্ট / হ্রাস করার মতোই কাজ করে।


তিনি বিল্টিনগুলি ব্যবহার না করার একমাত্র কারণটি ছিল যে সেই ভাষাতে তার ব্যবহারের জন্য কোনও উপলভ্য ছিল না। উত্তম উত্তর, এবং পিপিসিজিতে আপনাকে স্বাগতম! :)
কনর ও'ব্রায়ান

পিপিসিজিতে আপনাকে স্বাগতম! টিআইও পোর্টালে একটি কাজের রুবি ২.৪.০ রয়েছে যা আপনি অনলাইনে জিনিস চেষ্টা করে দেখতে পারেন। এটি এখানে চেষ্টা করে দেখুন
মূল্য কালি করুন

নমনীয় আই / ও প্রয়োজনীয়তার সুযোগ নিয়ে আপনি পার্সিং এবং পটস-ইনিং এড়াতে পারবেন, 35 বাইট ল্যাম্বডায় গল্ফ করে ।
বেনজ 2240

1

গুগল শিটস, 31 বাইট

ওয়ার্কশিট ফাংশন যা পরিসীমা থেকে ইনপুট নেয় [A1:B1]এবং ইউক্লিডিয়ান এবং ট্যাক্সিক্যাব দূরত্বগুলির মধ্যে পার্থক্যকে আউটপুট করে

=ABS(A1)+ABS(B1)-SQRT(A1^2+B1^2

এক্সেল, 32 বাইট

উপরের মতো একই তবে এমএস এক্সেলের জন্য ফর্ম্যাট করা

=ABS(A1)+ABS(B1)-SQRT(A1^2+B1^2)

1

পাইথ , 7 বাইট

a.aQsa0

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


পাইথ ,  25  23 বাইট

এটি প্রাথমিক সমাধান, আমার প্রথমটি তুচ্ছ পাইথ সমাধান নয় এবং আপনি দেখতে পাচ্ছেন যে পাইথের গল্ফ করার সময় আমি কতটা খারাপ হয়েছি :)

K.aswJ.asw-+KJ^+^K2^J2 .5

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


0

পিপ , 15 বাইট

ABa+ABb-RT$+g*g

কমান্ড-লাইন আর্গুমেন্ট থেকে ইনপুট নেয়। এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

সিউডোকোডে, এটি abs(a) + abs(b) - sqrt(fold+(g*g))aএবং bপ্রথম দুটি সেমিডলাইন আরোগুলি হয় এবং gএটি সেমিডলাইন আরগগুলির তালিকা (যেমন আরআরভিভি)। *অপারেটর vectorizes অনেক পিপ অপারেটার মত, তাই $+g*gহিসাবে একই জিনিস a*a + b*b। বাকিগুলি বেশ সোজা।

দুর্ভাগ্যক্রমে, আমি এর সাথে কোনও বাইট সংরক্ষণ করতে পারি না $+ABg, কারণ ভাঁজযুক্ত অপারেটরগুলির নজির এটির মতো কাজ করে না। $+বাইনারি তুলনায় কিছুটা উচ্চতর অগ্রাধিকার হওয়া উচিত -, তবে এই মুহুর্তে এটি $+(ABg-RT$+g*g)ভুল উত্তর প্রদান করে পার্স করে । এরকম ($+ABg)-RT$+g*gসংরক্ষণ কোনো উপরে কম obfuscated সংস্করণ উপর বাইট না।

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