สามเหลี่ยมของฉันถูกไหม


47

เมื่อกำหนดa, b, cความยาวของสามเหลี่ยมทั้งสามด้านให้บอกว่าสามเหลี่ยมนั้นเป็นมุมฉาก (เช่นมีมุมหนึ่งเท่ากับ 90 องศา) หรือไม่

อินพุต

ค่าจำนวนเต็มบวกสามค่าในลำดับใดก็ได้

เอาท์พุต

อย่างใดอย่างหนึ่งโดยเฉพาะการส่งออกที่แท้จริง ( true, 1, yes, ... ) หรือการส่งออกเฉพาะเท็จ ( false, 0, no, ... )

ตัวอย่าง

5, 3, 4        --> yes
3, 5, 4        --> yes
12, 37, 35     --> yes
21, 38, 50     --> no
210, 308, 250  --> no

กฎระเบียบ

  • อินพุตและเอาต์พุตจะได้รับในรูปแบบที่สะดวกใด
  • ในการส่งของคุณโปรดระบุค่าจริงและค่าเท็จ
  • ไม่จำเป็นต้องจัดการค่าลบหรือขอบที่ไม่ถูกต้องสามเท่า
  • ยอมรับได้ทั้งโปรแกรมหรือฟังก์ชั่น หากฟังก์ชั่นคุณสามารถส่งคืนผลลัพธ์มากกว่าการพิมพ์
  • หากเป็นไปได้โปรดรวมลิงค์ไปยังสภาพแวดล้อมการทดสอบออนไลน์เพื่อให้ผู้อื่นสามารถลองใช้รหัสของคุณได้!
  • ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
  • นี่คือเพื่อให้ใช้กฎการเล่นกอล์ฟตามปกติทั้งหมดและรหัสที่สั้นที่สุด (เป็นไบต์) ชนะ

1
เราต้องจัดการกับค่าลบหรือค่าขอบสามที่ไม่ถูกต้องหรือไม่?
user202729

2
ที่เกี่ยวข้องมาก ฉันจะปล่อยให้มันขึ้นอยู่กับส่วนที่เหลือของชุมชนเพื่อตัดสินใจว่ามันซ้ำ
Digital Trauma

2
ฉันคิดว่าการใช้พิกัดแทนที่จะเปลี่ยนความยาวเป็นสิ่งที่ท้าทายอย่างมาก
Luis Mendo

8
มีรูปสามเหลี่ยมที่มีความยาวไม่เป็น21, 38, 5เพราะ21 + 5 <38 นี่เป็นกรณีพยาธิวิทยาโดยเจตนาที่เราต้องจัดการหรือไม่?
เควิน

1
@ เควินไม่คุณไม่ได้จัดการกรณีนี้ User202729 ได้ถามคำถามนี้ :)
mdahmoune

คำตอบ:


37

เยลลี่ 5 ไบต์

²µSHe

ลองออนไลน์!

ข้อมูลทางเทคนิค: นับจำนวนไบต์ใน Jelly Codepage

คำอธิบาย:

²µSHe  Main link.
²      Square each number.
 µ     With the new list,
  S    calculate its sum,
   H   and halve it.
    e  Check if the result exists in the new list (squared input)

ปัญหาเทียบเท่ากับการได้รับสามตัวเลขa, b, cและถามว่ามีการเปลี่ยนแปลงเช่นนั้นa² + b² = c²หรือไม่ นี่เท่ากับว่า(a² + b² + c²) ÷ 2เป็นหนึ่งในa², b² or c²นั้นหรือไม่ดังนั้นโปรแกรมจะตรวจสอบดูว่า


ดี ... ฉันเจลลี่
Félix Gagnon-Grenier

1
เพียงบันทึกทางเทคนิค: สัญลักษณ์²และµค่าใช้จ่ายสองไบต์ใน UTF-8 ดังนั้นรหัสของคุณมีจริง 7 ไบต์ไม่ใช่ 5
Charlie

2
@ Charlie ตอบแก้ไขเพื่อความกระจ่าง
user202729

20

Python 2 , 37 ไบต์

a,b,c=sorted(input())
1/(a*a+b*b-c*c)

ลองออนไลน์!

-2 ขอบคุณที่FlipTack
-1 ขอบคุณที่เครก Gidney

