Por una vez, estaba haciendo un trabajo real, actualizando el código antiguo, y me topé con una expresión que es equivalente a lo que se escribiría como πx + e x en una buena matemática tradicional . Pensé que sería posible escribirlo más corto de lo que estaba escrito en el idioma con el que trabajo (APL) y, por lo tanto, presentar este desafío muy simple:
Escriba una función o programa que (por cualquier medio) acepte cero o más números y devuelva (por cualquier medio) el resultado de la expresión anterior para x = cada uno de los números dados con al menos 3 dígitos significativos para cada resultado.
Si su idioma no tiene π y / o e , use los valores 3.142 y 2.718.
El puntaje es el número de bytes, por lo tanto, prologue su respuesta con # LanguageName, 00 bytes
.
Los agujeros de bucle estándar no están permitidos.
Editar: Ahora la solución que se me ocurrió, ○+*
, ha sido encontrado . El código original era (○x)+*x
.
Respuestas:
Dyalog APL, 3 caracteres
Como una frase tácita.
Monadic
○
multiplica su argumento con π, monadic*
es la función exponencialexp
.○+*
es un tren tal que(○+*)ω
es igual a(○ω)+(*ω)
. Como se trata de APL, la frase funciona para argumentos de forma arbitraria, e. sol. Puede pasar un vector de longitud arbitraria.La misma solución es posible en J como
o.+^
cono.
ser○
y^
ser*
.fuente
Emotinomicon, 48 bytes / 13 caracteres
Lo hago, no porque sea corto, sino porque es divertido. Pruébalo aquí. Tendrás que copiarlo y pegarlo en el cuadro de texto.
Explicación:
Aquí está el programa en su entorno nativo, el teléfono móvil:
fuente
cat
?R,
2524 bytesEs esto? Obtiene información del usuario, se la asigna
x
, calcula su multiplicación exponencialpi
, y finalmentecat()
imprime el resultado.editar: 1 bytes guardados gracias a Alex A.
fuente
cat(exp(x<-scan())+pi*x)
<-
como lo hice en mi sugerencia en lugar de=
porque, de lo contrario, establece elx
argumentoexp
pero no asigna la variablex
. En una sesión nueva, el código actual fallará.JavaScript (ES6),
3934 bytesGuardado 5 bytes gracias a @ edc65
Toma la entrada como una matriz de números y las salidas en el mismo formato.
Gracias a la reducción, ahora hay tres programas equivalentes de 45 bytes, todos compatibles con ES5:
Las entradas deben ingresarse una a la vez. Presione OK sin ingresar nada para salir.
El tercero destaca una característica interesante en JS: la
with
declaración. Si bien a veces es inseguro de usar (por lo tanto, deshabilitado en modo estricto), todavía se puede usar para guardar la escritura de un nombre de objeto y punto cada vez que necesite acceder a él. Por ejemplo, puedes hacer esto:push
ylength
luego se usan como propiedades dex
, lo que resultará enx
ser[0,1,2,3,4]
.Esto funciona en cualquier objeto, incluso no variables, por ejemplo, puede hacer esto:
charAt
ylength
se llaman como propiedades de la cadena."0x"+x-0
conviertex
de un valor hexadecimal a un número, por lo que estos sonalert
los números del 0 al 15.fuente
M.pow(M.E,x)
esM.exp(x)
por definiciónMath
;) ¡Gracias!with
estaba en desuso.<canvas>
renderizado y (por supuesto) golf.Mathematica,
1110 bytesCon 1 byte guardado gracias a LegionMammal978.
fuente
1.Pi#+E^#&
#
yPi
. Esto se resuelve utilizandoPi#
en lugar de#Pi
. Además,N
solo necesita aplicarsePi#
, no toda la expresión.Pyth,
1113Ahora toma
x
como una lista, por ejemplo[1.25, 2.38, 25]
Anterior (11 bytes):
+*Q.n0^.n1Q
fuente
En serio, 10 bytes
Hex Dump:
Pruébalo en línea
Toma entradas como una lista (ver enlace por ejemplo).
Explicación:
fuente
MATLAB, 15 bytes
fuente
TI-BASIC, 5 bytes
TI-Basic no utiliza bytes ASCII, por lo que cada uno de ellos se registra como un byte en la calculadora:
π
,Ans
,+
,e^(
, yAns
. Se supone que la expresión anterior es la entrada (como{1,2,3}
).fuente
Python 2, 38 bytes (
5249 bytes con matemática)Si tengo que usar el módulo matemático:
La entrada debe ser una lista de números
fuente
If your language does not have π and/or e, use the values 3.142 and 2.718.
... Python tienepi
ye
en elmath
módulo.math
solución usandofrom math import*
for x in l:lambda l:pi*x+e**x
lugar de la comprensión en ambas respuestasMATL , 9 bytes
Esta respuesta utiliza la versión actual del lenguaje ( 3.1.0 ), que es anterior al desafío.
La entrada es un vector que contiene todos los números (lista entre corchetes y separados por espacios, comas de punto y coma), como
[5.3 -7 3+2j]
. Se permiten valores complejos. La salida tiene 15 dígitos significativos.Ejemplo
Explicación
Operaciones directas:
fuente
MATLAB: 70 bytes
Prueba:
Explicación: Hubo varios problemas con el formateo de números.
En primer lugar, la pregunta requiere 3 sig-figs. Matlab no tiene una función incorporada para redondear por sig-figs (solo por decimales), por lo que se requirió la siguiente solución:
floor(log10(pi*x+exp(x))))
calcula el dígito significativo más grande.@(x)(round(pi*x+exp(x),2-floor(log10(pi*x+exp(x))))),x))
toma entradax
y redondea a 3 dígitos significativos.Otro requisito era manejar múltiples entradas. El código anterior solo puede funcionar con un solo número. Para mitigar esto, usamos
arrayfun
para evaluar la función para cada elemento vectorial.El último problema, Matlab muestra el resultado de arrayfun con su propio redondeo que conduce a salidas como las
1.0e+04 * 0.0006
que viola el requisito de 3 sig-fig. Entonces,num2str
se usó para convertir la matriz enchar
formato.Matlab es bueno para el análisis numérico, pero, francamente, es una mierda cuando se trata de un formato de números fino.
UPD: bueno, eso es vergonzoso que confundí
con
De todos modos, dejaré mi respuesta en este formulario porque la solución de Matlab de 15 bytes ya está dada por @costrom
fuente
format longg
era necesario antes de ejecutar el código, caería 3/4 de la longitud aquíJulia, 12 bytes
Esta es una función anónima que acepta una matriz y devuelve una matriz de flotantes. Para llamarlo, asígnele un nombre, p. Ej.
f=x->...
.Julia tiene constantes incorporadas
π
ye
para, lo has adivinado, π y e, respectivamente. El.^
operador es la exponenciación vectorizada.fuente
Japt, 12 bytes
Toma la entrada como números separados por espacios. Pruébalo en línea!
Cómo funciona
fuente
J, 4 bytes
Igual que APL
○+*
, peropi times
se llama a la función de Jo.
, que es un byte más.fuente
Haskell,
2219 bytesPruébalo en línea!
Editar: -3 bytes gracias a @ H.PWiz
fuente
Par , 8 bytes
Acepta entrada como
(1 2 3)
Explicación
fuente
Raqueta , 27 bytes
cuando se coloca en la posición de función de una expresión:
fuente
CJam, 13 bytes
Toma la entrada como una matriz separada por espacios (p
[1 2 3]
. Ej .). Pruébalo en línea.Explicación
fuente
Reng v.3.3, 53 bytes
Sin competencia porque es posterior al desafío, pero bueno, no gana ningún premio por brevedad. : P Pruébalo aquí!
Línea 0
Aquí hay una vista de la pila en la línea 0:
ø
luego pasa a la siguiente enésima línea. Cuando0
se ingresa, esto va directamente a la línea 2. De lo contrario, vamos a la línea 1.Línea 1
Esto multiplica E
i
veces, que ese^i
. Decrementamos el contador (inicialmenteI
), multiplicamos el STOS (nuestrae
potencia de funcionamiento ) por E, volvemos al contador y hacemos esto (i'
es el contador actual):ø
entonces hace una de dos cosas. Si el contador no es 0, entonces vamos a la "siguiente" línea 0, es decir, el comienzo de la línea actual. Si es cero, entonces0e
produce 1 y pasa a la siguiente línea.Línea 2
$
deja caer el mostrador (¡EN EL PISO!).+
agrega los dos primeros resultados,n
genera ese número y~
sale del programa.Caso 1: la entrada es 0. El TOS es 1 ("e ^ 0") y el STOS es 0 (pi * 0). Agregarlos produce el resultado correcto.
Caso 2: la entrada no es 0. El resultado es el esperado.
fuente