免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: sosflyer
打印 上一主题 下一主题

perl进行数学计算求教 [复制链接]

论坛徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30数据库技术版块每日发帖之星
日期:2015-12-01 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43IT运维版块每日发帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27狮子座
日期:2014-05-12 11:00:00辰龙
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34IT运维版块每日发帖之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之新疆
日期:2016-06-07 14:10:01
11 [报告]
发表于 2012-12-03 13:58 |只看该作者
回复 10# sosflyer
提供一个简单思路,就是用正则
先识别出变量(比如字母)和运算符
把变量移到左边,常数移到右边
进行符号变换
然后用eval进行计算
最后可能还要/变量的系数


   

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
12 [报告]
发表于 2012-12-03 14:13 |只看该作者
本帖最后由 jason680 于 2012-12-03 14:46 编辑

回复 1# sosflyer

How about this way, change $x to i, and equal "=" to subtraction "-"

$ perl -e 'use Math::Complex; $math=1+2+i-10;;print "Ans=" . -Re($math)/Im($math)'
Ans=7

$ perl -e 'use Math::Complex; $math=1+2+(2+3*i)*5-10;;print "Ans=" . -Re($math)/Im($math)'
Ans=-0.2

$ cat function.pl

use strict;
use warnings;

use Math::Complex;

while(<DATA>){
  my $sAns = get_answer($_);
  print "\$x = $sAns\n";
}
sub get_answer{
  s/\$x/i/g;
  s/=/-(/;

  $_ = 'my $x=' . $_ . ');return -Re($x)/Im($x);';
  eval "$_";
}

__DATA__
1 + 2 + $x = 10
1 + 2 + $x = 1+ 2* $x
1+2+(2+3*$x)*5 = 10

$ perl function.pl
$x = 7
$x = 2
$x = -0.2

论坛徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30数据库技术版块每日发帖之星
日期:2015-12-01 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43IT运维版块每日发帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27狮子座
日期:2014-05-12 11:00:00辰龙
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34IT运维版块每日发帖之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之新疆
日期:2016-06-07 14:10:01
13 [报告]
发表于 2012-12-03 14:31 |只看该作者
回复 12# jason680
利用复数的计算
真是巧妙啊。
学习了。
是不是某本算法书里面提过?



   

论坛徽章:
0
14 [报告]
发表于 2012-12-03 14:37 |只看该作者
回复 12# jason680


    厉害,膜拜{:3_190:}

论坛徽章:
0
15 [报告]
发表于 2012-12-03 15:50 |只看该作者
回复 12# jason680


     非常巧妙啊!

论坛徽章:
0
16 [报告]
发表于 2012-12-06 11:18 |只看该作者
哇靠。12楼那个真是厉害。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP