ระยะห่างระหว่างจุดสองจุดในปริภูมิมิติ


22

นี่คืออีกวิธีง่าย ๆ :

ความท้าทาย

เมื่อกำหนดสองจุดในพื้นที่ n- มิติให้ส่งออกระยะห่างระหว่างพวกเขาหรือที่เรียกว่าระยะทางแบบยุคลิด

  • พิกัดจะเป็นจำนวนตรรกยะ ข้อ จำกัด เพียงข้อ จำกัด ของภาษาของคุณ
  • ขนาดต่ำสุดคือ 1 สูงสุดเป็นสิ่งที่ภาษาของคุณสามารถจัดการได้
  • คุณอาจสมมติว่าจุดสองจุดนั้นมีขนาดเท่ากันและจะไม่มีอินพุตว่าง
  • ระยะทางจะต้องถูกต้องไปยังตำแหน่งทศนิยมอย่างน้อย 3 ตำแหน่ง หากภาษาของคุณไม่รองรับหมายเลขทศนิยมให้เอาท์พุททั้งจำนวนที่ใกล้ที่สุด

กฎระเบียบ

  • อนุญาตให้ใช้ฟังก์ชันหรือโปรแกรมเต็มรูปแบบตามปกติ
  • อินพุตอาจถูกนำมาจาก STDIN, บรรทัดคำสั่งหรือฟังก์ชันอาร์กิวเมนต์
  • รูปแบบการป้อนข้อมูลขึ้นอยู่กับคุณระบุว่าคุณใช้รูปแบบใดในคำตอบ
  • เอาต์พุตอาจถูกจัดเตรียมโดยการพิมพ์ไปยัง stdout หรือค่าส่งคืน
  • นี่คือชนะการนับไบต์ต่ำที่สุด! ในกรณีที่เสมอกันคำตอบก่อนหน้านี้ชนะ

กรณีทดสอบ

แต่ละจุดถูกแสดงด้วยรายการความยาว n

[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

Happy Coding!


16
ฉันจะระดมสมอง เรามาดูกันว่าปีศาจร้ายตัวไหนออกมา
YoYoYonnY

ฉันถือว่าคุณหมายถึงระยะทางแบบยุคลิดหรือไม่
ข้อบกพร่อง

3
@ flawr ใช่แน่นอน เพียงแค่ต้องการทำให้ชื่อเรื่องง่ายเนื่องจากทุกคนไม่อาจรู้ว่าสิ่งที่เป็นอย่างรวดเร็วก่อน แน่นอนจะเขียนว่าใน Challange สรรพสินค้าใหญ่ :)
Denker

@DenkerAffe มันตกลงหรือไม่ที่จะคืนค่าระยะทางกำลังสองถ้า "ภาษาการเขียนโปรแกรมของคุณไม่รองรับคะแนนลอย"? สิ่งนี้จะทำให้โปรแกรม brainfuck ของฉันมีความแม่นยำมากขึ้น (มิฉะนั้นฉันจะต้องใช้อัลกอริทึมการประมาณบางประเภท)
YoYoYonnY

2
@ DenkerAffe ฉันคิดว่ามันปลอดภัยที่จะบอกว่า brainfuck จะไม่ชนะการแข่งขันกอล์ฟรหัส แต่มันก็เพื่อความสนุกอยู่ดี :)
YoYoYonnY

คำตอบ:


26

MATL , 2 ไบต์

ZP

ลองออนไลน์ !

ZPฟังก์ชั่น (ตรงกับของ MATLAB pdist2) คำนวณจากจำนวนทั้งหมดระยะทางระหว่างสองชุดของจุดโดยใช้ระยะทางยุคลิดโดยค่าเริ่มต้น ชุดของคะแนนแต่ละชุดเป็นเมทริกซ์และแต่ละจุดเป็นแถว ในกรณีนี้มันจะสร้างผลลัพธ์เดียวซึ่งเป็นระยะทางระหว่างจุดสองจุด


7
ไม่มีวิธีนี้เป็นจริง
Martijn

6
ฉันอดทนรอคำตอบแบบไบต์เดียวที่หลีกเลี่ยงไม่ได้;)
Andras Deak

2
เคยได้ยินภาษาเหล่านั้นในขณะที่ประเด็นหลักของภาษาคือการแก้ปัญหากอล์ฟรหัสคลุมเครือ? ฟังดูเหมือนอย่างนี้ ทำให้ฉันสงสัยว่าภาษาลึกลับมีอยู่จริงหรือไม่สำหรับสิ่งนี้
Lazy ถูกกฎหมาย