เอาต์พุตผ่านโค้ดทางออก ( 0= false, 1= true)


Bah มาด้วยคำตอบที่แน่นอนเหมือนกัน คุณสามารถปรับเปลี่ยนชุดการทดสอบเพื่ออนุญาตจำนวนกรณีทดสอบใด ๆ : ดูที่นี่
mbomb007

@ mbomb007 exec(code)อืมทำไมexec (code)แทนexec code? : D ;-p
Erik the Outgolfer

ฮ่าฮ่าคำตอบนี้มี upvote ของ xnor ที่สั้นกว่าสองเท่าได้อย่างไร บางทีคนอาจจะชอบความเรียบง่ายที่แสนหวานของมัน
FlipTack

1
@FlipTack ¯_ (ツ) _ / ¯ (เช่น xnor ไม่ได้อยู่ใน Python 2)
Erik the Outgolfer

@EriktheOutgolfer เพราะส่วนที่ไม่ได้เป็นส่วนที่ต้องตีกอล์ฟ ฉันทำมันดังนั้นมันจึงใช้ได้ทั้ง Python 2 หรือ 3
mbomb007

17

Java 8, 44 ไบต์

(a,b,c)->(a*=a)+(b*=b)==(c*=c)|a+c==b|b+c==a

คำอธิบาย:

ลองที่นี่

(a,b,c)->                // Method with three integer parameters and boolean return-type
  (a*=a)+(b*=b)==(c*=c)  //  Return if `a*a + b*b == c*c`
  |a+c==b                //  or `a*a + c*c == b*b`
  |b+c==a                //  or `b*b + c*c == a*a`
                         // End of method (implicit / single-line return-statement)

มันทำงานได้โดยไม่ต้องวงเล็บใน(c*=c)? *=อาจมี precidence มากกว่า==และคุณสามารถบันทึกไบต์ที่สอง
corsiKa

@corsiKa ฉันกลัวว่ามันเป็นวิธีอื่น มีความสำคัญมากกว่า== , , และการมอบหมายงานที่คล้ายกันจริงมีความสำคัญต่ำสุดในผู้ประกอบการ Java *==+=*=
Kevin Cruijssen

ไม่สามารถหาอะไรที่สั้นกว่านี้ ... ฉันพยายามที่จะทำให้ตัวแปรเปลี่ยนค่าสูงสุดที่กำหนดให้a(เช่น) โดยไม่ประสบความสำเร็จ เอาล่ะฉันทำได้ แต่มีตัวละคร 65 ตัว ...
Olivier Grégoire

12

JavaScript (ES6), 43 41 40 ไบต์

บันทึก 1 ไบต์และแก้ไขข้อผิดพลาดด้วย @Neil

รับอินพุตเป็นอาร์เรย์จำนวนเต็ม 3 ตัว ผลตอบแทนtrueสำหรับมุมฉากและfalseอื่น ๆ

a=>a.some(n=>Math.hypot(...a,...a)==n*2)


รุ่นดั้งเดิม 44 ไบต์

รับอินพุตเป็น 3 จำนวนเต็ม ผลตอบแทน1สำหรับมุมฉากและ0อื่น ๆ

(a,b,c)=>(a*=a)+(b*=b)==(c*=c)|a+c==b|b+c==a

กรณีทดสอบ


ดูเหมือนว่าเราจะได้คำตอบที่เหมือนกัน (ยกเว้น=>และและ->ความแตกต่างระหว่าง JavaScript และ Java 8) ;) +1 ที่เห็นได้ชัดจากฉัน
Kevin Cruijssen

>>1[1, 1, 1]ไม่ปลอดภัยนี้ส่งกลับจริงสำหรับ
Neil

2
แล้วไงMath.hypot(...a,...a)==n*2ล่ะ
Neil

@Neil แก้ไขดีมาก :)
Arnauld

2
@Neil ควรมี~=โอเปอเรเตอร์สำหรับ "rougly equal";)
JollyJoker


7

รูปสามเหลี่ยมขนาด 57 ไบต์

ฉันยังไม่เคยเห็นภาษานี้เลยและมันก็เหมาะสมที่จะลองทำ มันต้องใช้เวลาสักหน่อย ... เพราะฉันต้องมุ่งหน้าไปรอบ ๆ ก่อนและฉันเชื่อว่าสิ่งนี้จะสามารถเล่นกอล์ฟได้อีก

