如何解决如何在运行时从python中的输入字符串定义函数?
我正在尝试解决UVA 11036。它需要在运行时定义函数。
例如:我必须将输入(2*x + 7) % N
作为字符串,并在运行时定义一个函数,例如func = lambda x : (2*x + 7) % N
才能对其进行处理。请帮助我找出如何在运行时将字符串转换为函数。
解决方法
似乎令人着迷,所以如果要在C ++中解决它,有两种方法。困难的方法是使用诸如Shunting-yard algorithm之类的算法来实现小型数学解析器。或者,相反,如果您熟悉C ++中的库链接,则最好使用数学表达式解析器库。 Internet上有很多图书馆。在这里,我建议如下之一。
mathematical expression library我个人已经对其进行了测试,显然速度很快。您可以在GitHub中克隆source code
无论如何,您无法使用 lambda函数解决这种情况,因为输入是一个数学表达式,您应该解析并计算运行时。
如果您使用python,请参见this post。
,您可以使用exec从字符串定义函数。但是,这允许将任何代码注入您的程序。但这只是解决挑战的方法,所以没问题。
exec 'func = lambda x : '+input
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。