এন-ডাইমেনশনাল স্পেসে দুটি পয়েন্টের মধ্যে দূরত্ব


22

এখানে অন্য একটি সহজ:

চ্যালেঞ্জ

একটি এন-ডাইমেনশনাল স্পেসে দুটি পয়েন্ট দেওয়া, তাদের মধ্যে দূরত্ব আউটপুট করুন, একে ইউক্লিডিয়ান দূরত্বও বলে।

  • স্থানাঙ্কগুলি যৌক্তিক সংখ্যা হবে; একমাত্র সীমাবদ্ধতা হ'ল আপনার ভাষার সীমাবদ্ধতা।
  • সর্বনিম্ন মাত্রা 1, সর্বোচ্চ আপনার ভাষা যা পরিচালনা করতে পারে তা হ'ল
  • আপনি ধরে নিতে পারেন যে দুটি পয়েন্ট একই মাত্রার এবং কোনও খালি ইনপুট থাকবে না।
  • দূরত্বটি কমপক্ষে 3 দশমিক জায়গায় সঠিক হতে হবে। আপনার ভাষা যদি ভাসমান পয়েন্ট সংখ্যা সমর্থন করে না, নিকটতম পুরো সংখ্যা আউটপুট।

বিধি

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

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

প্রতিটি বিন্দু দৈর্ঘ্যের একটি তালিকা দ্বারা প্রতিনিধিত্ব করা হয়।

[1], [3] -> 2
[1,1], [1,1] -> 0
[1,2], [3,4] -> 2.82842712475
[1,2,3,4], [5,6,7,8] -> 8
[1.5,2,-5], [-3.45,-13,145] -> 150.829382085
[13.37,2,6,-7], [1.2,3.4,-5.6,7.89] -> 22.5020221314

শুভ কোডিং!


16
ব্রেইনফাককে শট দেব। আসুন দেখে নেওয়া যাক কী ভয়ঙ্কর দৈত্যটি বেরিয়ে আসে।
YoYoYonnY

আমি ধরে নিলাম আপনি ইউক্লিডিয়ান দূরত্ব বোঝাচ্ছেন?
flawr

3
@ ফ্লোর হ্যাঁ, ঠিক কেবল শিরোনামটি সহজ রাখতে চেয়েছিলেন, যেহেতু সবাই প্রথম নজরে এটি কী তা জানতে পারে না। চ্যালেঞ্জটিতে অবশ্যই এটি লিখতে পেরেছিলেন :)
ডেনকার

@ ডেনারএফে "আপনার প্রোগ্রামিং ভাষা ভাসমান পয়েন্টগুলি সমর্থন করে না", তাহলে কি স্কোয়ারটি দূরত্ব ফিরিয়ে দেওয়া ঠিক হবে? এটি আমার ব্রেইনফাক প্রোগ্রামটিকে আরও অনেক নির্ভুল করে তুলবে (অন্যথায় আমাকে কিছুটা অনুমানের অ্যালগরিদম প্রয়োগ করতে হবে)।
YoYoYonnY

2
@ ডেনারএফে আমি মনে করি এটি নিরাপদ বলে মনে করি যে ব্রেইনফাক কখনও কোড গল্ফ জিততে পারে না । তবে এটি যাইহোক যাইহোক মজাদার জন্য :)
YoYoYonnY

উত্তর:


26

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

ZP

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

ZPফাংশন (ম্যাটল্যাব এর সংশ্লিষ্ট pdist2) পয়েন্ট দুটি সেট মধ্যে সকল pairwise দূরত্বের নির্ণয়, ডিফল্ট অনুসারে ইউক্লিডিয় দূরত্ব ব্যবহার করে। পয়েন্টগুলির প্রতিটি সেট একটি ম্যাট্রিক্স এবং প্রতিটি পয়েন্ট একটি সারি। এই ক্ষেত্রে এটি একটি একক ফলাফল তৈরি করে, যা দুটি পয়েন্টের মধ্যে দূরত্ব।