,$\:$:*/%*$"`=P:pp.0"*>/>-`:S!>/U+<U"g+..>p`S:U/U"p`!g<>/

ลองออนไลน์!

นี่ขยายเป็นสามเหลี่ยมต่อไปนี้

          ,
         $ \
        : $ :
       * / % *
      $ " ` = P
     : p p . 0 "
    * > / > - ` :
   S ! > / U + < U
  " g + . . > p ` S
 : U / U " p ` ! g <
> /

เส้นทางค่อนข้างซับซ้อน แต่ฉันจะพยายามอธิบายสิ่งที่ฉันได้ทำไป ฉันจะข้ามตัวชี้ทิศทาง รหัสส่วนใหญ่เป็นการจัดการกองซ้อน

  • $:* สแควร์อินพุตแรก
  • $:* สี่เหลี่ยมอินพุตที่สอง
  • S":Ug! ทดสอบว่าค่าที่สองมากกว่าค่าแรกหรือไม่
    • p"แลกเปลี่ยนจริงกับครั้งแรก
    • false pไม่ทำอะไรเลย
  • $:* สี่เหลี่ยมอินพุตที่สาม
  • P":USg! ทดสอบว่าค่าที่สามนั้นมากกว่าค่าที่ยิ่งใหญ่ที่สุดของหน้าที่แล้วหรือไม่
    • true p+U-รวมสแต็กปัจจุบันและนำค่าที่สามที่เก็บไว้ออกไป
    • false p"U+- sum น้อยที่สุดและเก็บไว้ที่สามและลบจากมากที่สุด
  • 0=% ทดสอบความเท่าเทียมกันเป็นศูนย์และผลลัพธ์

6

Haskell ( 33 32 31 ไบต์)

(\x->(sum x)/2`elem`x).map(^2)

รุ่นเดิม:

(\x->2*maximum x==sum x).map(^2)

ฟังก์ชั่นไม่ระบุชื่อ รับรายการในรูปแบบ [a, b, c] เอาต์พุตจริงหรือเท็จ

รุ่นแรกที่ตรวจสอบว่าผลรวมของช่องสี่เหลี่ยมเป็นสองเท่าของสี่เหลี่ยมจัตุรัสสูงสุดหรือไม่

ประการที่สองรุ่นที่ดีขึ้นเล็กน้อยจะตรวจสอบว่าครึ่งหนึ่งของผลรวมของสี่เหลี่ยมเป็นองค์ประกอบในรายการของสี่เหลี่ยม

แก้ไข: นับบรรทัดใหม่โดยไม่ได้ตั้งใจขอบคุณ H.PWiz


1
ยินดีต้อนรับสู่เว็บไซต์! คำตอบนี้มีขนาดเพียง 32 ไบต์คุณอาจนับ newline เพิ่มเติมหรือไม่
H.PWiz

3
คุณสามารถใช้ฟังก์ชัน Monad เพื่อบันทึกไบต์เพิ่มเติมได้ที่นี่
H.PWiz

นอกจากนี้วงเล็บที่อยู่รอบ ๆsumก็สามารถถูกโยนทิ้งไปได้ ทางออกที่ดี!
ภูมิใจ haskeller

6

Perl 6 , 24 ไบต์

{(*²+*²==*²)(|.sort)}

ลองออนไลน์!

*²+*²==*²เป็นฟังก์ชั่นนิรนามที่คืนค่าจริงถ้าผลรวมของกำลังสองของอาร์กิวเมนต์สองตัวแรกมีค่าเท่ากับจตุรัสของอาร์กิวเมนต์ที่สาม |เราผ่านรายการการป้อนข้อมูลที่เรียงลำดับฟังก์ชั่นนี้แฟบลงในรายการอาร์กิวเมนต์กับ


6

R , 31 26 30ไบต์

cat(sum(a<-scan()^2)/max(a)==2)

ฉันไม่ชอบอันนี้มาก แต่สั้นกว่า ผลรวมสี่เหลี่ยมและหารด้วยสี่เหลี่ยมที่ใหญ่ที่สุด ความจริงถ้า 2

รุ่นก่อนหน้า (แก้ไขด้วย cat และด้วยปลาย @ Guiseppe)

