Diberikan tiga sisi segitiga, cetak area segitiga ini.
Kasus uji:
Dalam: 2,3,4
Keluar: 2.90473750965556
Dalam: 3,4,5
Keluar: 6
Asumsikan tiga sisi a, b, c selalu 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
Versi 17-char jika input ada di i
:4%~%:*/(+/,+/-+:)i
versi 23-char asli: (%:@(+/**/@(+/-+:))%4:)
t=input()
s=a=sum(t)/2.
for x in t:a*=s-x
print a**.5
Memasukkan: 2,3,4
Keluaran: 2.90473750966
Mathematica 23
sumber
Sqrt[Tr@#*Times@@(Tr@#-2#)]/4&
(Tr@#Times@@(Tr@#-2#))^.5/4&
, atau 27 menggunakan variabelPython 57 byte
Menggunakan Formula Heron .
Penggunaan sampel:
Varian 58 byte:
sumber
*.5
bukan/2
?a+b+c
ganjil, hasilnya akan salah. Ini memang berubah dalam Python 3, meskipun sebagian besar pengiriman golf diasumsikan Python 2.7 kecuali ditentukan lain (seperti pengiriman Perl diasumsikan 5.10+, dan bukan Perl 6).GolfScript, 38 karakter
Karena pertanyaan tidak menentukan sebaliknya saya memilih untuk bekerja hanya pada panjang integer. Sisi harus diberikan pada STDIN yang dipisahkan oleh spasi.
Contoh:
sumber
K, 23
Contoh
sumber
APL,
2320 karakterContoh:
sumber
R:
4843 karakterMenggunakan rumus Heron juga tetapi memanfaatkan vektorisasi R.
Terima kasih kepada @flodel untuk ide elipsis.
Pemakaian:
sumber
function(...)prod(sum(...)/2-c(0,...))^.5
. Atau bahkanfunction(x)prod(sum(x)/2-c(0,x))^.5
jika Anda memanggil fungsi Anda dengan vektor.Javascript,
8885Tidak bagus tapi menyenangkan :) Bangau juga ... Menunjukkan ketidaklayakan masalah sederhana di JS lol
Catatan : jalankan dari konsol untuk melihat hasilnya.
88-> 85: Dihapus
a
,b
danc
.sumber
(a=v[0])a
lebih lama dariv[0]v[0]
.s=(v[0]+v[1]+v[2])/2
dengan a, b, c = 3,4,5 akan menghasilkan"345"/2=172.5" and not 6. Improved without
sebuah,
b` danc
sekalipun.s=(-v[0]-v[1]-v[2])/2
dan mengubah lainnya-
untuk+
. Ini adalah angka yang genap, jadi dibatalkan.Mathematica
2016 atau2218 bytesDengan 4 byte disimpan oleh @swish.
Ini mengembalikan jawaban yang tepat:
Contoh
Untuk mengembalikan jawaban dalam bentuk desimal, diperlukan dua byte tambahan.
2.90474
sumber
Area@*SSSTriangle
Haskell: 51 (27) karakter
Implementasi formula Heron yang sangat mudah. Contoh dijalankan:
Perhatikan bahwa ia menerima input numerik apa pun, tidak hanya bilangan bulat. Dan jika input sudah ada dalam l solusinya hanya perlu 36 karakter, dan jika kita tidak tertarik untuk mencetak jawaban, solusinya hanya perlu 30 karakter. Apa lagi itu jika kita bisa membiarkan diri kita untuk mengubah format input kita dapat menghapus 3 karakter lagi. Jadi jika input kita seperti [2,3,4,0.0] dan sudah ada di l kita hanya bisa mendapatkan jawaban kita:
Contoh dijalankan:
sumber
PHP,
7877Penggunaan:
Keluaran:
2.9047375096556
Saya tidak berpikir saya bisa membuatnya lebih pendek? Saya masih baru bermain golf. Siapa pun beri tahu saya jika saya mengabaikan sesuatu.
Terima kasih Primo karena telah menyelamatkan saya 1 byte, lol.
sumber
($s-$c[2])
dapat diganti dengan$s-=$c[2]
satu byte, tapi hanya itu yang bisa saya lihat.JavaScript (84
86)Solusi JavaScript lain berdasarkan pada rumus Heron, tetapi mencoba pendekatan yang berbeda untuk memuat variabel. Perlu dijalankan dari konsol. Setiap sisi dimasukkan dalam prompt terpisah.
EDIT : Manfaatkan nilai balik
eval
untuk menyimpan 2 karakter. Beats @tomsmeding, wahoo! :)sumber
Excel, 42 byte
Berdasarkan rumus Heron, aljabar sekolah menengah hingga golf.
Tidak disatukan / Tidak disatukan
sumber
Japt ,
171615 byteMenguji
Disimpan 2 byte berkat ETH menunjukkan garis baru yang berlebihan dan beberapa cara alternatif untuk mengurangi array.
sumber
NmnU ×*U q
,NmnU r*U q
,Np0 mnU ×q
Tcl, 74 karakter.
Lewati sisi sebagai argumen.
Untuk input
2 3 4
nilais
adalah(2+3+4)/2.
sebagai string. Evaluasi ganda FTW.sumber
proc
, hanya meluas hingga 81 byte: tio.run/##NYo7CoAwEAV7T/…Julia 0.6.0, 48 bytes
Pada dasarnya rumus bangau:
sumber
TI-BASIC,
1412 byteMulai dari rutinitas Formula Heron yang ditulis oleh Kenneth Hammond (Weregoose) , saya bermain golf dua byte. Perhatikan bahwa TI-BASIC adalah tokenized, dan setiap token, seperti
Ans
danprod(
, adalah satu atau dua byte dalam memori kalkulator.Masukan melalui
Ans
yaitu dalam formulir{a,b,c}:[program name]
.Dijelaskan:
sumber
dc , 34 byte
Cobalah online!
sumber
C (gcc) , 55 byte
Cobalah online!
Namun implementasi lain dari formula Pahlawan.
sumber
sumber
ARBLE , 36 byte
Formula bangau.
Cobalah online!
sumber
Perl 5
-MList::Util=sum -ap
, 40 byteCobalah online!
sumber
Stax , 10 byte
Jalankan dan debug itu
Mengoperasikan tiga kali lipat angka floating point. Menggunakan Formula Bangau
sumber
APL (NARS), 16 karakter, 32 byte
Kita harus cenvert rumus Erone jika a, b, c adalah sisi segitiga
ke bahasa APL ... tes
sumber