Dado três lados de um triângulo, imprima a área desse triângulo.
Casos de teste:
Em: 2,3,4
Fora: 2.90473750965556
Em: 3,4,5
Fora: 6
Suponha que os três lados a, b, c sempre 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
Versão de 17 caracteres se a entrada estiver em i
:4%~%:*/(+/,+/-+:)i
versão original de 23 caracteres: (%:@(+/**/@(+/-+:))%4:)
t=input()
s=a=sum(t)/2.
for x in t:a*=s-x
print a**.5
Entrada: 2,3,4
Resultado: 2.90473750966
Mathematica 23
fonte
Sqrt[Tr@#*Times@@(Tr@#-2#)]/4&
(Tr@#Times@@(Tr@#-2#))^.5/4&
, ou 27 utilizando uma variávelPython 57 bytes
Usando a fórmula de Heron .
Uso da amostra:
Uma variante de 58 bytes:
fonte
*.5
vez de/2
?a+b+c
for ímpar, o resultado será incorreto. Isso mudou no Python 3, embora a maioria dos envios de golfe seja assumida como Python 2.7, a menos que seja especificado de outra forma (assim como os envios de Perl são considerados 5.10+ e não Perl 6).GolfScript, 38 caracteres
Como a pergunta não especificou o contrário, optei por trabalhar apenas em comprimentos inteiros. Os lados devem ser dados no STDIN separados por espaços.
Exemplo:
fonte
K, 23
Exemplo
fonte
APL,
2320 caracteresExemplo:
fonte
R:
4843 caracteresUsando a fórmula de Heron também, mas aproveitando a vetorização de R.
Obrigado a @flodel pela ideia das reticências.
Uso:
fonte
function(...)prod(sum(...)/2-c(0,...))^.5
. Ou mesmofunction(x)prod(sum(x)/2-c(0,x))^.5
se você chamar sua função com um vetor.Javascript,
8885Não é bom, mas divertido :) Também Heron ... Demonstra a imobilidade de problemas simples em JS lol
Nota : execute a partir do console para ver o resultado.
88-> 85: Removido
a
,b
ec
.fonte
(a=v[0])a
é maior quev[0]v[0]
.s=(v[0]+v[1]+v[2])/2
com a, b, c = 3,4,5 resultaria em"345"/2=172.5" and not 6. Improved without
um,
B` ec
embora.s=(-v[0]-v[1]-v[2])/2
e mude o outro-
para+
. É um número par de termos, então cancela.Mathematica
2016 ou2218 bytesCom 4 bytes salvos por @swish.
Isso retorna uma resposta exata:
Exemplo
Para retornar a resposta na forma decimal, são necessários dois bytes adicionais.
2,90474
fonte
Area@*SSSTriangle
Haskell: 51 (27) caracteres
Uma implementação muito direta da fórmula de Heron. Exemplo de execução:
Observe que ele aceita qualquer entrada numérica, não apenas números inteiros. E se a entrada já estiver em l, a solução precisará ter apenas 36 caracteres e, se não estivermos interessados em imprimir a resposta, a solução precisará ter apenas 30 caracteres. O que mais é que, se nos permitirmos alterar o formato de entrada, podemos remover mais 3 caracteres. Portanto, se nossa entrada se parece com [2,3,4,0,0] e já está em l, podemos obter nossa resposta apenas:
Exemplo de execução:
fonte
PHP,
7877Uso:
Resultado:
2.9047375096556
Eu não acho que posso torná-lo mais curto? Eu ainda sou novo no golfe. Alguém me avise se eu esqueci alguma coisa.
Obrigado Primo por me salvar 1 byte, lol.
fonte
($s-$c[2])
pode ser substituída$s-=$c[2]
por um byte, mas é tudo o que posso ver.JavaScript (84
86)Outra solução JavaScript baseada na fórmula de Heron, mas tentando uma abordagem diferente para carregar variáveis. Precisa ser executado no console. Cada lado é inserido em um prompt separado.
EDIT : Utilize o valor de retorno de
eval
para salvar 2 caracteres. Beats @tomsmeding, wahoo! :)fonte
Excel, 42 bytes
Com base na fórmula de Heron, álgebra do ensino médio para o golfe.
Ungolfed / Unalgebra'ed
fonte
Japonês ,
171615 bytesTeste-o
Economizou 2 bytes graças ao ETH apontando uma nova linha redundante e algumas maneiras alternativas de reduzir a matriz.
fonte
NmnU ×*U q
,NmnU r*U q
,Np0 mnU ×q
Tcl, 74 caracteres.
Passe os lados como argumento.
Para a entrada,
2 3 4
o valor des
é(2+3+4)/2.
como string. Avaliação dupla FTW.fonte
proc
, ele se estende a apenas 81 bytes: tio.run/##NYo7CoAwEAV7T/…Julia 0.6.0, 48 bytes
Basicamente a fórmula da garça-real:
fonte
TI-BASIC,
1412 bytesA partir da rotina de Fórmula de Heron, escrita por Kenneth Hammond (Weregoose) , consegui dois bytes. Observe que o TI-BASIC é tokenizado e cada token, como
Ans
eprod(
, possui um ou dois bytes na memória da calculadora.Entrada através,
Ans
ou seja, no formulário{a,b,c}:[program name]
.Explicado:
fonte
dc , 34 bytes
Experimente online!
fonte
C (gcc) , 55 bytes
Experimente online!
Mais uma implementação da fórmula do Herói.
fonte
fonte
ARBLE , 36 bytes
Fórmula de Heron.
Experimente online!
fonte
Perl 5
-MList::Util=sum -ap
, 40 bytesExperimente online!
fonte
Stax , 10 bytes
Execute e depure
Opera triplos de números de ponto flutuante. Usa a fórmula de Heron
fonte
APL (NARS), 16 caracteres, 32 bytes
É preciso converter a fórmula de Erone se a, b, c forem lados do triângulo
para a linguagem APL ... teste
fonte