cat(!sort(scan())^2%*%c(1,1,-1))

ทำผลรวมของอินพุตที่เรียงลำดับด้วยไอเท็มล่าสุดเมื่อตะกี้และส่งคืน!ไม่ใช่

ลองออนไลน์!


สำหรับรุ่นก่อนหน้าของคุณ!sort(scan())^2%*%c(1,1,-1)คือ 27 ไบต์ catแต่ฉันคิดว่าคุณยังคงต้อง
Giuseppe

ไชโย @Guiseppe ลืมเกี่ยวกับแมว กฎของ REPL รบกวนฉัน แต่มันคือสิ่งที่พวกเขาเป็น
MickyT

@iuseppe นอกจากนี้ยังมีการบิดดีกับการคูณเมทริกซ์ ฉันจะไม่เกิดขึ้นกับสิ่งนั้น
MickyT

6

Brain-Flak , 68 ไบต์

({({({})({}[()])}{}<>)<>})<>({<(({}){}<>[({})])>(){[()](<{}>)}{}<>})

ลองออนไลน์!

ใช้การสังเกตในคำตอบของ user202729

 {                      }      for each input number
   {({})({}[()])}{}            compute the square
  (                <>)<>       push onto second stack
(                        )     push sum of squares onto first stack
                          <>   move to second stack

 {                                    }    for each square
   (({}){}<>[({})])                        compute 2 * this square - sum of squares
  <                >(){[()](<{}>)}{}<>     evaluate loop iteration as 1 iff equal
(                                      )   push 1 if any squares matched, 0 otherwise

5

C (gcc) , 49 ไบต์

n(a,b,c){return(a*=a)+(b*=b)-(c*=c)&a+c-b&b+c-a;}

ลองออนไลน์!

ปรับปรุงเทคนิคของKevin Cruijssens

ส่งคืน 0 สำหรับรูปสามเหลี่ยมที่ถูกต้องและค่าที่ไม่ใช่ศูนย์


3
ยินดีต้อนรับสู่ PPCG!
caird coinheringaahing

มันจะใช้งานได้ตลอดเวลาถ้าคุณใช้การทำงานระดับบิต?
l4m2


4

Python 2 , 43 ไบต์

lambda a,b,c:(a*a+b*b+c*c)/2in(a*a,b*b,c*c)

ลองออนไลน์!

Python 2 , 79 70 68 62 ไบต์

lambda*l:any(A*A+B*B==C*C for A,B,C in zip(l,l[1:]+l,l[2:]+l))

ลองออนไลน์!


ความท้าทายถูกอัปเดตเพื่อ จำกัด อินพุตให้เป็นจำนวนเต็ม
Martin Ender


14
A*Aสั้นกว่า ...
Socratic Phoenix


@mdahmoune 67 ไบต์ ; พลิกความหมายของค่าความจริงและใช้แทน- ==
Jonathan Frech

4

C,  68  54 ไบต์

โดยใช้วิธีการแก้ปัญหาของ user202729

f(a,b,c){return!((a*=a)+(b*=b)-(c*=c)&&a-b+c&&a-b-c);}

ขอบคุณ @Christoph สำหรับการเล่นกอล์ฟ 14 ไบต์!

ลองออนไลน์!

C, 85 ไบต์

#define C(a,b,c)if(a*a+b*b==c*c)return 1;
f(a,b,c){C(a,b,c)C(b,c,a)C(c,a,b)return 0;}

ลองออนไลน์!


เอาต์พุต1สำหรับพารามิเตอร์1, 1, 1ที่ผิด ...
Neil

@Neil ตอนนี้ได้รับการแก้ไขแล้ว
Steadybox

คำถามได้รับการอัปเดตเพื่อใช้ ints อาจบันทึกบางไบต์
corsiKa

f(a,b,c){a=!((a*=a)+(b*=b)-(c*=c)&&a-b+c&&a-b-c);}
Christoph



4

Triangularity ,  49 วันที่ 31 ไบต์

...)...
..IEO..
.M)2s^.
}Re+=..

ลองออนไลน์!

คำอธิบาย

