Pela primeira vez, eu estava realizando algum trabalho de verdade, atualizando o código antigo e encontrei uma expressão equivalente ao que seria escrito como πx + e x em uma boa matemática antiquada. Eu pensei que seria possível escrevê-lo mais curto do que foi escrito na linguagem com a qual trabalho (APL), e, portanto, apresentar este desafio muito simples:
Escreva uma função ou programa que (por qualquer meio) aceite zero ou mais números e retorne (por qualquer meio) o resultado da expressão acima para x = cada um dos números fornecidos com pelo menos 3 dígitos significativos para cada resultado.
Se o seu idioma não possuir π e / ou e , use os valores 3.142 e 2.718.
A pontuação é o número de bytes, portanto, anteceda sua resposta # LanguageName, 00 bytes
.
Não são permitidos orifícios padrão.
Edit: Agora, a solução que eu vim ○+*
, foi encontrada . O código original (○x)+*x
.
Respostas:
Dyalog APL, 3 caracteres
Como uma frase tácita.
Monádico
○
multiplica seu argumento com π, monádico*
é a função exponencialexp
.○+*
é um trem que(○+*)ω
é igual a(○ω)+(*ω)
. Como se trata de APL, a frase funciona para argumentos de forma arbitrária, e. g. você pode passar um vetor de comprimento arbitrário.A mesma solução é possível em J, assim como
o.+^
noo.
ser○
e no^
ser*
.fonte
Emotinomicon, 48 bytes / 13 caracteres
Eu faço isso, não porque seja curto, mas porque é divertido. Experimente aqui. Você terá que copiar e colar na caixa de texto.
Explicação:
Aqui está o programa em seu ambiente nativo, o telefone celular:
fonte
cat
?R,
25bytes 24É isso? Ele obtém a entrada do usuário, atribui-a
x
, calcula sua multiplicação exponencialpi
e finalmentecat()
imprime o resultado.edit: 1 bytes economizados graças a Alex A.
fonte
cat(exp(x<-scan())+pi*x)
<-
como eu fiz na minha sugestão, e não=
porque, caso contrário, está definindo ox
argumento para,exp
mas não atribuindo a variávelx
. Em uma nova sessão, o código atual falhará.JavaScript (ES6),
3934 bytesGuardado 5 bytes graças a @ edc65
Recebe entrada como uma matriz de números e sai no mesmo formato.
Graças à redução, agora existem três programas equivalentes de 45 bytes, todos compatíveis com ES5:
As entradas devem ser inseridas uma de cada vez. Pressione OK sem inserir nada para sair.
O terceiro destaca um recurso interessante em JS: a
with
declaração. Embora algumas vezes seja inseguro de usar (desabilitado no modo estrito), ele ainda pode ser usado para salvar a digitação do nome do objeto e do período sempre que você precisar acessá-lo. Por exemplo, você pode fazer isso:push
elength
são usadas como propriedades dex
, o que resultará emx
existência[0,1,2,3,4]
.Isso funciona em qualquer objeto, mesmo que não seja variável, por exemplo, você pode fazer isso:
charAt
elength
são chamados como propriedades da sequência."0x"+x-0
convertex
de um valor hexadecimal em um número, então essesalert
são os números de 0 a 15.fonte
M.pow(M.E,x)
éM.exp(x)
por definiçãoMath
;) Obrigado!with
estava obsoleto.<canvas>
renderização e (é claro) no golfe.Mathematica,
1110 bytesCom 1 byte salvo, graças ao LegionMammal978.
fonte
1.Pi#+E^#&
#
ePi
. Isso é resolvido usandoPi#
no lugar de#Pi
. Além disso,N
só precisa ser aplicadoPi#
, e não toda a expressão.Pitão,
1113Agora leva
x
como uma lista, por exemplo[1.25, 2.38, 25]
Anterior (11 bytes):
+*Q.n0^.n1Q
fonte
Sério, 10 bytes
Hex Dump:
Experimente Online
Toma entradas como uma lista (veja o link, por exemplo).
Explicação:
fonte
MATLAB, 15 bytes
fonte
TI-BASIC, 5 bytes
O TI-BASIC não usar bytes ASCII, de modo que cada um deles é armazenado como um byte na calculadora:
π
,Ans
,+
,e^(
, eAns
. Assume que a expressão anterior é a entrada (como{1,2,3}
).fonte
Python 2, 38 bytes (
5249 bytes com matemática)Se eu tiver que usar o módulo de matemática:
A entrada deve ser uma lista de números
fonte
If your language does not have π and/or e, use the values 3.142 and 2.718.
... Python tempi
ee
nomath
módulo.math
solução usandofrom math import*
for x in l:lambda l:pi*x+e**x
em vez da compreensão em ambas as respostasMATL , 9 bytes
Esta resposta usa a versão atual do idioma ( 3.1.0 ), anterior ao desafio.
Entrada é um vetor que contém todos os números (lista entre colchetes e separados por espaços, vírgulas de ponto e vírgula), como
[5.3 -7 3+2j]
. Valores complexos são permitidos. A saída possui 15 dígitos significativos.Exemplo
Explicação
Operações diretas:
fonte
MATLAB: 70 bytes
Teste:
Explicação: Houve vários problemas com a formatação de números.
Em primeiro lugar, a questão requer 3 sig-figs. O Matlab não possui uma função interna para arredondar por sig-figs (apenas por casas decimais), portanto, a seguinte solução alternativa foi necessária:
floor(log10(pi*x+exp(x))))
calcula o maior dígito significativo.@(x)(round(pi*x+exp(x),2-floor(log10(pi*x+exp(x))))),x))
recebe entradax
e arredonda para 3 dígitos significativos.Outro requisito era lidar com várias entradas. O código acima pode funcionar apenas com um único número. Para mitigar isso, usamos
arrayfun
para avaliar a função para cada elemento do vetor.O último problema, o Matlab, exibe o resultado do arrayfun com seu próprio arredondamento que leva a saídas como as
1.0e+04 * 0.0006
que violam o requisito de 3 sig-fig. Então,num2str
foi usado para transformar o array emchar
formato.O Matlab é bom para análise numérica, mas, francamente, é péssimo quando se trata de formatação de números finos
UPD: bem, isso é embaraçoso que eu confundi
com
De qualquer forma, deixarei minha resposta neste formulário porque a solução Matlab de 15 bytes já é fornecida por @costrom
fonte
format longg
era necessário antes de executar o código, você ia cair 3/4 do comprimento aquiJulia, 12 bytes
Esta é uma função anônima que aceita uma matriz e retorna uma matriz de carros alegóricos. Para chamá-lo, dê um nome, por exemplo
f=x->...
.Julia tem constantes internas
π
ee
para - você adivinhou - π e e, respectivamente. O.^
operador é exponenciação vetorizada.fonte
Japonês, 12 bytes
Recebe a entrada como números separados por espaço. Experimente online!
Como funciona
fonte
J, 4 bytes
O mesmo que APL
○+*
, mas api times
função de J é chamadao.
, que é um byte a mais.fonte
Haskell,
2219 bytesExperimente online!
Edit: -3 bytes graças a @ H.PWiz
fonte
Par , 8 bytes
Aceita entrada como
(1 2 3)
Explicação
fonte
Raquete , 27 bytes
quando colocado na posição da função de uma expressão:
fonte
CJam, 13 bytes
Recebe a entrada como uma matriz separada por espaços (por exemplo
[1 2 3]
). Experimente online.Explicação
fonte
Reng v.3.3, 53 bytes
Incompetente porque pós-datado o desafio, mas ei, não ganhando nenhum prêmio por brevidade. : P Experimente aqui!
Linha 0
Aqui está uma visão da pilha na linha 0:
ø
depois vai para a próxima enésima linha. Quando0
é inserido, isso vai direto para a linha 2. Caso contrário, vamos para a linha 1.Linha 1
Isso multiplica E
i
vezes, o que ée^i
. Diminuímos o contador (inicialmenteI
), multiplicamos o STOS (nossae
potência de funcionamento ) por E, voltamos ao balcão e fazemos isso (i'
é o contador atual):ø
então faz uma de duas coisas. Se o contador não for 0, então vamos para a próxima linha 0, ou seja, o início da linha atual. Se for zero, então0e
gera 1 e passa para a próxima linha.Linha 2
$
derruba o balcão (NO ANDAR!).+
adiciona os dois primeiros resultados,n
gera esse número e~
sai do programa.Caso 1: entrada é 0. O TOS é 1 ("e ^ 0") e o STOS é 0 (pi * 0). Adicioná-los produz o resultado correto.
Caso 2: a entrada não é 0. O resultado é o esperado.
fonte