我喜欢编程,懂每一门语言,但我数学很差。不幸的是,我们学校要求计算机学生必须学一年微积分。下周有个测试,我不知道任何衍生产品的公式!
请帮我找出公式。我需要一个备忘单-一个程序(尽可能短,这样我的老师就不会注意到它),它接受一个表达式(如4*x^3-2)作为输入,并输出导数。(我不在乎输入和输出是否使用命令行参数、STDIN、STDOUT或其他什么,因为无论如何,我都在做所有的计算。)
该测试涵盖以下类型的功能:
-3或8.5x^0.5或x^-70.5^x或7^x (基总是正数)3*x^5或-0.1*0.3^x-5*x^2+10-3^x我的老师总是用完全相同的方式编排他的问题,如上面所示。他也不使用任何分数,如π或e,或真正的大数(大于1,000)。他从不使用括号,而且总是用星号(*)表示乘法。唯一使用的变量总是x。
另一方面,我的老师对答案相当宽容。只要答案是明确的,它们根本不需要像上面所示的那样被简化或格式化。
虽然我可以使用任何语言,但请记住,我无法自己找出派生词。因此,如果程序使用内置函数来处理方程或计算导数,我将无法使用它。
在测试期间,除了备忘单上的程序之外,我将无法访问Internet或任何其他文件。
注意:这个场景完全是虚构的。在现实生活中,欺骗和帮助他人是错误的,永远不应该做。
发布于 2014-06-17 17:37:43
下面是我的regex尝试(使用单个regex和替换回调中的一些逻辑):
i.replace(/(^|[*+-])(\d+|(?:([\d.]+)\^)?(x)(?:\^(-?[\d.]+))?)(?![.*^])/g,(m,s,a,b,x,e)=>s+(b?'ln'+b+'*'+a:e?e--+'*x^'+e:x?1:0))这需要将输入字符串存储在i中,并简单地返回结果。在兼容ECMAScript 6的控制台中试用它(比如火狐)。
https://codegolf.stackexchange.com/questions/31930
复制相似问题