1
นี่ทำให้เงินอยู่ในที่แน่นอน เยี่ยมมากหลุยส์!
rayryeng - Reinstate Monica

1
ฟังก์ชั่น pdist2 อักษรเปลี่ยนชีวิตของฉันเมื่อฉันพบว่ามัน ...
ลุย

15

MATL, 4.0 3 ไบต์

ขอบคุณสำหรับ -1 โดย @AndrasDeak!

-Zn

อ่านสองเวกเตอร์ (ผ่านการป้อนข้อมูลนัยที่มีการร้องขอโดย-) แล้ว substracts Znเหล่านั้นและคำนวณบรรทัดฐานของความแตกต่างของพวกเขาด้วย

ลองออนไลน์!


10
โปรดเริ่มต้นการปฏิวัติในวันพรุ่งนี้
ข้อบกพร่อง

3
สายเกินไป ... คุณต้องขึ้นเรือยนต์อีกครั้ง: P
Denker

1
บันทึก upvotes ให้ฉัน :-P
Luis Mendo

1
@DenkerAffe ไม่เคยเชื่อถือนักล่าเงินรางวัล
Andras Deak

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
Yikes เพียง 4 ไบต์กับ Jelly ฉันไม่สามารถเห็นได้ว่าทุกคนสามารถทำได้ดีกว่านั้น
Logic Knight

7
@CarpetPython เห็นได้ชัดว่า MATL สามารถ ...
Denker

1
@CarpetPython And Pyth
isaacg

9

Mathematica ขนาด 11 ไบต์

Norm[#-#2]&

อินพุตเป็นสองรายการเอาต์พุตเป็นตัวเลข หากการป้อนข้อมูลถูกต้อง (จำนวนเต็มปันส่วน ฯลฯ ) การส่งออกจะถูกต้องเช่นกัน หากอินพุตมีจำนวนจุดลอยตัวเอาต์พุตจะเป็นแบบลอยเช่นกัน


6
EuclideanDistanceก็จะได้ผลเช่นกัน ... ถ้าชื่อไม่ได้ยี้! ถ้าเพียง แต่มี "MATL for Mathematica" นี่จะเป็นไบต์เดียว =)
2012rcampion

1
ฉันกำลังทำงานกับภาษาที่เน้นวิชาคณิตศาสตร์> :)
Greg Martin

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

CJam, 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นั้นดีมากจริงๆ
Luis Mendo

6

Haskell, 46 ไบต์

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

Haskell, 35 ไบต์ (โดย @nimi)

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

Haskell, 31 ไบต์

แบบนี้สกาล่าตอบอินพุตเป็นลำดับของ tuples

<สับ>

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
uncurry ಠ_ಠเมื่อปรุงอาหารบางครั้งฉันอยากจะมีฟังก์ชั่นunsalt
ข้อบกพร่อง


2
map+ uncurry+ zipไม่ค่อยจ่ายเงินให้ใช้zipWith: d a=sqrt.sum.zipWith(((^2).).(-))a.
nimi

1
คุณไม่สามารถบันทึกอีกสองสามไบต์โดยการลดการใช้กทพ.
jk

@jk ไม่แน่ใจ ... ฉันไม่คิดอย่างนั้นเพราะ(.)จะส่งคืนฟังก์ชันที่ใช้อาร์กิวเมนต์เพียงตัวเดียวเสมอ ... ฉันคิดว่าคุณสามารถทำบางสิ่งเช่น (.). (.) แต่นั่นไม่คุ้มค่าจริงๆ
YoYoYonnY

5

APL, 14 11 ไบต์

.5*⍨(+/-×-)

นี่คือรถไฟฟังก์ชั่น dyadic ที่นำเวกเตอร์ไปทางซ้ายและขวาและส่งกลับค่าปกติแบบยุคลิดของความแตกต่าง

คำอธิบาย:

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

ลองที่นี่

บันทึกแล้ว 3 ไบต์ขอบคุณเดนนิส!


.5*⍨(+/-×-)บันทึกไม่กี่ไบต์
Dennis

3
นี่เป็นครั้งแรกที่ฉันเห็นความคิดเห็นของรหัส APL หรือไม่ สัญลักษณ์นั่น ! ฉันพบชุดอักขระ APL แปลก ๆ เสมอ แต่ฉันไม่เคยรู้เลยว่านิ้วซอมบี้ที่แยกส่วนเป็นเครื่องหมายแสดงความคิดเห็น ;-)
ระดับแม่น้ำเซนต์

