¿No sería genial si las funciones de programación pudieran invertirse, al igual que la función matemática que implementan?
Escriba una función (o programa) que tome una entrada x
en cualquier forma, que salga ln(x)
.
Cuando los bytes del programa se reordenan / invierten de modo que el primer byte ahora es el último, debe tomar una entrada x
en cualquier forma y, en su e^x
lugar, la salida .
- Su respuesta debe tener al menos 3 cifras significativas correctas.
- Las aproximaciones están bien, siempre que tengan al menos 3 cifras significativas correctas.
- Su código debe estar en el mismo lenguaje de programación, tanto hacia adelante como hacia atrás.
Digamos que este programa implementa ln(x)
:
abc你好
Entonces este programa tiene que implementar e^x
:
\xBD\xA5\xE5\xA0\xBD\xE4cba
Estrella dorada si usas un idioma sin soporte flotante.
Esta es una forma extraña de código de golf, por lo que gana el programa más corto.
code-golf
arithmetic
source-layout
Filip Haglund
fuente
fuente
?
, que utiliza el método secante.Respuestas:
Haskell, 11 bytes
y en orden inverso:
Esto funciona sin el truco del "comentario". En cambio, cada versión define una función adicional, pero no utilizada (
pxe
/gol
).fuente
gol=f
.APL, 3 bytes
Este es un tren funcional. Monádicos
*
rendimientose^x
, monádicos⍟
rendimientosln(x)
.⊣
es una función diádica que devuelve su argumento izquierdo. Por lo tanto,*⊣⍟
es equivalente a justo*
, y lo contrario⍟⊣*
es equivalente a justo⍟
.fuente
Jalea,
54 bytesYay, mi primera respuesta de Jelly. :) La entrada se realiza mediante un argumento de línea de comandos.
Jelly tiene su propia página de códigos, por lo que cada carácter es un byte.
Pruébalo en línea!
Invertido:
Pruébalo en línea!
Explicación
Por
Æ
sí solo es un token no reconocido, por lo que actúa igual que un salto de línea. Eso significa que, en cualquier caso, el enlace principal es soloÆl
oÆe
cuál es el incorporado de 2 caracteres paraexp()
oln()
y por defecto se realiza en el primer argumento de línea de comandos.fuente
Javascript, 18 bytes
fuente
Math.ln||pxe.htaM
probablemente también funcionará.En serio, 5 bytes
Input, ln, output, luego exp en una pila vacía (no hace nada) y input (no hace nada ya que la entrada está agotada). Pruébalo en línea!
Invertido:
Pruébalo en línea!
fuente
Julia, 7 bytes
Esta es una función anónima. Asignarlo a una variable para llamarlo. Evalúa a incorporados
log
oexp
más un comentario.fuente
Mathematica, 19 bytes
Invertido:
¡Esto fue interesante para el golf! Mathematica no tiene comentarios de línea / terminaciones de cadena implícitas, por lo que no pude tomar la ruta simple. En su lugar, he utilizado el hecho de que
0 + x == x
,0 x == 0
y que1 x == x
, sin importar lo quex
es! Pruebas:fuente
Python2, 73 bytes
io: stdin / stdout
inverso:
fuente
__import__("math").
lugar deCJam, 11 bytes
Pruébalo aquí.
Invertido:
Pruébalo aquí.
Básicamente el mismo truco de comentarios que la respuesta de Python del OP.
e#
comienza un comentariord
lee la entrada y /ml
ome
calcula el logaritmo o exponencial.fuente
Brachylog , 3 bytes
Pruébalo en línea!
Inicialmente, esperaba usar
~*
, pero aunque*~
calculae^x
e ignora con éxito la tilde final,~*
falla en todas las entradas enteras y alcanza un desbordamiento flotante en la mayoría de las entradas no enteras.Hacia adelante:
Hacia atrás:
Esto utiliza el predicado de identidad porque, aunque se toleran tildes finales, los subíndices iniciales no lo son. (Si lo fueran, la respuesta de Brachylog estaría
*₁
sola, que es solo la construcción normal para el registro natural).fuente
Vitsy, 5 bytes
Este es un programa que sale por un error.
Este programa sale por un error con ln (entrada) en la pila.
Pruébalo en línea! (tenga en cuenta que he puesto
N
a tener salida visible)Entonces es inverso:
Este programa sale por un error con e ^ (entrada) en la pila.
Pruébalo en línea!
fuente
Fuzzy Octo Guacamole, 7 bytes
no compite, FOG es más nuevo que el desafío
Este es el equivalente de una función en FOG. Se supone que la entrada está en la pila. Esto se puede asignar a una función por el código
"EZO@pZE""f"o
, dondef
hay cualquier nombre de carácter único que desee asignar. Luego úsalo como cualquier otro comando. Ejemplo:"EZO@pZE"'f'o^f
.Explicación:
Invertido:
fuente
Matl, 5 bytes
Yl
: logZe
: exp%
: comentariofuente
Pyth, 12 bytes
Encuentra
ln(input())
Encuentra
e^input()
Los espacios detienen la impresión implícita de cadenas, cada versión lo calcula y luego crea una cadena con los caracteres restantes.
ln(x)
modo aquíe^x
modo aquífuente
𝔼𝕊𝕄𝕚𝕟, 8 caracteres / 10 bytes
Try it here (Firefox only).Try reverse here (Firefox only).
Solo 2 construcciones separadas por un comentario.
fuente
Jolf, 9 bytes
Programa 1:
exp
de entradaPrograma 2:
ln
de entrada¿Puntos de bonificación por ser un palíndromo que no distingue entre mayúsculas y minúsculas? Pruébalo aquí!
fuente
J, 8 bytes
El logaritmo natural es
^.
, y exponencial^
. El problema es.
que solo puede modificar un verbo válido, de lo contrario, se producirá un error ortográfico. Por lo tanto, no podemos usar el truco del argumento izquierdo en la respuesta APL, porque^.[^
podría causar un error cuando se invierte, ya que^[.^
crea un verbo no válido. Entonces, debemos usar comentarios; peroNB.
es tan largo :( Afortunadamente, ambos terminan con.
, así que & ldots; ahí está.Logaritmo:
Exponencial:
¡Puedes ingresarlos por ti mismo en línea !
fuente
Java 8,
19818230 bytesPruébalo en línea.
y revertido:
Pruébalo en línea.
Utiliza el truco de comentarios (
//
) con funciones integradas paraMath.log
yMath.exp
.fuente
Encantamientos rúnicos , 9 bytes
Pruébalo en línea!
Un programa impío y sin interés.
@
asegura la terminación del punto de entrada implícito a la izquierda, todo lo que sigue no está ejecutado. Intenté realmente reutilizar las instrucciones'
oA
, pero fue en vano, incluso en programas de mayor tamaño. El punto de entrada explícito requerido para programas de líneas múltiples esencialmente lo excluye.fuente