搜索
查看: 1338|回复: 3

解方程

[复制链接]

2

主题

5

帖子

29

积分

新手入门

Rank: 1

积分
29
发表于 2014-1-16 19:50:04 | 显示全部楼层 |阅读模式
//简单方程例子。
/*
5+7=?
8-1=?
6*3=?
8/2=?

7+?=15
3-?=1
2*?=12
8/?=4

?+4=9
?-8=10
?*6=18
?/2=20

*/

//写了个函数

function yunsuan(str){
   
if(string.find(str,"=\?")){
        str=string.replace(str,
"=\?","")
        
return str;
    }
   
   
if(string.find(str,"+\?")){
        str=string.replace(str,
"+\?","")
        
var n1=string.split(str,"=")[1]
        
var n2=string.split(str,"=")[2]
        
return n2-n1
    }
   
if(string.find(str,"\?\+")){
        str=string.replace(str,
"\?","")
        str=string.replace(str,
"+","")
        
var n1=string.split(str,"=")[1]
        
var n2=string.split(str,"=")[2]
        
return n2-n1
    }
   
if(string.find(str,"\?-")){
        str=string.replace(str,
"?-","")
        
var n1=string.split(str,"=")[1]
        
var n2=string.split(str,"=")[2]
        
return n2+n1
    }
   
if(string.find(str,"-\?")){
        str=string.replace(str,
"-\?","")
        
var n1=string.split(str,"=")[1]
        
var  n2=string.split(str,"=")[2]
        
return n1-n2
    }
   
if(string.find(str,"\*\?")){
        str=string.replace(str,
"*\?","")
        
var n1=string.split(str,"=")[1]
        
var  n2=string.split(str,"=")[2]
        
return n2/n1
    }
   
if(string.find(str,"\?\*")){
        str=string.replace(str,
"\?\*","")
        
var n1=string.split(str,"=")[1]
        
var  n2=string.split(str,"=")[2]
        
return n2/n1
    }
   
if(string.find(str,"/\?")){
        str=string.replace(str,
"/\?","")
        
var n1=string.split(str,"=")[1]
        
var  n2=string.split(str,"=")[2]
        
return n1/n2
    }
   
if(string.find(str,"\?/")){
        str=string.replace(str,
"\?/","")
        
var n1=string.split(str,"=")[1]
        
var  n2=string.split(str,"=")[2]
        
return n1*n2
    }

}
io.open()
str=
"8-?=7"
io.print(
eval(yunsuan(str)))
str="?/7=14"
io.print(eval(yunsuan(str)))

请问各位朋友有没简洁的写法。给出表达式 求结果。

回复

使用道具 举报

51

主题

286

帖子

1728

积分

荣誉会员

Rank: 8Rank: 8

积分
1728
发表于 2014-1-17 01:01:48 | 显示全部楼层

[i=s] 本帖最后由 5e365 于 2014-1-18 03:06 编辑 [/i] 下楼

本帖最后由 5e365 于 2014-1-18 03:06 编辑

下楼
◆ 半醒半醉日复日,花落花开年复年 ◆
回复

使用道具 举报

51

主题

286

帖子

1728

积分

荣誉会员

Rank: 8Rank: 8

积分
1728
发表于 2014-1-17 01:06:38 | 显示全部楼层

[i=s] 本帖最后由 5e365 于 2014-1-17 01:45 编辑 [/i] [code][lang=aardio,false] function

本帖最后由 5e365 于 2014-1-17 01:45 编辑

  1. function yunsuan(str){
  2.     var n1,n2 = string.match(str, "(\d+).+?(\d+)");
  3.     t = {["+"] = "-"; ["-"] = "+"; ["*"] = "/"; ["/"] = "*"}   
  4.     var op = string.match(str, "[\+\-\*\/]");
  5.     var opx = t[op];
  6.    
  7.     if(string.find(str,"^\?") || string.find(str,"[\+\*]\?"))
  8.         return n2 + opx + n1;
  9.     else
  10.         return n1 + op + n2;
  11. }

  12. io.open()
  13. str =/*
  14. 5+7=?
  15. 8-1=?
  16. 6*3=?
  17. 8/2=?
  18. 7+?=15
  19. 3-?=1
  20. 2*?=12
  21. 8/?=4
  22. ?+4=9
  23. ?-8=10
  24. ?*6=18
  25. ?/2=20
  26. */

  27. line = string.split(str, '<\r\n>')

  28. for(i=1;#line;1){
  29.     io.print(line[ i ], "--->", eval(yunsuan(line[ i ])))
  30. }

复制代码

评分

参与人数 2银币 +20 收起 理由
hwqunt + 10 赞一个!
极翔天使 + 10 赞一个!

查看全部评分

◆ 半醒半醉日复日,花落花开年复年 ◆
回复

使用道具 举报

2

主题

5

帖子

29

积分

新手入门

Rank: 1

积分
29
 楼主| 发表于 2014-1-17 09:19:00 | 显示全部楼层

楼上这位大哥的代码真强悍,真心赞。

楼上这位大哥的代码真强悍,真心赞。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2019-7-23 02:18 , Processed in 0.062500 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表