6
আমি ধৈর্য সহকারে অনিবার্য একক বাইট এমএটিএল উত্তরের জন্য অপেক্ষা করছি;)
আন্দ্রেস ডেক

2
সেই ভাষাগুলি কি কখনও শুনেছেন যখন ভাষার মূল বক্তব্যটি অস্পষ্ট কোড গল্ফ সমস্যার সমাধান করা? এটি ঠিক মত শোনাচ্ছে। এর জন্য রহস্যময় ভাষা ঠিক উপস্থিত থাকলে আমাকে অবাক করে দেয়।
আইনী অলস

1
এটি স্পষ্টতই মুখ যেখানে আছে অর্থ রাখে। ভাল কাজ লুইস!
রায়রিং - মনিকা

1
Pdist2 ফাংশনটি আক্ষরিক অর্থে আমার জীবন বদলেছে যখন আমি এটি পেয়েছিলাম ...
লুই

15

এমএটিএল, ৪.০ 3 বাইট

-আন্দ্রাডাসিক দ্বারা -১ এর জন্য ধন্যবাদ!

-Zn

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

অনলাইনে চেষ্টা করে দেখুন!


10
দয়া করে আগামীকালই উত্সাহ দেওয়া শুরু করুন, আমি ইতিমধ্যে আজ মোটরবোট করেছি।
flawr

3
খুব দেরীতে ... আপনার আবার মোটরবোট লাগবে: পি
ডেনকার

1
কিছু upvotes সংরক্ষণ আমার জন্য :-P
লুইস Mendo

1
@ ডেনারএফি কখনও অনুগ্রহ শিকারীর উপর বিশ্বাস রাখে না।
আন্দ্রেস ডেক

1
অনুগ্রহ শিকারী ... আমাদের সেই স্ক্যামের দরকার নেই
লুইস মেন্ডো


10

জেলি , 4 বাইট

_²S½

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

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

_²S½    Main link. Left input: A (list). Right input: B (list).

_       Subtract B from A, element by element.
 ²      Square all differences.
  S     Add all squares.
   ½    Take the square root of the sum.

1
বাবা। জেলির সাথে মাত্র 4 বাইট এর চেয়ে আরও ভালো কীভাবে কেউ করতে পারে তা আমি দেখতে পাচ্ছি না।
লজিক নাইট 13

7
@ কার্পেট পাইথন স্পষ্টতই এমএটিএল করতে পারেন ...
ডেনকার

1
@ কার্পেট পাইথন অ্যান্ড পাইথ
ইসাকাক

9

গণিত, 11 বাইট

Norm[#-#2]&

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


6
EuclideanDistanceখুব সুন্দরভাবে কাজ করবে ... যদি নামটি এত দীর্ঘ না হত! যদি কেবল "ম্যাথমেটিকার জন্য এমএটিএল" থাকত তবে এটি একক বাইট =) হতে পারে
2012campion

1
আমি একটি গোল্ফ গণিত-ভিত্তিক ভাষা>>>
গ্রেগ মার্টিন

6

অক্টাভা, 15 বাইট

@(x,y)norm(x-y)

উদাহরণ:

octave:1> d=@(x,y)norm(x-y);
octave:2> d([13.37,2,6,-7], [1.2,3.4,-5.6,7.89])
ans =  22.502

6

সিজেম, 11 8 বাইট

3 বাইট সঞ্চয় করার জন্য ডেনিসকে ধন্যবাদ।

q~.-:mhz

সমস্ত পরীক্ষার কেস চালান।

ব্যাখ্যা

q~   e# Read and evaluate input.
.-   e# Vectorised difference.
:mh  e# Reduce √(x²+y²) over the list.
z    e# Take abs() to handle 1D input.

কেন :mhকাজ করে তার জন্য এই টিপটি দেখুন ।


সেই কৌশলটি :mhসত্যিই খুব দুর্দান্ত
লুইস মেন্ডো

6

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

