Antworten:
t=input()
s=a=sum(t)/2.
for x in t:a*=s-x
print a**.5
Eingang: 2,3,4
Ausgabe: 2.90473750966
Mathematica 23
√Times@@(+##/2-{0,##})&
Sqrt[Tr@#*Times@@(Tr@#-2#)]/4&
(Tr@#Times@@(Tr@#-2#))^.5/4&oder 27 unter Verwendung einer Variablen
a,b,c=input()
s=(a+b+c)*.5
print(s*(s-a)*(s-b)*(s-c))**.5
Mit Herons Formel .
Beispielnutzung:
$ echo 2,3,4 | python triangle-area.py
2.90473750966
$ echo 3,4,5 | python triangle-area.py
6.0
Eine 58-Byte-Variante:
a,b,c=input()
print((a+b+c)*(b+c-a)*(a+c-b)*(a+b-c))**.5/4
*.5anstelle von /2?
a+b+cungerade ist, ist das Ergebnis fehlerhaft. Dies hat sich in Python 3 geändert, obwohl angenommen wird, dass die meisten Golf-Einsendungen Python 2.7 sind, sofern nicht anders angegeben (genau wie bei Perl-Einsendungen 5.10+ und nicht Perl 6).
f=function(...)prod(sum(...)/2-c(0,...))^.5
Verwenden Sie auch die Formel von Heron, aber nutzen Sie die Vektorisierung von R.
Vielen Dank an @flodel für die Idee der Ellipse.
Verwendung:
f(2,3,4)
[1] 2.904738
f(3,4,5)
[1] 6
function(...)prod(sum(...)/2-c(0,...))^.5. Oder auch function(x)prod(sum(x)/2-c(0,x))^.5wenn Sie Ihre Funktion mit einem Vektor aufrufen.
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]))
Nicht gut, aber lustig :) Auch Heron ... Demonstriert die Ungolfbarkeit einfacher Probleme in JS lol
Hinweis : Führen Sie von der Konsole aus, um das Ergebnis zu sehen.
88-> 85: Entfernte a, bund c.
(a=v[0])aist länger als v[0]v[0].
s=(v[0]+v[1]+v[2])/2bei a, b, würde c = 3,4,5 zu "345"/2=172.5" and not 6. Improved without einem , b` und cobwohl führen.
s=(-v[0]-v[1]-v[2])/2und ändern Sie die andere -zu +. Es ist eine gerade Anzahl von Begriffen, so dass es storniert.
Mit 4 Bytes von @swish gespeichert.
Dies gibt eine genaue Antwort zurück:
Area@SSSTriangle@
Beispiel
Area@SSSTriangle[2,3,4]
Um die Antwort in Dezimalform zurückzugeben, sind zwei zusätzliche Bytes erforderlich.
N@Area@SSSTriangle[2,3,4]
2.90474
Area@*SSSTriangle
readLn>>=(\l->print$sqrt$product$map(sum l/2-)$0:l)
Eine sehr einfache Implementierung der Heron-Formel. Beispiellauf:
Prelude> readLn>>=(\l->print$sqrt$product$map(sum l/2-)$0:l)
[2,3,4]
2.9047375096555625
Prelude>
Beachten Sie, dass jede numerische Eingabe akzeptiert wird, nicht nur ganze Zahlen. Und wenn die Eingabe bereits in 1 ist, muss die Lösung nur 36 Zeichen lang sein, und wenn wir nicht daran interessiert sind, die Antwort auszudrucken, muss die Lösung nur 30 Zeichen lang sein. Was mehr ist, wenn wir uns erlauben können, das Eingabeformat zu ändern, können wir 3 weitere Zeichen entfernen. Wenn unsere Eingabe also wie [2,3,4,0.0] aussieht und bereits in l ist, können wir unsere Antwort nur mit Folgendem erhalten:
sqrt$product$map(sum l/2-)l
Beispiellauf:
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]);
Verbrauch:
php triangle.php
2,3,4
Ausgabe: 2.9047375096556
Ich glaube nicht, dass ich es kürzer machen kann? Ich bin noch neu im Golfen. Jeder ließ mich wissen, wenn ich etwas übersah.
Danke Primo, dass du mir 1 Byte gespart hast, lol.
($s-$c[2])kann durch $s-=$c[2]ein Byte ersetzt werden, aber das ist alles, was ich sehen kann.
s=(eval('abc '.split('').join('=prompt()|0;'))+a+b)/2;Math.sqrt(s*(s-a)*(s-b)*(s-c))
Eine weitere JavaScript-Lösung, die auf der Formel von Heron basiert, aber einen anderen Ansatz zum Laden von Variablen ausprobiert. Muss von der Konsole ausgeführt werden. Jede Seite wird in einer separaten Eingabeaufforderung eingegeben.
BEARBEITEN : Verwenden Sie den Rückgabewert von eval, um 2 Zeichen zu speichern. Beats @tomsmeding, wahoo! :)
½*Nx
NmnU ×*U q
2 Bytes gespart dank Hinweis der ETH auf eine redundante Newline und einige alternative Möglichkeiten zur Reduzierung des Arrays.
NmnU ×*U q, NmnU r*U q,Np0 mnU ×q
proc R {a b c} {set s ($a+$b+$c)/2.
expr sqrt($s*($s-$a)*($s-$b)*($s-$c))}
Übergeben Sie die Seiten als Argument.
Für die Eingabe 2 3 4des Wertes sist (2+3+4)/2.als String. Doppelte Bewertung FTW.
procerstreckt sie sich auf nur 81 Bytes tio.run/##NYo7CoAwEAV7T/...
4⁻¹√(sum(Ansprod(sum(Ans)-2Ans
Ausgehend von einer von Kenneth Hammond (Weregoose) geschriebenen Heron's Formula-Routine spielte ich zwei Bytes Golf. Beachten Sie, dass TI-BASIC tokenisiert ist und jedes Token wie Ansund prod(ein oder zwei Bytes im Speicher des Rechners enthält.
Eingabe über AnszB in das Formular{a,b,c}:[program name] .
Erklärt:
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))
#define f(a,b,c)sqrt((a+b+c)*(a+b-c)*(a-b+c)*(b+c-a))/4
Noch eine weitere Implementierung der Hero-Formel.
#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;
}
-MList::Util=sum -ap , 40 Bytes$r=$t=.5*sum@F;map$r*=$t-$_,@F;$_=sqrt$r
╝0∞♀»♦▓y╩╪
Führen Sie es aus und debuggen Sie es
Operiert Dreifache von Gleitkommazahlen. Verwendet Herons Formel