ทุกโปรแกรมเป็นรูปสามเหลี่ยมต้องมีช่องว่างรูปสามเหลี่ยม (ยกเว้นคำพิพากษา) นั่นคือการนับบรรทัดที่ฉันจากด้านล่างของโปรแกรมจะต้องเต็มไปด้วยi - 1จุด ( .) ในแต่ละด้าน เพื่อให้สมมาตรและสมมาตรสวยงามแต่ละบรรทัดจะต้องประกอบด้วย2L - 1ตัวอักษรโดยที่Lคือจำนวนบรรทัดในโปรแกรม การลบอักขระที่ใช้สำหรับการเติมที่จำเป็นนี่คือการทำงานของรหัส:

)IEOM)2s^}Re+=     Full program. Input: STDIN, Output: STDOUT, either 1 or 0.
)                  Pushes a zero onto the stack.
 IE                Evaluates the input at that index.
   O               Sorts the ToS (Top of the Stack).
    M)2s^}         Runs the block )2s^ on a separate stack, thus squaring each.
          R        Reverse.
           e       Dump the contents separately onto the stack.
            +      Add the top two items.
             =     Check if their sum is equal to the other entry on the stack (c^2).

ตรวจสอบว่าสามเหลี่ยมมุมฉากเป็นรูปสามเหลี่ยมหรือไม่ ...


3

PowerShellขนาด 39 ไบต์

$a,$b,$c=$args|sort;$a*$a+$b*$b-eq$c*$c

ลองออนไลน์!

เรียงลำดับอินพุตจัดเก็บลงใน$a,$b,$cตัวแปร a*a + b*b = c*cแล้วใช้ทฤษฎีบทพีทาโกรัสเพื่อตรวจสอบว่า เอาท์พุทเป็นทั้งบูลีนหรือTrueFalse


3

JavaScript 34 ไบต์ (ไม่มี D =)

D=(d,[a,b,c]=d.sort())=>a*a+b*b==c*c

console.log(D([5, 3, 4       ])== true)
console.log(D([3, 5, 4       ])== true)
console.log(D([12, 37, 35    ])== true)
console.log(D([21, 38, 5     ])== false)
console.log(D([210, 308, 15  ])== false)


ฉันมีคำตอบที่คล้ายกันที่ 34: a=>a.sort()[0]**2+a[1]**2==a[2]**2ใน ES6 ดังนั้น props ถึงคุณ @DanielIndie
WallyWest

1
แต่น่าเสียดายที่sort()ใช้เพื่อ lexicographical [10,6,8]เมื่อไม่มีการเรียกกลับมีให้ทำให้รหัสนี้ล้มเหลวเช่นสำหรับ
Arnauld

3

RProgN 2 , 10 ไบต์

§²2^r]‘\+e

อธิบาย

§²2^r]‘\+e
§           # Sort the input list
 ²2^r       # Square each element in the list.
     ]      # Duplicate it on the reg stack.
      ‘     # Pop the top (largest) element off it
       \+   # Swap it, sum the rest of the list.
         e  # Are they equal?

ลองออนไลน์!


ทำซ้ำรายการทำไม
mdahmoune

@mdahmoune RProgN2 ไม่ได้เก็บรายการดั้งเดิมไว้ในสแต็กเมื่อเปิดใช้งานองค์ประกอบ แต่สแต็กเป็นข้อมูลอ้างอิงดังนั้นเพื่อให้สแต็กทำส่วนที่รวมของมันคุณต้องทำซ้ำก่อน
ATaco

Thanx upvote;)
mdahmoune

3

แร็กเก็ต , 64 60 ไบต์

(λ(a b c)(=(+(* a a)(* b b)(* c c))(*(expt(max a b c)2)2)))

ลองออนไลน์!

มันทำงานอย่างไร

ทดสอบว่าa^2 + b^2 + c^2มีค่าเท่ากับสองเท่าของที่ใหญ่ที่สุดของa^2, และb^2c^2

ส่งคืน#tสำหรับสามเหลี่ยมมุมฉากและ#fอินพุตอื่นทั้งหมด


  • -4 ไบต์ขอบคุณข้อเสนอแนะของ @ XNOR exptกับการใช้งาน

น่ากลัว;) แต่ฉันคิดว่า(define funต้องเป็นส่วนหนึ่งของรหัส ...
mdahmoune

ขอขอบคุณ! ฉันคิดว่ามันเป็นเรื่องธรรมดาที่จะบอกว่าฟังก์ชั่นที่บริสุทธิ์ได้รับอนุญาตเป็นคำตอบ (define fun ...)ใน TIO เป็นเพียงเพื่อความสะดวกของเราอย่างเท่าเทียมกันทั้งสามารถใช้ฟังก์ชั่นนี้เป็น(... 3 4 5)ที่...เป็นฟังก์ชั่น (ดังนั้นเราจะได้มีส่วนหัวของ(print (และส่วนท้ายของ3 4 5))ถ้าคุณต้องการ.)
Misha Lavrov

(แต่นี่เป็นหนึ่งในการส่งแร็กเก็ตครั้งแรกของฉันดังนั้นฉันไม่ชัดเจนเกินไปเกี่ยวกับอนุสัญญาเฉพาะแร็กเก็ตที่มีถ้ามีโซลูชั่นที่ผ่านมาบางอย่างที่ใช้ Racket รวมอยู่#lang racketในรหัส; บางคนไม่ได้)
Misha Lavrov

1
แร็กเก็ตเป็นคำที่สั้น(max a b c)เกินกว่าที่จะทำซ้ำได้letมั้ย ฉันไม่คิดว่ามันจะสั้นกว่าที่จะผูกเป็นอาร์กิวเมนต์เพื่อλ? หรือไม่มีการยกกำลังในตัวหรือไม่
xnor

2
@MishaLavrov งั้น(*(expt(max a b c)2)2)เหรอ?
xnor

3

05AB1E , 6 ไบต์

n{R`+Q

ลองออนไลน์!


ตัวอย่างแรกล้มเหลวในการตรวจพบ [1,1,1] ไม่ใช่อินพุตที่ถูกต้อง (ปัญหาทั่วไปในความพยายามอื่น ๆ ) แต่การทำงานครั้งที่สองนั้นใช้ได้
Nick Loughlin

@NickLoughlin โอ๊ะเอาตัวอย่างแรกออกแล้ว
Okx

คุณสามารถทำได้n{RÆ_เพื่อบันทึกไบต์
Emigna

3

Ruby, 31 ไบต์

->a{a,b,c=*a.sort;a*a+b*b==c*c}

รับอินพุตเป็นรายการของจำนวนเต็ม 3 ตัว ใช้แนวคิดบางอย่างจากโซลูชันอื่น ๆ


ฉันเพิ่งรู้ว่าคำตอบที่ฉันเพิ่งโพสต์นั้นเกือบจะเหมือนกับคุณ ฉันสัญญาว่าฉันจะไม่คัดลอกของคุณ (จริง ๆ แล้วมันนั่งอยู่ครู่หนึ่งในกล่อง "โพสต์คำตอบ") แต่เนื่องจากคุณถูกส่งก่อนถ้าคุณคิดว่าฉันอยู่ใกล้เกินไปฉันจะลบมัน
iamnotmaynard

@iamnotmaynard มันเหมือนกันมาก นี่เป็นเรื่องบังเอิญที่ตลกเลยฮ่า ๆ ขอบคุณที่แจ้งให้เราทราบ
dkudriavtsev

หากเป็นไปได้โปรดใส่ลิงค์ไปยังสภาพแวดล้อมการทดสอบออนไลน์เพื่อให้ผู้อื่นสามารถลองใช้รหัสของคุณได้!
mdahmoune

3

Julia 0.6 , 16 ไบต์

!x=xx2x.*x

ลองออนไลน์!

มันทำงานอย่างไร

ให้x = [A, B, C]

x⋅xเป็นผลิตภัณฑ์ที่จุดของxและตัวเองดังนั้นจึงถัวเฉลี่ยรฒร + b² +

2x.*xเป็นผลิตภัณฑ์ที่องค์ประกอบที่ชาญฉลาดของ2xและxจึงถัวเฉลี่ย[2a², 2b², 2c²]

สุดท้ายทดสอบว่าจำนวนเต็มa² + b² + c²เป็นของเวกเตอร์[2a², 2b², 2c²]ซึ่งเป็นจริงถ้า iff
a² + b² + c² = 2a²หรือa² + b² + c² = 2b²หรือa² + b² + c² = 2c²ที่ตัวเองเป็นจริง IFF
b² + c² = รฒรหรือรฒร + c² = b²หรือรฒร + b² =



3

TI-Basic, 13 11 10 ไบต์

max(Ans=R►Pr(min(Ans),median(Ans

ตอนนี้ใช้งานได้กับอินพุตในลำดับใดก็ได้และสั้นลงเช่นกัน อีก -1 ขอบคุณ @MishaLavrov


หากเป็นไปได้โปรดใส่ลิงค์ไปยังสภาพแวดล้อมการทดสอบออนไลน์เพื่อให้ผู้อื่นสามารถลองใช้รหัสของคุณได้!
mdahmoune

นี้เพียง แต่ตรวจพบเรียงสามเหลี่ยมขวา: ใส่ของA=5, B=4, C=3จะไม่ได้รับการจัดการอย่างถูกต้อง
Misha Lavrov

@MishaLavrov ขอบคุณที่ชี้ให้เห็นว่ามันเป็นเรื่องการจัดการที่สั้นกว่า ตอนนี้มันทำงานได้กับอินพุตในลำดับใด ๆ
Timtech

หากเราละหนึ่งครั้ง)ก็max(Ans=R►Pr(min(Ans),median(Ansมีผลเช่นกัน (แม้ว่าการคำนวณที่เราทำที่นี่จะแตกต่างกัน) และสั้นลงหนึ่งไบต์
Misha Lavrov

@MishaLavrov น่าสนใจฉันเห็นสิ่งที่คุณหมายถึง ฉันคิดว่านิพจน์นั้นเทียบเท่ากับอินพุตที่ไม่เป็นลบทั้งหมด
Timtech

3

CJam, 9

q~$W%~mh=

ลองออนไลน์

คำอธิบาย:

q~      read and evaluate the input (given as an array)
$W%     sort and reverse the array
~       dump the array on the stack
mh      get the hypotenuse of a right triangle with the given 2 short sides
=       compare with the longer side

คำอธิบายบางอย่าง;)?
mdahmoune

@mdahmoune ไปเลย
aditsu

แดงมัน คุณไม่ได้เขียนภาษานั้นเหรอ? ดูเหมือนจะไม่ยุติธรรม (ตลก)
kaine

3

Pari / GP , 29 24 ไบต์

f(v)=v~==2*vecmax(v)^2

ลองออนไลน์!

ที่บันทึกไว้ห้าไบต์โดยการเปลี่ยนแปลงที่เห็นได้ชัดจากการnorml2(v)v*v~

แรงบันดาลใจจากคำตอบอื่น ๆ

นี่vต้องเป็นเวกเตอร์แถวหรือเวกเตอร์คอลัมน์ที่มีสามพิกัด

ตัวอย่างการใช้งาน: f([3,4,5])

f([29/6, 10/3, 7/2])แน่นอนคุณจะได้รับความยาวด้านเหตุผลฟรียกตัวอย่างเช่น

ถ้าฉันไม่นับf(v)=ส่วนนั่นคือ 19 ไบต์ ส่วนแรกยังสามารถเขียนได้v->(ทั้งหมด 22 ไบต์)

คำอธิบาย:ถ้าสามพิกัดของvมีx, yและzแล้วสินค้าของvและ transpose ของมันv~จะช่วยให้เกลาx^2+y^2+^z^2และเราจำเป็นต้องตรวจสอบว่ามีค่าเท่ากับสองเท่าของตารางสูงสุดของพิกัดที่x, ,yz

พิเศษ:การfทดสอบเดียวกันสำหรับPythagorean Quadrupleหากเวกเตอร์อินพุตของคุณมีสี่พิกัดและอื่น ๆ


หากเป็นไปได้โปรดใส่ลิงค์ไปยังสภาพแวดล้อมการทดสอบออนไลน์เพื่อให้ผู้อื่นสามารถลองใช้รหัสของคุณได้!
mdahmoune

@mdahmoune คุณสามารถใช้นี้tio.runการเชื่อมโยง อย่างไรก็ตามมันก็ดีกว่าการติดตั้งPARI / GPในเครื่อง
Jeppe Stig Nielsen

3

MS Excel, 49 ไบต์

ฟังก์ชันแผ่นงานที่ไม่ระบุชื่อที่รับอินพุตจากช่วง [A1: C1] และส่งออกไปยังเซลล์ที่เรียก

=OR(A1^2+B1^2=C1^2,B1^2+C1^2=A1^2,A1^2+C1^2=B1^2)

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