d :: Floating c => [c] -> [c] -> c
d a=sqrt.sum.map((^2).uncurry(flip(-))).zip a

হাস্কেল, ৩৩ বাইট (@ নিমিমি দ্বারা)

d :: Float c => [c] -> [c] -> c
d a=sqrt.sum.zipWith(((^2).).(-))a

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

এই স্কেলার উত্তরের মতো , টিপলগুলির ক্রম হিসাবে ইনপুট নেয়

<হ্যাক>

d :: Float c => [(c,c)] -> c
d=sqrt.sum.map$(^2).uncurry(-)

</ হ্যাক>

উদাহরণ:

Prelude> d [1] [3]
2.0
Prelude> d [1,1] [1,1]
0.0
Prelude> d [1,2,3,4] [5,6,7,8]
8.0
Prelude> d [1.5,2,-5] [-3.45,-13,145]
150.82938208452623
Prelude> d [13.37,2,6,-7] [1.2,3.4,-5.6,7.89]
22.50202213135522

13
অস্পষ্ট ಠ_ಠ রান্না করার সময় আমি মাঝে মাঝে একটি অবিচ্ছিন্ন ফাংশন করতে চাই।
flawr

@ ফ্লোয়ার এন.উইকপিডিয়া.আর / উইকি / সাল্ট_জেক্রিপ্টোগ্রাফি ) ?
YoYoYonnY

2
map+ + uncurry+ + zipখুব কমই বন্ধ বহন করেনা, ব্যবহার zipWith: d a=sqrt.sum.zipWith(((^2).).(-))a
নিমিম

1
আপনি এটাকে হ্রাস করে আরও কিছু বাইট সংরক্ষণ করতে পারবেন না?
জে কে।

@jk। নিশ্চিত নয় ... আমি এমনটি মনে করি না, যেহেতু (.)সর্বদা একটি ফাংশন ফিরে আসে যা কেবলমাত্র একটি যুক্তি লাগে ... আমি মনে করি আপনি (।)। (।) এর মতো কিছু করতে পারেন তবে এটি সত্যিকার অর্থে মূল্যহীন নয়।
YoYoYonnY

5

এপিএল, 14 11 বাইট

.5*⍨(+/-×-)

এটি ডায়াডিক ফাংশন ট্রেন যা বাম এবং ডানদিকে ভেক্টরগুলিকে নিয়ে যায় এবং তাদের পার্থক্যের ইউক্লিডিয়ান আদর্শকে ফিরিয়ে দেয়।

ব্যাখ্যা:

       -×-)  ⍝ Squared differences
    (+/      ⍝ Sum them
.5*⍨         ⍝ Take the square root

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

ডেনিসের জন্য 3 টি বাইট সংরক্ষণ করা!


.5*⍨(+/-×-)কয়েক বাইট সাশ্রয়।
ডেনিস

3
এপিএল কোডটি মন্তব্য করা দেখেছি এটি কি প্রথমবার হতে পারে? সেই প্রতীক! আমি সবসময়ই এপিএল চরিত্রটিকে অদ্ভুত বলে মনে করেছি, তবে আমি বুঝতে পারি না যে একটি বিভক্ত জম্বি আঙুলটি মন্তব্য চিহ্নিতকারী। ;-)
স্তরের নদী সেন্ট

@ স্টিভেরিলিল আমি <s> মন্তব্য </ s> আমার এপিএল সম্পর্কিত প্রায় সমস্ত জমাগুলিতে জম্বি আঙ্গুলগুলি রেখেছি। ¯ \ _ (ツ) _ / ¯
অ্যালেক্স এ।