@steveverrill ฉัน <s> ความคิดเห็น </s> ใส่นิ้วซอมบี้ลงไปในทุกการส่ง APL ของฉันที่นี่ ¯ \ _ (ツ) _ / ¯
Alex A.

@AlexA การจัดตำแหน่งที่ไม่ดี (เนื่องจากอักขระ APL ที่ไม่ใช่แบบโมโนโพสต์) เกิดขึ้นเพื่อให้มีลักษณะเหมือนมือโดยเฉพาะในเวลานี้ คุณได้แข็งแรงเล่นกอล์ฟมันลงจาก 4 สาย 3 และทำลายผลที่: -S คำตอบของคุณนี้มี 4 สาย แต่ไม่ได้มีมือเหมือนลักษณะ codegolf.stackexchange.com/a/70595/15599อย่างไรก็ตาม ฉันชอบที่คุณยังคงมีตัวละครเดียวยิ้มในรหัสของคุณ
เลเวลริเวอร์เซนต์

4

J, 9 ไบต์

+&.*:/-/>

นี้เป็นฟังก์ชั่นที่ใช้เวลาหนึ่งชุดของพิกัดจากที่อื่น ๆ ( -/>) แล้วดำเนินการผลรวม+ภายใต้ตาราง&.*:

อินพุตควรอยู่ในรูปแบบx y z;a b cที่x y zชุดพิกัดชุดแรกของคุณและa b cชุดอื่น


เนื่องจากปัจจัยการผลิตอยู่เสมอระยะเวลาเดียวกันคุณสามารถวางและระบุการป้อนข้อมูลที่ควรจะได้รับเป็น> x y z,:a b c
Bolce Bussiere

4

Java, 130 117 114 107 105 ไบต์

นี่คือทางออกที่ชัดเจน ปกติฉันไม่เล่นกอล์ฟใน Java แต่ฉันอยากรู้ว่า Java สามารถเอาชนะรุ่น Brainfuck ได้ไหม ดูเหมือนว่าฉันจะทำผลงานได้ไม่ดีนัก .. บางทีอาจใช้ Map / Reduce ใหม่จาก Java 8 เพื่อบันทึกไบต์

ขอบคุณ @flawr (13 ไบต์), @KevinCruijssen (9 ไบต์) และ @DarrelHoffman (3 ไบต์)!

แข็งแรงเล่นกอล์ฟ:

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
นี่เป็นวิธีที่ใหญ่เกินไป ดูข้อเสนอแนะของข้อบกพร่องสำหรับวง เมื่อใช้ Java 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 ไบต์
Addison Crump

1
คุณสามารถลบpublic ส่วนหน้าของวิธีการบันทึกได้ 7 ไบต์และคุณยังสามารถวางไว้x+=s*sด้านนอก for-loop เพื่อที่คุณไม่จำเป็นต้องใช้เครื่องหมายจุลภาค (เช่นfor(int i=-1;++i<a.length;s=a[i]-b[i])x+=s*s;) สำหรับ -1 ไบต์
Kevin Cruijssen

1
@Bruce_Forte อาฉันเห็น .. ในกรณีที่คุณสามารถใช้นี้for(int i=0;i<a.length;x+=s*s)s=a[i]-b[i++];(และผมก็เปลี่ยน-1ไป0สำหรับไบต์เพิ่มเติม)
เควิน Cruijssen

1
@KevinCruijssen True ฉันชอบการเปลี่ยนแปลง0โดยใช้กฎตัวดำเนินการที่สำคัญกว่า! ขอขอบคุณที่ช่วยฉันนับจำนวนไบต์
ბიმო

3

จูเลีย 16 ไบต์

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

นี่คือฟังก์ชั่นที่ยอมรับสองอาร์เรย์และส่งกลับค่าบรรทัดฐานแบบยุคลิดของความแตกต่างเป็นแบบลอย

คุณสามารถตรวจสอบกรณีทดสอบทั้งหมดพร้อมกันทางออนไลน์ ที่นี่


คุณสามารถบันทึกได้ 3 ไบต์โดยใช้โอเปอเรเตอร์เป็นชื่อฟังก์ชัน: ลองใช้งานออนไลน์!
sundar - Reinstate Monica

3

golflua , 43 ตัวอักษร

\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


Lua จะเทียบเท่า

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

AppleScript, 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

สิ่งนี้ใช้อัลกอริทึมเดียวกันกับโปรแกรมอื่น ๆ ส่วนใหญ่ที่นี่

run sample


2

Perl 6, 30 29 26 24 ไบต์

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

(ขอบคุณ @ b2gills สำหรับอีก 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

JavaScript ES7, 45 ES6, 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]))

