Ne serait-ce pas bien si les fonctions de programmation pouvaient être inversées, tout comme la fonction mathématique qu'elles implémentent?
Écrivez une fonction (ou un programme) qui prend une entrée x
sous n'importe quelle forme, qui sort ln(x)
.
Lorsque les octets du programme sont réorganisés / inversés de sorte que le premier octet soit maintenant le dernier octet, il doit prendre une entrée x
sous n'importe quelle forme et sortir à la e^x
place.
- Votre réponse doit contenir au moins 3 chiffres significatifs corrects.
- Les approximations sont bonnes, tant qu'elles ont au moins 3 chiffres significatifs corrects.
- Votre code doit être dans le même langage de programmation en avant et en arrière.
Disons que ce programme implémente ln(x)
:
abc你好
Ensuite, ce programme doit implémenter e^x
:
\xBD\xA5\xE5\xA0\xBD\xE4cba
Étoile d'or si vous utilisez une langue sans support flottant.
C'est une forme étrange de golf de code, donc le programme le plus court l'emporte.
code-golf
arithmetic
source-layout
Filip Haglund
la source
la source
?
, qui a utilisé la méthode sécante.Réponses:
Haskell, 11 octets
et dans l'ordre inverse:
Cela fonctionne sans l'astuce "commenter". Au lieu de cela, chaque version définit une fonction supplémentaire, mais inutilisée (
pxe
/gol
).la source
gol=f
.APL, 3 octets
Ceci est un train de fonctions. Monadiques
*
retourse^x
, monades⍟
retoursln(x)
.⊣
est une fonction dyadique qui renvoie son argument de gauche. Ainsi,*⊣⍟
équivaut à juste*
et l'inverse⍟⊣*
équivaut à juste⍟
.la source
Gelée,
54 octetsOui, ma première réponse Jelly. :) L'entrée se fait via un argument de ligne de commande.
Jelly a sa propre page de codes, donc chaque caractère est d'un octet.
Essayez-le en ligne!
Renversé:
Essayez-le en ligne!
Explication
Le
Æ
seul est un jeton non reconnu, il agit donc de la même manière qu'un saut de ligne. Cela signifie que dans les deux cas, le lien principal est uniquementÆl
ouÆe
qui est le caractère intégré à 2 caractères pourexp()
ouln()
et est par défaut effectué sur le premier argument de ligne de commande.la source
Javascript, 18 octets
la source
Math.ln||pxe.htaM
fonctionnera probablement aussi.Sérieusement, 5 octets
Input, ln, output, puis exp sur une pile vide (ne fait rien) et input (ne fait rien car l'entrée est épuisée). Essayez-le en ligne!
Renversé:
Essayez-le en ligne!
la source
Julia, 7 octets
Il s'agit d'une fonction anonyme. Affectez-le à une variable pour l'appeler. Évalue les fonctions intégrées
log
ouexp
ajoute un commentaire.la source
Mathematica, 19 octets
Renversé:
C'était intéressant pour le golf! Mathematica n'a pas de commentaires de ligne / terminaisons de chaîne implicites, donc je ne pouvais pas prendre la route simple. Au lieu de cela, je le fait que
0 + x == x
,0 x == 0
et que1 x == x
, peu importe ce quix
est! Essai:la source
Python2, 73 octets
io: stdin / stdout
inverse:
la source
__import__("math").
au lieu deCJam, 11 octets
Testez-le ici.
Renversé:
Testez-le ici.
Fondamentalement, la même astuce de commentaire que la réponse Python de l'OP.
e#
commence un commentaire.rd
lit l'entrée etml
oume
calcule le logarithme ou l'exponentielle.la source
Brachylog , 3 octets
Essayez-le en ligne!
Initialement, j'avais espéré l'utiliser
~*
, mais bien que*~
calculee^x
et ignore avec succès le tilde de fin,~*
échoue pour toutes les entrées entières et frappe un débordement flottant sur la plupart des entrées non entières.Attaquants:
En arrière:
Cela utilise le prédicat d'identité car, bien que les tildes de fin soient tolérés, les indices principaux ne le sont pas. (S'ils l'étaient, la réponse Brachylog serait
*₁
seule, ce qui est juste la fonction normale pour le journal naturel.)la source
Vitsy, 5 octets
Il s'agit d'un programme qui se termine en cas d'erreur.
Ce programme se termine sur une erreur avec ln (entrée) sur la pile.
Essayez-le en ligne! (notez que j'ai mis
N
pour avoir une sortie visible)Alors c'est l'inverse:
Ce programme se termine sur une erreur avec e ^ (entrée) sur la pile.
Essayez-le en ligne!
la source
Octo Guacamole flou, 7 octets
non compétitif, FOG est plus récent que le défi
C'est l'équivalent d'une fonction dans FOG. Il suppose que l'entrée se trouve sur la pile. Cela peut être attribué à une fonction par le code
"EZO@pZE""f"o
, oùf
est le nom à caractère unique que vous souhaitez attribuer. Ensuite, utilisez-le comme n'importe quelle autre commande. Exemple:"EZO@pZE"'f'o^f
.Explication:
Renversé:
la source
Matl, 5 octets
Yl
: logZe
: exp%
: commentairela source
Pyth, 12 octets
Trouve
ln(input())
Trouve
e^input()
Les espaces arrêtent l'impression implicite des chaînes, chaque version la calcule puis crée une chaîne avec les caractères restants.
ln(x)
mode icie^x
mode icila source
𝔼𝕊𝕄𝕚𝕟, 8 caractères / 10 octets
Try it here (Firefox only).Try reverse here (Firefox only).
Seulement 2 builtins séparés par un commentaire.
la source
Jolf, 9 octets
Programme 1:
exp
d'entréeProgramme 2:
ln
d'entréeDes points bonus pour être un palindrome insensible à la casse? Essayez-le ici!
la source
J, 8 octets
Le logarithme népérien est
^.
exponentiel^
. Le problème est.
que vous ne pouvez modifier qu'un verbe valide, sinon une erreur d'orthographe se produira. Ainsi, nous ne pouvons pas utiliser l'astuce d'argument de gauche dans la réponse APL,^.[^
car elle provoquerait une erreur lorsqu'elle est inversée, car elle^[.^
crée un verbe invalide. Donc, nous devons utiliser des commentaires; maisNB.
c'est si long :( Heureusement, ils se terminent tous les deux par.
, alors & ldots; il y a ça.Logarithme:
Exponentiel:
Vous pouvez les saisir vous-même en ligne !
la source
Java 8,
19818230 octetsEssayez-le en ligne.
et inversé:
Essayez-le en ligne.
Utilise l'astuce de commentaire (
//
) avec les fonctions intégrées pourMath.log
etMath.exp
.la source
Enchantements runiques , 9 octets
Essayez-le en ligne!
Un programme impie et inintéressant.
@
assure la terminaison du point d'entrée implicite à gauche, tout ce qui suit n'est pas exécuté. J'ai vraiment essayé de réutiliser les instructions'
orA
, mais en vain, même avec des programmes de plus grande taille. Le point d'entrée explicite requis pour les programmes multilignes l'exclut essentiellement.la source