@AlexA। দরিদ্র সারিবদ্ধকরণ (অ-মনোপ্রেসিড এপিএল চরিত্রগুলির কারণে) এ বার এটি একটি বিশেষ হাতের মতো চেহারা দেওয়ার জন্য ঘটেছে। আপনি এটিকে 4 টি লাইন থেকে 3 এ নামিয়ে এনেছেন এবং এর প্রভাবটি নষ্ট করেছেন: -এস আপনার এই উত্তরটিতে 4 টি লাইন রয়েছে তবে এতে হাতের মতো চেহারা কোডগল্ফ.স্ট্যাকেক্সেঞ্জের.com/a/70595/15599 যাইহোক, আমি পছন্দ করি যে আপনার কোডটিতে এখনও একটি একক চরিত্রের হাসি আছে।
স্তর নদী সেন্ট

4

জে, 9 বাইট

+&.*:/-/>

এটি এমন একটি ফাংশন যা অন্য ( -/>) থেকে স্থানাঙ্কের একটি সেট নেয় এবং তারপরে বর্গাকার +অধীনে একটি যোগফল সম্পাদন করে ।&.*:

ইনপুটটি এমন বিন্যাসে হওয়া উচিত x y z;a b cযেখানে x y zআপনার প্রথম সমন্বয় সমন্বিত সেট এবং a b cঅন্যটি।


যেহেতু ইনপুটগুলি সর্বদা একই দৈর্ঘ্য হয়, আপনি ড্রপ করে >নির্দিষ্ট করতে পারেন যে ইনপুট হিসাবে দেওয়া উচিত x y z,:a b c
বোলস বুসিয়ের

4

জাভা, 130 117 114 107 105 বাইট

এটিই সুস্পষ্ট সমাধান। আমি সাধারণত জাভাতে গল্ফ করি না, তবে জাভা ব্রেনফাক সংস্করণটিকে পরাজিত করতে পারে কিনা তা জানতে আগ্রহী ছিলাম। দেখে মনে হচ্ছে না যে আমি তখন একটি ভাল কাজ করেছিলাম .. সম্ভবত কেউ কেউ কিছু বাইট সংরক্ষণ করতে জাভা 8 থেকে নতুন মানচিত্র / হ্রাস ব্যবহার করতে পারে।

@ ফ্লোয়ার (১৩ বাইট), @ কেভিন ক্রুইজসেন (9 বাইট) এবং @ ড্যারেলহফম্যান (3 বাইট) কে ধন্যবাদ!

Golfed:

double d(float[]a,float[]b){float x=0,s;for(int i=0;i<a.length;x+=s*s)s=a[i]-b[i++];return Math.sqrt(x);}

Ungolfed:

double d(float[] a, float[] b) {
  float x=0,s;

  for(int i=0; i<a.length; x+=s*s)
    s = a[i] - b[i++];

  return Math.sqrt(x);
}

2
আপনি অবশ্যই ফাংশনটির নামটি একটি অক্ষরে সংক্ষিপ্ত করতে পারেন। forলুপ করতে সংকুচিত করাdouble x=0,s;for(int i=0;++i<a.length;s=a[i]-b[i],x+=s*s);
flawr

1
এই পথ , oversized। লুপ জন্য flawr এর পরামর্শ দেখুন। জাভা 8 লাম্বদা ব্যবহার করে, এটি হ্রাস করা যাবে: double[]a,b->{double x=0,s;for(int i=0;++i<a.length;s=a[i]-b[i],x+=s*s);return Math.sqrt(x);}মোট 93 বাইটের জন্য।
অ্যাডিসন ক্রম্প 14

1
আপনি public 7 টি বাইট সংরক্ষণ করার জন্য পদ্ধতির সামনের অংশটি সরিয়ে ফেলতে পারেন এবং আপনি x+=s*sবাইরে লুপের বাইরেও রাখতে পারেন যাতে আপনার for(int i=-1;++i<a.length;s=a[i]-b[i])x+=s*s;-1 বাইটের জন্য কমা (অর্থাত্ ) প্রয়োজন হয় না ।
কেভিন ক্রুইজসেন

1
@Bruce_Forte আহ, আমি দেখতে .. যে ক্ষেত্রে আপনি এই ব্যবহার করতে পারে: for(int i=0;i<a.length;x+=s*s)s=a[i]-b[i++];(এবং আমিও পরিবর্তিত -1করতে 0একটি অতিরিক্ত বাইট জন্য)
কেভিন Cruijssen

