Pour une fois, je faisais un vrai travail, mettant à jour l'ancien code et tombais sur une expression équivalente à ce qui serait écrit comme πx + e x dans de bonnes mathématiques à l'ancienne. J'ai pensé qu'il serait possible de l'écrire plus court que ce qu'il était écrit dans la langue avec laquelle je travaille (APL), et présente donc ce défi très simple:
Écrivez une fonction ou un programme qui (par tous les moyens) accepte zéro ou plusieurs nombres, et renvoie (par tous les moyens) le résultat de l'expression ci-dessus pour x = chacun des nombres donnés avec au moins 3 chiffres significatifs pour chaque résultat.
Si votre langue n'a pas π et / ou e , utilisez les valeurs 3.142 et 2.718.
Le scoring est un nombre d'octets, donc faites précéder votre réponse # LanguageName, 00 bytes
.
Les trous de boucle standard ne sont pas autorisés.
Edit: Maintenant , la solution que je suis venu avec, ○+*
, a été trouvé . Le code d'origine était (○x)+*x
.
Réponses:
Dyalog APL, 3 caractères
Comme une phrase tacite.
Monadic
○
multiplie son argument par π, monadic*
est la fonction exponentielleexp
.○+*
est un train tel qui(○+*)ω
est égal à(○ω)+(*ω)
. Puisque c'est APL, la phrase fonctionne pour les arguments de forme arbitraire, e. g. vous pouvez passer un vecteur de longueur arbitraire.La même solution est possible en J comme
o.+^
avec l'o.
être○
et l'^
être*
.la source
Emotinomicon, 48 octets / 13 caractères
Je le fais, non pas parce qu'il est court, mais parce que c'est amusant. Essayez-le ici. Vous devrez le copier + coller dans la zone de texte.
Explication:
Voici le programme dans son environnement natif, le téléphone portable:
la source
cat
?R,
2524 octetsEst-ce ceci? Il obtient l'entrée de l'utilisateur, l'affecte à
x
, calcule son exponentielle, le multipliepi
et enfincat()
imprime le résultat.edit: 1 octets sauvés grâce à Alex A.
la source
cat(exp(x<-scan())+pi*x)
<-
comme je l'ai fait dans ma suggestion plutôt que=
parce que sinon, il définit l'x
argument pourexp
mais n'affecte pas la variablex
. Dans une nouvelle session, le code actuel échouera.JavaScript (ES6),
3934 octets5 octets enregistrés grâce à @ edc65
Prend les entrées sous forme de tableau de nombres et les sorties dans le même format.
Grâce à la réduction, il existe désormais trois programmes équivalents de 45 octets, tous compatibles ES5:
Les entrées doivent être entrées une à la fois. Appuyez sur OK sans rien entrer pour quitter.
La troisième met en évidence une caractéristique intéressante de JS: la
with
déclaration. Bien que parfois dangereux à utiliser (donc désactivé en mode strict), il peut toujours être utilisé pour enregistrer la saisie d'un nom d'objet et d'une période chaque fois que vous devez y accéder. Par exemple, vous pouvez faire ceci:push
etlength
sont ensuite utilisés comme propriétés dex
, ce qui se traduira parx
être[0,1,2,3,4]
.Cela fonctionne sur tout objet, même les non-variables, donc par exemple, vous pouvez le faire:
charAt
etlength
sont appelés en tant que propriétés de la chaîne."0x"+x-0
convertitx
d'une valeur hexadécimale en nombre, donc cealert
sont les nombres de 0 à 15.la source
M.pow(M.E,x)
estM.exp(x)
par définitionMath
;) Merci!with
c'était obsolète.<canvas>
rendu et (bien sûr) le golf.Mathematica,
1110 octetsAvec 1 octet enregistré grâce à LegionMammal978.
la source
1.Pi#+E^#&
#
etPi
. Ceci est résolu en utilisantPi#
à la place de#Pi
. En outre, ilN
suffit de l'appliquerPi#
, pas à l'expression entière.Pyth,
1113Prend maintenant
x
comme une liste, par exemple[1.25, 2.38, 25]
Précédent (11 octets):
+*Q.n0^.n1Q
la source
Sérieusement, 10 octets
Vidage hexadécimal:
Essayez-le en ligne
Prend les entrées sous forme de liste (voir le lien par exemple).
Explication:
la source
MATLAB, 15 octets
la source
TI-BASIC, 5 octets
TI-BASIC n'utilise pas octets ASCII, donc chacun d' entre eux est stocké comme un octet dans la calculatrice:
π
,Ans
,+
,e^(
etAns
. Il suppose que l'expression précédente est l'entrée (comme{1,2,3}
).la source
Python 2, 38 octets (
5249 octets avec mathématiques)Si je dois utiliser le module mathématique:
L'entrée doit être une liste de nombres
la source
If your language does not have π and/or e, use the values 3.142 and 2.718.
... Python api
ete
dans lemath
module.math
solution en utilisantfrom math import*
for x in l:lambda l:pi*x+e**x
place de la compréhension dans les deux réponsesMATL , 9 octets
Cette réponse utilise la version actuelle du langage ( 3.1.0 ), qui est antérieure au défi.
L'entrée est un vecteur contenant tous les nombres (liste entourée de crochets et séparés par des espaces, virgules de points-virgules), tels que
[5.3 -7 3+2j]
. Les valeurs complexes sont autorisées. La sortie comporte 15 chiffres significatifs.Exemple
Explication
Opérations simples:
la source
MATLAB: 70 octets
Tester:
Explication: La mise en forme des nombres a rencontré plusieurs problèmes.
Tout d'abord, la question nécessite 3 sig-figs. Matlab n'a pas de fonction intégrée pour l'arrondi par sig-figs (uniquement par des décimales), donc la solution de contournement suivante était requise:
floor(log10(pi*x+exp(x))))
calcule le plus grand chiffre significatif.@(x)(round(pi*x+exp(x),2-floor(log10(pi*x+exp(x))))),x))
prend l'entréex
et arrondit à 3 chiffres significatifs.Une autre exigence était de gérer plusieurs entrées. Le code ci-dessus ne peut fonctionner qu'avec un seul numéro. Pour atténuer cela, nous utilisons
arrayfun
pour évaluer la fonction de chaque élément vectoriel.Le dernier problème, Matlab affiche le résultat de arrayfun avec son propre arrondi qui conduit à des sorties comme celles
1.0e+04 * 0.0006
qui violent l'exigence de 3 sig-fig. Donc, anum2str
été utilisé pour transformer le tableau enchar
format.Matlab est bon pour l'analyse numérique, mais, franchement, il est nul en ce qui concerne la mise en forme fine des nombres
UPD: eh bien, c'est gênant que j'ai confondu
avec
Quoi qu'il en soit, je vais laisser ma réponse sous cette forme car la solution Matlab à 15 octets est déjà donnée par @costrom
la source
format longg
était requis avant d'exécuter le code, vousJulia, 12 octets
Il s'agit d'une fonction anonyme qui accepte un tableau et renvoie un tableau de flottants. Pour l'appeler, donnez-lui un nom, par exemple
f=x->...
.Julia a des constantes intégrées
π
ete
pour - vous l'aurez deviné - π et e, respectivement. L'.^
opératrice est l'exponentiation vectorisée.la source
Japt, 12 octets
Prend les entrées sous forme de nombres séparés par des espaces. Essayez-le en ligne!
Comment ça fonctionne
la source
J, 4 octets
Identique à APL
○+*
, mais lapi times
fonction de J est appeléeo.
, ce qui représente un octet de plus.la source
Haskell,
2219 octetsEssayez-le en ligne!
Edit: -3 octets grâce à @ H.PWiz
la source
Par , 8 octets
Accepte l'entrée en tant que
(1 2 3)
Explication
la source
Raquette , 27 octets
lorsqu'il est mis en position de fonction d'une expression:
la source
CJam, 13 octets
Prend l'entrée comme un tableau séparé par des espaces (par exemple
[1 2 3]
). Essayez-le en ligne.Explication
la source
Reng v.3.3, 53 octets
Non compétitif car il est postérieur au défi, mais bon, ne remportant aucun prix pour sa brièveté. : P Essayez-le ici!
Ligne 0
Voici une vue de la pile de la ligne 0:
ø
passe ensuite à la Nième ligne suivante. Quand0
est entré, cela va directement à la ligne 2. Sinon, nous allons à la ligne 1.Ligne 1
Cela multiplie E
i
fois, ce qui este^i
. Nous décrémentons le compteur (initialementI
), multiplions le STOS (notree
puissance de fonctionnement ) par E, revenons au compteur et faisons ceci (i'
est le compteur actuel):ø
fait alors l'une des deux choses. Si le compteur n'est pas 0, alors nous allons à la "prochaine" 0ème ligne, c'est-à-dire au début de la ligne courante. Si elle est nulle, elle0e
donne 1 et passe à la ligne suivante.Ligne 2
$
laisse tomber le comptoir (AU SOL!).+
ajoute les deux premiers résultats,n
affiche ce nombre et~
quitte le programme.Cas 1: l'entrée est 0. Le TOS est 1 ("e ^ 0") et le STOS est 0 (pi * 0). Leur ajout donne le résultat correct.
Cas 2: l'entrée n'est pas 0. Le résultat est comme vous pouvez vous y attendre.
la source