Pour ceux qui ne le savaient pas, Sigma est une lettre grecque qui est largement utilisée en mathématiques comme signe de sommation. Étant donné une chaîne représentant une expression dépendant de que nous noterons , calculez la somme des résultats pour , pour chaque . En résumé, vous devriez trouver tel que:E ( k ) E ( k ) k ∈ { 1 , 2 , 3 , 4 , 5 } S
Un exemple d'expression:
Spécifications
- Vous avez la garantie:
- que l'expression est valide, donc elle ne contient aucune erreur, et qu'elle dépend de la syntaxe choisie (ex: si vous ne supportez que
2*k
, il n'y en aura pas2k
) - d'avoir uniquement des valeurs définies parmi vos résultats, donc aucune valeur comme
1/0
,inf
ounan
n'apparaîtra
- que l'expression est valide, donc elle ne contient aucune erreur, et qu'elle dépend de la syntaxe choisie (ex: si vous ne supportez que
- Vous pouvez supposer que l'expression ci-dessus correspond aux limites du langage de programmation de votre choix, de sorte qu'elle n'entraînera pas de débordements ou d'autres erreurs liées aux limites
- Tout autre caractère ASCII non blanc au lieu de
k
peut être choisi - Votre programme doit prendre en charge les opérations suivantes:
- addition (
+
,plus()
,add()
,sum()
) - soustraction (
-
,minus()
,subtract()
) - exponentiation (
**
,^
,pow()
ou autres, il convient de préciser), avec l' aide de bases négatives et des exposants - racine carrée sous la forme de
sqrt(k)
,k^0.5
,k**0.5
ou cependant autre que vous souhaitez - Multiplication et division
- addition (
- La soumission peut être soit un programme complet soit une fonction, tout en mentionnant son utilisation
- Tout espace de fin / de début est autorisé lors de la sortie
- Précision minimale: 2 décimales
Cas de test (avec k
)
+---------------+--------------+
| Input = E(k) | Output |
|---------------+--------------|
|2*k | 30 |
|---------------+--------------|
|sqrt(k) | 8.38 | (* with minimum decimal precision)
|---------------+--------------|
|k+k/2+k**2 | 77.5 |
|---------------+--------------|
|k**2 | 55 |
+---------------+--------------+
Le score sera le nombre d'octets (des drapeaux source + compilateur). La soumission valide ayant obtenu le score le plus bas l'emporte, tout en prenant note que ces failles sont strictement interdites. Voici un pseudo-code Python, pour rendre les choses plus claires.
code-golf
math
number
arithmetic
M. Xcoder
la source
la source
plus()
au lieu de+
? (Même questions pour tous les autres opérateurs aussi)plus()
,add()
,sum()
et équivalents sont autorisés. Voir l'édition.N N2/+N2**+
.E(x)
@ComradeSparklePonyRéponses:
Gelée , 5 octets
Essayez-le en ligne!
Entrez une chaîne monadique Jelly valide (je les ai golfées dans mon lien).
Comment ça marche
la source
Mathematica,
171413 octetsMerci à Ian Miller d'avoir économisé 3 octets.
Merci à LegionMammal978 pour avoir économisé 1 octet.
L'entrée doit être une expression réelle contenant
k
, par exemple:la source
1,
dedans pourSum
.N@#~Sum~{k,5}&
Python 3 ,
4037 octets3 octets grâce à Arnauld.
Astuces de portée Eval \ o /
Essayez-le en ligne!
Utilise
k**0.5
au lieu desqrt(k)
.la source
JavaScript (ES7),
3130 octetsUtilise
k**0.5
poursqrt(k)
.Essayez-le en ligne!
la source
05AB1E ,
876 octetsEssayez-le en ligne!
L' entrée est en notation postfixe, et utilise la variable N . 05AB1E est un langage basé sur la pile, donc seule la notation postfixe fonctionne.
Format de
E(N)
: écrivez le (s) nombre (s) avec lequel vous souhaitez effectuer l'opération, puis écrivez le signe de l'opération. Par exemple,3+4
serait3 4+
,3*4+2*3
serait3 4* 2 3* +
. Notez également que cela utilise à lat
place desqrt
, etm
au lieu de**
, cesqrt(N)
serait le casNt
.Explication:
la source
Octave ,
50463129 octetsEssayez-le en ligne!
L'exponentiation est indiquée par le signe d'insertion
.^
et la multiplication est indiquée par.*
.Cela déclare une fonction anonyme qui prend en argument
d
. Ilk
est égal à la plage1:5
et additionne l'évaluationd
et la renvoie.la source
Japt , 10 octets
La chaîne d'entrée doit avoir une variable en majuscule
K
.sqrt(K)
devrait être entré commeK**0.5
.Essayez-le en ligne!
Explication
eval
la portée n'a pas fonctionné en ma faveur; a dû redéfinir la variable de comptage enX
tant que variable globaleK
.la source
Ox
directementeval(
pourrait aider à ça ...Octave,
2523 octetsEssayez-le en ligne!
L'exponentiation est désignée par
.^
la source
APL (Dyalog) , 9 octets
Essayez-le en ligne!
L'addition est
+
, la soustraction est-
, la multiplication est×
, la division est l'÷
exponentiation est*
et l'exécution est de droite à gauche, donc utilisez()
pour grouper les expressions.L'entrée est en termes de
k
.Explication
Et voici une solution qui prend des trains en entrée (comme la réponse Jelly):
+/(⍎⎕)¨⍳5
.la source
Lisp commun, 55 octets
Essayez-le en ligne
version différente, plus longue (58 octets) - commence à devenir plus courte si vous faites la somme de 1 à 7.
encore une autre méthode plus longue (
6564 octets) - ne définit pas la fonction - insère simplement votre expression dans une boucle. Devrait se raccourcir pour des sommes plus importantes.la source
Swift,
202184 octetsPour une raison quelconque, cela ne fonctionnera que localement :(.
Voici une explication de ce que je fais:
Merci à @Mr. Xcoder pour économiser 15 octets!
la source
TI-Basic, 12 octets
Appelez avec
"string":prgmNAME
, oùstring
est une expression TI-Basic valide deK
.la source
Ans->u:sum(u(1,5
Empilé , 16 octets
Essayez-le en ligne!
5~>
est une plage de 1 à 5 incluive.2/
fait un func dyadique,"
est par paire, et!
est exécuté. Cela mappe ainsi la plage[1, 5]
avec l'entrée, qui est ensuite évaluée après avoir défini le membre de la plage à êtrek
. Ensuite, les résultats sont additionnés.la source
dc ,
3124 octetsL'entrée doit être indiquée en notation polonaise inversée (également appelée notation postfixée) et placée entre crochets (
[]
) avec:K
remplacerk
comme paramètre;+
représentant l'addition;-
représentant la soustraction et_
suivi par tout nombre représentant un nombre négatif;*
représentant la multiplication;/
représentant la division;^
représentant l'exponentiation;v
représentant la racine carrée.Par exemple,
-2*k+k+3*k**2+k**0.5-k/2
serait entré comme[_2K*K+K2^3*+Kv+K2/-]
. Cela tire avantage du fait qu'ilK
s'agit d'unedc
commande qui renvoie la précision actuelle (initialement définie sur1
). Par conséquent, à la fin, cela renvoie la sortie avec une précision de6
.Essayez-le en ligne!
la source
R , 35 octets
Essayez-le en ligne!
La liaison TIO comprend également une solution fonctionnelle (38 octets)
la source
Tcl , 58 octets
Essayez-le en ligne!
Si cela ne fonctionnait qu'avec des entiers, je pourrais le jouer davantage!
la source