1
পছন্দ করুন আমি 0অপারেটর অগ্রাধিকার নিয়ম ব্যবহার করে পরিবর্তনটি পছন্দ করি ! আমাকে পুরো অনেকগুলি বাইট সংরক্ষণ করার জন্য ধন্যবাদ
26 21

3

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

N(x,y)=norm(x-y)

এটি এমন একটি ফাংশন যা দুটি অ্যারে গ্রহণ করে এবং তাদের পার্থক্যটির ইউক্লিডিয়ান আদর্শকে একটি ভাসা হিসাবে ফেরত দেয়।

আপনি এখানে অনলাইনে সমস্ত পরীক্ষার কেস যাচাই করতে পারবেন ।


ফাংশনের নাম হিসাবে অপারেটরটি ব্যবহার করে আপনি 3 বাইট সংরক্ষণ করতে পারেন: এটি অনলাইনে চেষ্টা করুন!
সূন্দর - মনিকা 23

3

গল্ফ্লুয়া , ৪৩ টি চর

\d(x,y)s=0~@i,v i(x)s=s+(v-y[i])^2$~M.q(s)$

এটি হিসাবে কল করে কাজ করে

> w(d({1,1},{1,1}))
0
> w(d({1,2},{3,4}))
2.82842712475
> w (d({1,2,3,4},{5,6,7,8}))
8


একটি লুয়া সমতুল্য হবে

function dist(x, y)
    s = 0
    for index,value in ipairs(x)
       s = s + (value - y[index])^2
    end
    return math.sqrt(s)
end


2

রুবি, 52

->p,q{t=0;p.size.times{|i|t+=(p[i]-q[i])**2}
t**0.5}

পরীক্ষা প্রোগ্রামে

f=->p,q{t=0;p.size.times{|i|t+=(p[i]-q[i])**2}
t**0.5}

p f[[1], [3]] # 2
p f[[1,1], [1,1]] # 0
p f[[1,2], [3,4]] # 2.82842712475
p f[[1,2,3,4], [5,6,7,8]] # 8
p f[[1.5,2,-5], [-3.45,-13,145]] # 150.829382085
p f[[13.37,2,6,-7], [1.2,3.4,-5.6,7.89]] # 22.5020221314

2

অ্যাপলস্ক্রিপ্ট, 241 239 বাইট

এটি গল্ফ কোড, তবে আমি ফর্মটিতে মন্তব্য রেখেছি --

on a()    -- Calling for getting input
set v to{1}          -- Arbitrary placeholder
repeat until v's item-1=""       -- Repeat until no input is gathered
set v to v&(display dialog""default answer"")'s text returned   -- Add input to list
end      -- End the repeat
end      -- End the method
set x to a()   -- Set the array inputs
set y to a()
set z to 0     -- Sum placeholder
set r to 2     -- 2 is the first significant array index
repeat(count of items in x)-2     -- Loop through all but first and last of the array
set z to z+(x's item r-y's item r)^2    -- Add the square of the difference
end   -- End the repeat
z^.5  -- Return the square root of the sum

এটি অন্যান্য প্রোগ্রামগুলির বেশিরভাগের মতো একই অ্যালগরিদম ব্যবহার করে।

নমুনা চালান


2

পার্ল 6, 30 29 26 24 বাইট

{sqrt [+] ([Z-] $_)»²}

(আরও 2 বাইট হারিয়ে যাওয়ার জন্য ধন্যবাদ @ বি 2 গিলস)

ব্যবহার

my &f = {sqrt [+] (@^a Z-@^b)»²};

say f([1], [3]); # 2
say f([1,1], [1,1]); # 0
say f([1,2], [3,4]); # 2.82842712474619
say f([1,2,3,4], [5,6,7,8]); # 8
say f([1.5,2,-5], [-3.45,-13,145]); # 150.829382084526
say f([13.37,2,6,-7], [1.2,3.4,-5.6,7.89]); # 22.5020221313552


