Biorąc pod uwagę trzy boki trójkąta, wydrukuj obszar tego trójkąta.
Przypadki testowe:
W: 2,3,4
Out: 2.90473750965556
W: 3,4,5
Out: 6
Załóżmy, że trzy strony a, b, c zawsze a> 0, b> 0, c> 0, a + b> c, b + c> a, c + a> b.
(4%~2%:[:*/+/-0,+:)
(4%~2%:[:*/+/-0,+:) 2 3 4
2.90474
(4%~2%:[:*/+/-0,+:) 3,4,5
6
Wersja 17-znakowa, jeśli wejście jest w i
:4%~%:*/(+/,+/-+:)i
oryginalna wersja 23-znakowa: (%:@(+/**/@(+/-+:))%4:)
t=input()
s=a=sum(t)/2.
for x in t:a*=s-x
print a**.5
Wejście: 2,3,4
Wynik: 2.90473750966
Mathematica 23
źródło
Sqrt[Tr@#*Times@@(Tr@#-2#)]/4&
(Tr@#Times@@(Tr@#-2#))^.5/4&
, lub 27 przy użyciu zmiennejPython 57 bajtów
Korzystanie z formuły Herona .
Przykładowe użycie:
58-bajtowy wariant:
źródło
*.5
zamiast drugiej linii/2
?a+b+c
jest nieparzysta, wynik będzie błędny. Zmieniło się to w Pythonie 3, chociaż zakłada się, że większość zgłoszeń do golfa to Python 2.7, chyba że określono inaczej (tak jak przyjmuje się, że zgłoszenia w Perlu to 5.10+, a nie w Perl 6).GolfScript, 38 znaków
Ponieważ pytanie nie określiło inaczej, zdecydowałem się pracować tylko na długościach całkowitych. Strony muszą być podane na STDIN oddzielone spacjami.
Przykład:
źródło
K, 23
Przykład
źródło
APL,
2320 znakówPrzykład:
źródło
R:
4843 znakówKorzystając również ze wzoru Herona, ale korzystając z wektoryzacji R.
Dzięki @flodel za pomysł na elipsę.
Stosowanie:
źródło
function(...)prod(sum(...)/2-c(0,...))^.5
. Lub nawetfunction(x)prod(sum(x)/2-c(0,x))^.5
jeśli wywołasz swoją funkcję za pomocą wektora.JavaScript,
8885Nie dobrze, ale fajnie :) Również Czapla ... Demonstruje niemożność rozwiązywania prostych problemów w JS lol
Uwaga : uruchom z konsoli, aby zobaczyć wynik.
88-> 85: Usunięty
a
,b
ic
.źródło
(a=v[0])a
jest dłuższy niżv[0]v[0]
.s=(v[0]+v[1]+v[2])/2
z a, b, c = 3,4,5 doprowadziłoby"345"/2=172.5" and not 6. Improved without
do,
B` ic
chociaż.s=(-v[0]-v[1]-v[2])/2
i zmień drugą-
na+
. Jest to parzysta liczba warunków, więc anuluje się.Mathematica
2016 lub2218 bajtówZ 4 bajtami zapisanymi przez @swish.
To zwraca dokładną odpowiedź:
Przykład
Aby zwrócić odpowiedź w postaci dziesiętnej, wymagane są dwa dodatkowe bajty.
2,90474
źródło
Area@*SSSTriangle
Haskell: 51 (27) znaków
Bardzo prosta implementacja formuły Herona. Przykładowy przebieg:
Zauważ, że akceptuje dowolne dane liczbowe, nie tylko liczby całkowite. A jeśli dane wejściowe są już w l, rozwiązanie musi mieć tylko 36 znaków, a jeśli nie jesteśmy zainteresowani wydrukowaniem odpowiedzi, rozwiązanie musi mieć tylko 30 znaków. Co więcej, jeśli możemy pozwolić sobie na zmianę formatu wejściowego, możemy usunąć jeszcze 3 znaki. Więc jeśli nasze dane wejściowe wyglądają na [2,3,4,0,0] i są już w l, możemy uzyskać odpowiedź tylko:
Przykładowy przebieg:
źródło
PHP,
7877Wykorzystanie:
Wynik:
2.9047375096556
Nie sądzę, że mogę to skrócić? Nadal jestem nowy w golfa. Daj mi znać, jeśli coś przeoczyłem.
Dzięki Primo za uratowanie mnie 1 bajt, lol.
źródło
($s-$c[2])
można zastąpić$s-=$c[2]
jednym bajtem, ale to wszystko, co widzę.JavaScript (84
86)Inne rozwiązanie JavaScript oparte na formule Herona, ale próbujące innego podejścia do ładowania zmiennych. Musi być uruchamiany z konsoli. Każda strona jest wprowadzana w osobnym monicie.
EDYCJA : Użyj wartości zwracanej,
eval
aby zapisać 2 znaki. Beats @tomsmeding, wahoo! :)źródło
Excel, 42 bajty
Oparty na formule Herona, algebry szkolnej do golfa.
Ungolfed / Unalgebra'ed
źródło
Japt ,
171615 bajtówSprawdź to
Zaoszczędzono 2 bajty dzięki ETH wskazującemu nadmiarową nową linię i kilka alternatywnych sposobów na zmniejszenie tablicy.
źródło
NmnU ×*U q
,NmnU r*U q
,Np0 mnU ×q
Tcl, 74 znaki.
Podaj boki jako argument.
Dla danych wejściowych
2 3 4
wartościąs
jest(2+3+4)/2.
ciąg znaków. Podwójna ocena FTW.źródło
proc
, zajmujeJulia 0.6.0, 48 bajtów
Zasadniczo formuła czapli:
źródło
TI-BASIC,
1412 bajtówZaczynając od rutynowej formuły Herona napisanej przez Kennetha Hammonda (Weregoose) , grałem w golfa o dwa bajty. Zauważ, że TI-BASIC jest tokenizowany, a każdy token, jak
Ans
iprod(
, ma jeden lub dwa bajty w pamięci kalkulatora.Dane wejściowe
Ans
np. W formularzu{a,b,c}:[program name]
.Wyjaśniono:
źródło
dc , 34 bajty
Wypróbuj online!
źródło
C (gcc) , 55 bajtów
Wypróbuj online!
Kolejna implementacja formuły Hero.
źródło
źródło
ARBLE , 36 bajtów
Formuła Herona.
Wypróbuj online!
źródło
Perl 5
-MList::Util=sum -ap
, 40 bajtówWypróbuj online!
źródło
Stax , 10 bajtów
Uruchom i debuguj
Działa trzykrotnie liczb zmiennoprzecinkowych. Wykorzystuje formułę Herona
źródło
APL (NARS), 16 znaków, 32 bajty
Trzeba przekształcić wzór Erone, jeśli a, b, c są bokami trójkąta
na język APL ... test
źródło