답변:
t=input()
s=a=sum(t)/2.
for x in t:a*=s-x
print a**.5
입력: 2,3,4
산출: 2.90473750966
매스 매 티카 23
√Times@@(+##/2-{0,##})&
Sqrt[Tr@#*Times@@(Tr@#-2#)]/4&
(Tr@#Times@@(Tr@#-2#))^.5/4&또는 27 변수를 사용하여
a,b,c=input()
s=(a+b+c)*.5
print(s*(s-a)*(s-b)*(s-c))**.5
사용 헤론의 공식을 .
샘플 사용법 :
$ echo 2,3,4 | python triangle-area.py
2.90473750966
$ echo 3,4,5 | python triangle-area.py
6.0
58 바이트 변형 :
a,b,c=input()
print((a+b+c)*(b+c-a)*(a+c-b)*(a+b-c))**.5/4
*.5아닌 /2?
a+b+c이 홀수이면 결과가 잘못됩니다. 달리 명시하지 않는 한 (Perl 제출이 Perl 6이 아닌 5.10+로 가정되는 것처럼) 대부분의 골프 제출은 Python 2.7로 가정되지만 이것은 Python 3에서 변경되었습니다.
f=function(...)prod(sum(...)/2-c(0,...))^.5
헤론의 공식을 사용하지만 R의 벡터화를 활용합니다.
줄임표 아이디어에 대한 @flodel에게 감사합니다.
용법:
f(2,3,4)
[1] 2.904738
f(3,4,5)
[1] 6
function(...)prod(sum(...)/2-c(0,...))^.5. 또는 function(x)prod(sum(x)/2-c(0,x))^.5벡터로 함수를 호출 하더라도 .
v=prompt().split(/,/g);s=v[0]/2+v[1]/2+v[2]/2;Math.sqrt(s*(s-v[0])*(s-v[1])*(s-v[2]))
좋지 않지만 재미 :) 또한 헤론 ... JS lol에서 간단한 문제의 극복 할 수 없음을 보여줍니다
참고 : 결과를 보려면 콘솔에서 실행하십시오.
88-> 85 : 제거 a, b및 c.
(a=v[0])ais than than v[0]v[0].
s=(v[0]+v[1]+v[2])/2, B와 C는 = 3,4,5이 초래 b`하고 있지만. "345"/2=172.5" and not 6. Improved without , c
s=(-v[0]-v[1]-v[2])/2하고 다른 하나 -를로 변경하십시오 +. 짝수 개의 단어이므로 취소됩니다.
readLn>>=(\l->print$sqrt$product$map(sum l/2-)$0:l)
헤론 공식의 매우 간단한 구현. 예제 실행 :
Prelude> readLn>>=(\l->print$sqrt$product$map(sum l/2-)$0:l)
[2,3,4]
2.9047375096555625
Prelude>
정수뿐만 아니라 모든 숫자 입력을 허용합니다. 그리고 입력이 이미 l 인 경우 솔루션의 길이는 36 자이면 충분하고 답을 인쇄하지 않으려면 솔루션의 길이는 30 자이면됩니다. 또한 입력 형식을 변경할 수 있으면 3자를 더 제거 할 수 있습니다. 따라서 입력이 [2,3,4,0.0]처럼 보이고 이미 l에 있으면 다음과 같은 방법으로 만 답을 얻을 수 있습니다.
sqrt$product$map(sum l/2-)l
예제 실행 :
Prelude> let l = [2,3,4,0.0]
Prelude> sqrt$product$map(sum l/2-)l
2.9047375096555625
Prelude>
<?=sqrt(($s=array_sum($c=fgetcsv(STDIN))/2)*($s-$c[0])*($s-$c[1])*$s-=$c[2]);
사용법 :
php triangle.php
2,3,4
산출: 2.9047375096556
나는 그것을 더 짧게 만들 수 있다고 생각하지 않습니까? 나는 아직도 골프를 처음 접합니다. 내가 무언가를 간과하면 누구든지 알려주십시오.
1 바이트를 절약 해 준 Primo에게 감사합니다. lol.
($s-$c[2])은 $s-=$c[2]1 바이트 로 대체 될 수 있지만 이것이 내가 볼 수있는 전부입니다.
proc R {a b c} {set s ($a+$b+$c)/2.
expr sqrt($s*($s-$a)*($s-$b)*($s-$c))}
양쪽을 논쟁으로 넘기십시오.
상기 입력 내용 2 3 4의 값 s이다 (2+3+4)/2.문자열. 이중 평가 FTW.
proc, 그것은 단지 81 바이트로 확장됩니다 : tio.run/##NYo7CoAwEAV7T/…
4⁻¹√(sum(Ansprod(sum(Ans)-2Ans
Kenneth Hammond (Weregoose)가 작성한 Heron 's Formula 루틴에서 시작하여 2 바이트를 뛰었습니다. 참고 TI-BASIC 같이, 토큰 화하고, 각 토큰 것을 Ans및prod( , 계산기의 메모리에 하나 또는 두 개의 바이트입니다.
Ans형식으로 즉을 통해 입력 합니다 {a,b,c}:[program name].
설명 :
sum(Ans)-2*Ans (a+b+c)-2{a,b,c}={b+c-a,c+a-b,a+b-c}
Ans*prod( {a,b,c}*(b+c-a)(c+a-b)(a+b-c)
sum( (a+b+c)(b+c-a)(c+a-b)(a+b-c)
4⁻¹*√( √((a+b+c)(b+c-a)(c+a-b)(a+b-c)/16)
=√(s(s-a)(s-b)(s-c))
#include<stdio.h>
#include<math.h>
main()
{
double a,b,c,s,area;
scanf("%d %d %d" &a,&b,&c);
s=sqrt((a*a)+(b*b)+(c*c));
area=[sqrt(s*(s-a)*(s-b)*(s-c))]/2;
}