2

জাভাস্ক্রিপ্ট ES7, 45 ইএস 6, 37 বাইট

a=>Math.hypot(...a.map(([b,c])=>b-c))

সমন্বয়গুলির একটি অ্যারের আশা করে, প্রতিটি ভেক্টর থেকে একটি করে উদাহরণস্বরূপ [[1, 5], [2, 6], [3, 7], [4, 8]]। যদি তা অগ্রহণযোগ্য হয়, তবে 42 বাইটের জন্য:

(a,b)=>Math.hypot(...a.map((e,i)=>e-b[i]))

দুটি এন-ডাইমেনশনাল ভেক্টরগুলির সাথে সমান দৈর্ঘ্যের দুটি অ্যারে প্রত্যাশা করে [1, 2, 3, 4], [5, 6, 7, 8]। সম্পাদনা করুন: @ l4m2 ধন্যবাদ 3 বাইট সংরক্ষণ করা। (এছাড়াও, আমার টাইপগুলি কেউ খেয়াল করেনি?)


ইনপুট ফর্ম্যাটটির একটি স্পেসিফিকেশন সহ এই ফাংশনটি কীভাবে আবেদন করা যায় দয়া করে একটি উদাহরণ যুক্ত করুন, যেহেতু এটি প্রথম নজরে স্পষ্ট নয়।
ডেনকার

@ ডেনারএফ, দুঃখিত, এই ধারাটি উপেক্ষা করে, আমি স্রেফ উদাহরণগুলির মতো একই ফর্ম্যাটটি ব্যবহার করেছি এবং প্রকৃতপক্ষে সেই সময়টিতে আমার আগের সবাই।
নীল

a=>b=>Math.hypot(...a.map((t,i)=>t-b[i]))
l4m2

2

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

একটি সরাসরি এগিয়ে সমাধান। ফাংশনটি সংখ্যার ক্রম হিসাবে 2 পয়েন্ট প্রত্যাশা করে এবং তাদের মধ্যে দূরত্ব ফিরে আসে।

lambda a,b:sum((d-e)**2for d,e in zip(a,b))**.5

উদাহরণ:

>>> f([13.37, 2, 6, -7], [1.2, 3.4, -5.6, 7.89])
22.50202213135522

পাইথন 3.6 এ কাজ করে তবে এটি সর্বোত্তম নাও হতে পারে।
সিগস্ট্যাকফুল্ট


1

স্কালা, 67 62 বাইট

def e(a:(Int,Int)*)=math.sqrt(a map(x=>x._2-x._1)map(x=>x*x)sum)

ভের -আরগ টিউপসগুলির সিকোয়েন্স / ভেক্টর হিসাবে ইনপুটের প্রয়োজন
উদাহরণ:

scala> e((1, 5), (2, 6), (3, 7), (4, 8))
res1: Double = 8.0


1

সেজ, 35 বাইট

lambda a,b,v=vector:norm(v(a)-v(b))

এই ফাংশনটি ইনপুট হিসাবে 2 টি তালিকা নেয় এবং প্রতীকী অভিব্যক্তি প্রদান করে। তালিকাগুলিতে ভেক্টর বিয়োগফল সম্পাদন করে এবং ফলাফল ভেক্টরের ইউক্যালিডিয়ান আদর্শ গণনা করে দূরত্বটি গণনা করা হয়।

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


1

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