คาดว่าสองอาร์เรย์ความยาวเท่ากันที่สอดคล้องกับสองเวกเตอร์ N [1, 2, 3, 4], [5, 6, 7, 8]มิติเช่น แก้ไข: บันทึกแล้ว 3 ไบต์ด้วย @ l4m2 (นอกจากนี้ไม่มีใครสังเกตเห็นการพิมพ์ผิดของฉัน?)


โปรดเพิ่มตัวอย่างเกี่ยวกับวิธีการเรียกใช้ฟังก์ชั่นนี้รวมถึงข้อมูลจำเพาะของรูปแบบการป้อนข้อมูลเนื่องจากสิ่งนี้ไม่ชัดเจนในแวบแรก
Denker

@DenkerAffe ขออภัยด้วยการมองข้ามประโยคนั้นฉันเพิ่งใช้รูปแบบเดียวกับตัวอย่างและแน่นอนทุกคนก่อนหน้านี้กับฉันในเวลานั้น
Neil

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

2

Python 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

ใช้งานได้ใน Python3.6 แต่อาจไม่เหมาะที่สุด
SIGSTACKFAULT


1

สกาลา, 67 62 ไบต์

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

ต้องการอินพุตเป็นลำดับ / เวกเตอร์ของ tuples var-arg
ตัวอย่าง:

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


1

Sage, 35 ไบต์

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

ฟังก์ชันนี้ใช้ 2 รายการเป็นอินพุตและส่งกลับนิพจน์สัญลักษณ์ ระยะทางคำนวณโดยการลบเวกเตอร์บนรายการและคำนวณหาปริภูมิแบบยุคลิดของเวกเตอร์ผลลัพธ์

ลองออนไลน์


1

TI-Basic (TI-84 Plus CE), 15 ไบต์

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

TI-Basic เป็นภาษาโทเค็น

แสดงพร้อมต์สำหรับอินพุตเป็นสองรายการและส่งคืนระยะทางยูคลิดระหว่างพวกมัน 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

R, 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 ไบต์ (ด้วยGiuseppe ):

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

นี่เป็นฟังก์ชั่นนิรนามที่รับเวกเตอร์สองตัวเป็นอินพุต


function(x,y)norm(x-y,"F")สั้นกว่ารุ่นที่สองของคุณ
จูเซปเป้

1

Haskell, 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


@Angs ขอบคุณสำหรับการปรับปรุง ฉันพบวิธีที่จะลบอีก 6 ไบต์ (โดยการลบmapและวงเล็บ)
Rodrigo de Azevedo

ฉันขอโทษที่ต้องแทรกแซงอีกครั้ง แต่sqrt$sum$(^2)<$>zipWith(-)ไม่ใช่ฟังก์ชั่นที่ไม่ระบุตัวตนที่ถูกต้อง จริงๆแล้วกฎพื้นฐานนั้นค่อนข้างง่ายมาก: ถ้าคุณสามารถเขียนf = <mycode>และfปฏิบัติงานที่จำเป็นได้หลังจากนั้นก็<mycode>จะเป็นฟังก์ชันที่ไม่ระบุตัวตนที่ถูกต้อง ในกรณีของคุณคุณจำเป็นต้องเพิ่มf p q = <mycode> p qดังนั้น<mycode>มันเป็นของตัวเองไม่ถูกต้อง
Laikoni

1
@Laikoni คุณพูดถูก ฉันแก้ไขคำตอบของฉันและใช้คำแนะนำของ Angs หากคุณพบวิธีที่จะทำให้สั้นลงโปรดแจ้งให้เราทราบ
Rodrigo de Azevedo

0

Python 3, 70 Chars

วนหาการหากำลังสองของความแตกต่างจากนั้นหารากของผลรวม:

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

Mathcad, ไบต์

enter image description here

ใช้โอเปอเรเตอร์เวกเตอร์ในตัว (ค่าสัมบูรณ์) ในการคำนวณขนาดของความแตกต่างระหว่างสองจุด (แสดงเป็นเวกเตอร์)


ขนาดสนามกอล์ฟ Mathcad ถูกพักไว้จนกว่าฉันจะได้รับ (หรือคนอื่นรับ) รอบเพื่อเปิดการสนทนาเกี่ยวกับเมตา อย่างไรก็ตามวิธีที่สั้นที่สุด (สมมติว่าอินพุตของเวกเตอร์จุดไม่ได้มีส่วนร่วมกับคะแนน) คือ 3 "ไบต์" โดยมี 14 ไบต์สำหรับรุ่นที่ใช้งานได้



โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.