Appliquez une intégrale indéfinie à une chaîne donnée. Les seules règles que vous utiliserez sont définies comme telles:
∫cx ^ (n) dx = (c / (n + 1)) x ^ (n + 1) + C, n ≠ -1 c, C et n sont tous des constantes.
Caractéristiques:
- Vous devez être en mesure d'intégrer des polynômes avec l'une des fonctionnalités possibles:
- Un coefficient, éventuellement une fraction dans le format
(numerator/denominator)
. - Reconnaître que e et π sont des constantes, et dans leur utilisation, être capable de former des fractions ou des expressions les contenant (peut être maintenu dans une fraction comme
(e/denominator)
ou(numerator/e)
, ou, si dans les exposants,x^(e+1)
)- En dehors de ces deux constantes spéciales, tous les coefficients seront des nombres réels rationnels.
- Un exposant, éventuellement une fraction, au format
x^(exponent)
- Les expressions avec
e
ouπ
en elles, à part elles-mêmes, ne seront pas dans les exposants. (vous n'aurez pas à intégrer des trucs commex^(e+1)
, mais vous pourriez intégrerx^(e)
)
- Les expressions avec
- Peut utiliser des variables non x 1 caractère (c.-à-d.
f
)- C'est uniquement pour les plages ASCII 65-90 et 97-122.
- Vous n'avez pas besoin d'utiliser de règle de chaîne ou d'intégrer
x^(-1)
.
- Un coefficient, éventuellement une fraction dans le format
- La sortie doit avoir un remplissage (séparation entre les termes, c.-à-d
x^2 + x + C
. - Si vous ne savez pas comment intégrer les fonctionnalités ci-dessus, le programme devrait s'imprimer
"Cannot integrate "+input
. - Ce doit être un programme complet.
Bonus:
- -10% si vous imprimez les "jolis" exposants formatés pour le démarque (au lieu de
x^2
,x<sup>2</sup>
). - -10% si vous imprimez l'équation (ie
∫xdx = (1/2)x^2 + C
)
Exemples:
Contribution:
x
Sortie:
(1/2)x^(2) + C
Contribution:
-f^(-2)
Sortie:
f^(-1) + C
Contribution:
(1/7)x^(1/7) + 5
Sortie:
(1/56)x^(8/7) + 5x + C
Contribution:
πx^e
Sortie:
(π/(e+1))x^(e+1) + C
Contribution:
(f+1)^(-1)
Sortie:
Cannot integrate (f+1)^(-1)
e
etπ
, les seules valeurs des coefficients seront des nombres rationnels? C'est à dire qu'il n'est pas nécessaire de gérer des polynômes multivariables? 2. Lorsque vous dites " variables non x 1 caractère ", limitez-vousa-zA-Z
ou prévoyez-vous d'inclure d'autres plages Unicode?ln(x) + C
pour une entrée dex^(-1)
?x^(e+1)
ce ne sera pas un intégrant, mais cela peut être le résultat d'une intégration. 2) Il n'y aura pas de variables à plusieurs lettres. 3) Oui. 4) Oui, mais ça devrait l'être(1/56)x^(1/7+1) + C
(j'ai fait une erreur dans les exemples).Réponses:
Mathematica 478 * 0,9 = 430,2
Cela crée une véritable fonction φ qui prend une chaîne en entrée. (Est-ce que cela compte comme un programme complet pour Mathematica?)
La version non golfée serait:
Notez que les lettres grecques sont nécessaires pour pouvoir utiliser toutes les autres lettres dans l'entrée.
la source
MATLAB, 646 x 0,9 = 581,4 octets
Il s'agit actuellement d'un travail en cours utilisant des MATLABs dotés de capacités d'intégration symbolique. Actuellement, les exigences ont été mises à jour de sorte que le format correspond désormais aux exigences. Il se qualifie également pour le deuxième bonus de -10%.
Si quelqu'un veut intervenir et suggérer des moyens de corriger la sortie, ou utiliser ce code comme base pour une autre réponse, n'hésitez pas :). Si je peux trouver le temps, je vais continuer à jouer avec et voir si je peux penser à reformater la sortie.
Mise à jour: Ok, donc après un peu plus de travail, voici comment le code se présente actuellement. Il s'agit toujours d'un travail en cours, mais qui se rapproche désormais de la sortie requise.
Voici quelques exemples de ce qu'il produit actuellement. Comme vous pouvez le voir, ce n'est pas tout à fait vrai, mais cela se rapproche.
Contributions:
Les sorties:
la source
x^(8/7)/8
que, bien que mathématiquement correct, il ne se présente pas sous la forme souhaitée(1/8)x^(8/7)
.