Prompt A,B
√(sum((LA-LB)2

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

দুটি তালিকা হিসাবে ইনপুট দেওয়ার জন্য অনুরোধ জানায় এবং ইউক্লিডিয়ান দূরত্ব তাদেরকে দিয়ে দেয় returns Ans

ব্যাখ্যা:

Prompt A,B    # 5 bytes, Prompts for two inputs; if the user inputs lists:
           # they are stored in LA and LB
√(sum((LA-LB)2 # 10 bytes, Euclidian distance between points
           #(square root of (sum of (squares of (differences of coordinates))))

1

আর, 4 বাইট

dist

এটি কোনও ইনপুট ম্যাট্রিক্সের দূরত্বের ম্যাট্রিক্স গণনা করার জন্য একটি অন্তর্নির্মিত ফাংশন। ইউক্লিডিয়ান দূরত্বের ডিফল্ট।

ব্যবহারের উদাহরণ:

> x=matrix(c(1.5,-3.45,2,-13,-5,145),2)
> x
      [,1] [,2] [,3]
[1,]  1.50    2   -5
[2,] -3.45  -13  145
> dist(x)
         1
2 150.8294

যদি আপনি হতাশ বোধ করছেন কারণ এটি একটি অন্তর্নির্মিত, তবে এখানে একটি অন্তর্নির্মিত (বা কমপক্ষে, এটি কম অন্তর্নির্মিত ...) সংস্করণটি 22 বাইট ( জিউসেপের ধন্যবাদ সহ ) এর সংস্করণ :

pryr::f(norm(x-y,"F"))

এটি একটি বেনাম ফাংশন যা দুটি ভেক্টরকে ইনপুট হিসাবে নেয়।


function(x,y)norm(x-y,"F")আপনার দ্বিতীয় সংস্করণ চেয়ে ছোট।
জিউসেপে

1

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

((sqrt.sum.map(^2)).).zipWith(-)

λ> let d = ((sqrt.sum.map(^2)).).zipWith(-)
λ> d [1] [3]
2.0
λ> d [1,1] [1,1]
0.0
λ> d [1,2] [3,4]
2.8284271247461903
λ> d [1..4] [5..8]
8.0
λ> d [1.5,2,-5] [-3.45,-13,145]
150.82938208452623
λ> d [13.37,2,6,-7] [1.2,3.4,-5.6,7.89]
22.50202213135522


@ অ্যাঙ্গস উন্নতির জন্য ধন্যবাদ। কিছুটা ঝুঁকির পরে, আমি আরও 6 টি বাইট (অপসারণ mapএবং বন্ধনীর মাধ্যমে) অপসারণের একটি উপায় খুঁজে পেয়েছি ।
রদ্রিগো দে আজেভেদো

আমি আবার হস্তক্ষেপের জন্য দুঃখিত, তবে sqrt$sum$(^2)<$>zipWith(-)এটি একটি বৈধ বেনামি কার্য নয়। অন্তর্নিহিত নিয়মটি আসলে বেশ সহজ: আপনি যদি লিখতে পারেন f = <mycode>এবং fপরে প্রয়োজনীয় কাজটি সম্পাদন করেন তবে <mycode>এটি একটি বৈধ বেনাম ফাংশন। আপনার ক্ষেত্রে আপনাকে যুক্ত করতে হবে f p q = <mycode> p q, সুতরাং <mycode>এটি নিজের পক্ষে বৈধ নয়।
লাইকনি

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

0

পাইথন 3, 70 অক্ষর

পার্থক্যটির বর্গক্ষেত্র এবং তার পরে যোগফলের মূলটি খুঁজে বের করুন:

a=input()
b=input()
x=sum([(a[i]-b[i])**2 for i in range(len(a))])**.5

2
আরও কিছু ফেলে দিন:sum([(x-y)**2 for x,y in zip(a,b)])**.5
বেনিয়ামিন

0

ম্যাথক্যাড, বাইটস

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

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


আমি মেটা নিয়ে আলোচনা খোলার জন্য গোল না করা পর্যন্ত ম্যাথক্যাড গল্ফের আকারটি (বা অন্য কেউ না পেয়ে) ধরে রাখুন। তবে, সংক্ষিপ্ততম উপায় (ধরে নিই যে পয়েন্ট ভেক্টরগুলির ইনপুট স্কোরকে অবদান রাখে না) 3 "বাইট", কার্যকরী সংস্করণের 14 টি বাইট সহ।



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