Scala二十四点游戏(9): 完整的代码和计算结果

jerry Scala 2015年11月25日 收藏

综合前面的介绍,这里我们给出最终的24点游戏的代码:

  1. import scala.collection.mutable.Stack
  2.  
  3. trait BinaryOp{
  4. val op:String
  5. def apply(expr1:String,expr2:String) = expr1 + op + expr2
  6. def unapply(str:String) :Option[(String,String)] ={
  7. val index=str indexOf (op)
  8. if(index>0)
  9. Some(str substring(0,index),str substring(index+1))
  10. else None
  11. }
  12. }
  13.  
  14. class Rational (n:Int, d:Int) {
  15. require(d!=0)
  16. private val g =gcd (n.abs,d.abs)
  17. val numer =n/g
  18. val denom =d/g
  19. override def toString = numer + "\\" +denom
  20. def +(that:Rational) =
  21. new Rational(
  22. numer * that.denom + that.numer* denom,
  23. denom * that.denom
  24. )
  25.  
  26. def -(that:Rational) =
  27. new Rational(
  28. numer * that.denom - that.numer* denom,
  29. denom * that.denom
  30. )
  31.  
  32. def * (that:Rational) =
  33. new Rational( numer * that.numer, denom * that.denom)
  34.  
  35. def / (that:Rational) =
  36. new Rational( numer * that.denom, denom * that.numer)
  37.  
  38. def this(n:Int) = this(n,1)
  39. private def gcd(a:Int,b:Int):Int =
  40. if(b==0) a else gcd(b, a % b)
  41. }
  42.  
  43.  
  44. object Bracket{
  45. def matchBracket(str:String):Option[(Int,Int)] ={
  46. val left = str.indexOf('(')
  47. if(left >=0) {
  48. val stack = Stack[Char]()
  49. val remaining = str substring (left+1)
  50. var index=0
  51. var right=0
  52. for(c <-remaining if right==0){
  53. index=index + 1
  54. c match{
  55. case '(' => stack push c
  56. case ')' => if (stack isEmpty) right= left+index else stack pop
  57. case _ =>
  58. }
  59.  
  60. }
  61.  
  62. Some(left,right)
  63. }else None
  64. }
  65.  
  66. def apply(part1:String,expr:String,part2:String) =part1+ "(" + expr + ")"+ part2
  67. def unapply(str:String) :Option[(String,String,String)] ={
  68. Bracket.matchBracket(str) match{
  69. case Some((left:Int,right:Int)) =>{
  70. val part1 = if (left == 0) "" else str substring(0, left )
  71. val expr = str substring(left + 1, right)
  72. val part2 = if (right == (str length)-1) "" else str substring (right+1)
  73. Some(part1, expr, part2)
  74. }
  75. case _ => None
  76. }
  77. }
  78. }
  79.  
  80. object Multiply extends {val op="*"} with BinaryOp
  81. object Divide extends {val op="/"} with BinaryOp
  82. object Add extends {val op="+"} with BinaryOp
  83. object Subtract extends {val op="-"} with BinaryOp
  84. object Rational extends {val op="\\"} with BinaryOp
  85.  
  86.  
  87.  
  88.  
  89. object Test extends App{
  90.  
  91. val templates=List(
  92. "N*N-N+N",
  93. "(N-N)*N*N",
  94. "N*N+N*N",
  95. "(N+N)*N*N",
  96. "N*N*N*N",
  97. "(N+N*N)*N",
  98. "(N*N-N)*N",
  99. "N*N+N+N",
  100. "(N/N-N)*N",
  101. "(N-(N-N))*N",
  102. "N-(N-N-N)",
  103. "N+N-(N-N)",
  104. "N*(N/N-N)",
  105. "(N-N*N)*N",
  106. "N*(N-N)+N",
  107. "N+N+N/N",
  108. "(N-N)*(N-N)",
  109. "N+N*N/N",
  110. "N*N/(N-N)",
  111. "(N+N)*(N+N)",
  112. "(N-N)*N/N",
  113. "N+(N+N)/N",
  114. "N*N/(N+N)",
  115. "(N+N)*N/N",
  116. "(N*N+N)*N",
  117. "(N*N-N)/N",
  118. "(N/N+N)*N",
  119. "N*N/N/N",
  120. "N+N+N-N",
  121. "N-(N-N)+N",
  122. "N/(N-N/N)",
  123. "N+(N-N)*N",
  124. "(N+N+N)*N",
  125. "N+N*N-N",
  126. "N*N-N/N",
  127. "(N+N)*N-N",
  128. "(N+N)*(N-N)",
  129. "(N-N/N)*N",
  130. "N*(N+N)+N",
  131. "N*N+N/N",
  132. "N*N/N-N",
  133. "(N+N/N)*N",
  134. "N*N*N/N",
  135. "(N+N*N)/N",
  136. "N+N*N+N",
  137. "N-(N-N)*N",
  138. "(N-(N+N))*N",
  139. "N*N-N-N",
  140. "N+N/N+N",
  141. "(N-N)*N-N",
  142. "(N+N)/N+N",
  143. "N*N+N-N",
  144. "N/N+N+N",
  145. "N*N*N-N",
  146. "(N*N+N)/N",
  147. "N+N+N*N",
  148. "N*(N-N)/N",
  149. "N/N*N+N",
  150. "N+N*N*N",
  151. "N+N+N+N",
  152. "N*N/(N*N)",
  153. "N+(N+N)*N",
  154. "(N-N)*N+N",
  155. "(N+N+N)/N",
  156. "(N+N)*N+N",
  157. "N*N*N+N",
  158. "N*N-(N-N)",
  159. "N*N-(N+N)",
  160. "(N-N-N)*N",
  161. "N*N/N+N",
  162. "(N+N-N)*N",
  163. "N/(N/N-N)",
  164. "N*N-N*N"
  165. )
  166.  
  167. def eval(str:String):Rational = {
  168. str match {
  169. case Bracket(part1, expr, part2) => eval(part1 + eval(expr) + part2)
  170. case Add(expr1, expr2) => eval(expr1) + eval(expr2)
  171. case Subtract(expr1, expr2) => eval(expr1) - eval(expr2)
  172. case Multiply(expr1, expr2) => eval(expr1) * eval(expr2)
  173. case Divide(expr1, expr2) => eval(expr1) / eval(expr2)
  174. case "" => new Rational(0, 1)
  175. case Rational(expr1, expr2) => new Rational(expr1.trim toInt, expr2.trim toInt)
  176. case _ => new Rational(str.trim toInt, 1)
  177.  
  178. }
  179. }
  180.  
  181.  
  182. def calculate(template:String,numbers:List[Int])={
  183. val values=template.split('N')
  184. var expression=""
  185. for(i <- 0 to 3) expression=expression+values(i) + numbers(i)
  186. if (values.length==5) expression=expression+values(4)
  187. (expression,template,eval(expression))
  188. }
  189.  
  190.  
  191. def cal24(input:List[Int])={
  192. var found = false
  193. for (template <- templates; list <- input.permutations ) {
  194. try {
  195. val (expression, tp, result) = calculate(template, list)
  196. if (result.numer == 24 && result.denom == 1) {
  197. println(input + ":" + tp + ":" + expression)
  198. found = true
  199. }
  200. } catch {
  201. case e:Throwable=>
  202. }
  203. }
  204. if (!found) {
  205. println(input+":"+"no result")
  206. }
  207. }
  208.  
  209. def cal24once(input:List[Int])={
  210. var found = false
  211. for (template <- templates; list <- input.permutations if(!found)) {
  212. try {
  213. val (expression, tp, result) = calculate(template, list)
  214. if (result.numer == 24 && result.denom == 1) {
  215. println(input + ":" + tp + ":" + expression)
  216. found = true
  217. }
  218. } catch {
  219. case e:Throwable=>
  220. }
  221. }
  222. if (!found) {
  223. println(input+":"+"no result")
  224. }
  225. }
  226. println(cal24once(List(5,5,5,1)))
  227. }

下面给出所有从1到10的四个数字有解的结果:

输入 模板 结果
List(1,1,1,8) (N+N+N)*N (1+1+1)*8
List(1,1,2,10) (N+N)*(N+N) (1+1)*(2+10)
List(1,1,2,6) (N+N)*N*N (1+1)*2*6
List(1,1,2,7) (N+N)*(N+N) (1+2)*(1+7)
List(1,1,2,8) (N+N)*N*N (1+2)*1*8
List(1,1,2,9) (N+N)*(N-N) (1+2)*(9-1)
List(1,1,3,10) (N-(N+N))*N (10-(1+1))*3
List(1,1,3,4) (N+N)*N*N (1+1)*3*4
List(1,1,3,5) (N+N)*(N+N) (1+3)*(1+5)
List(1,1,3,6) (N+N)*N*N (1+3)*1*6
List(1,1,3,7) (N+N)*N*N (1+7)*1*3
List(1,1,3,8) N*N-N+N 3*8-1+1
List(1,1,3,9) (N-N)*N*N (9-1)*1*3
List(1,1,4,10) N*(N+N)+N 10*(1+1)+4
List(1,1,4,4) (N+N+N)*N (1+1+4)*4
List(1,1,4,5) (N+N)*N*N (1+5)*1*4
List(1,1,4,6) N*N-N+N 4*6-1+1
List(1,1,4,7) (N-N)*N*N (7-1)*1*4
List(1,1,4,8) (N-N)*N*N (4-1)*1*8
List(1,1,4,9) (N-N)*(N-N) (1-4)*(1-9)
List(1,1,5,5) (N*N-N)*N (5*5-1)*1
List(1,1,5,6) (N-N)*N*N (5-1)*1*6
List(1,1,5,7) (N-N)*(N-N) (1-5)*(1-7)
List(1,1,5,8) (N-(N+N))*N (5-(1+1))*8
List(1,1,6,6) (N+N)*(N+N) (1+1)*(6+6)
List(1,1,6,8) N*N/(N+N) 6*8/(1+1)
List(1,1,6,9) N*(N+N)+N 9*(1+1)+6
List(1,1,7,10) N*(N+N)+N 7*(1+1)+10
List(1,1,8,8) N*(N+N)+N 8*(1+1)+8
List(1,2,2,10) (N+N)*N*N (2+10)*1*2
List(1,2,2,4) (N+N)*N*N (1+2)*2*4
List(1,2,2,5) (N+N)*N*N (1+5)*2*2
List(1,2,2,6) (N+N)*N*N (2+2)*1*6
List(1,2,2,7) (N-N)*N*N (7-1)*2*2
List(1,2,2,8) (N*N-N)*N (2*2-1)*8
List(1,2,2,9) (N+N+N)*N (1+2+9)*2
List(1,2,3,10) (N-N)*N*N (10-2)*1*3
List(1,2,3,3) (N+N)*N*N (1+3)*2*3
List(1,2,3,4) N*N*N*N 1*2*3*4
List(1,2,3,5) (N-N)*N*N (5-1)*2*3
List(1,2,3,6) (N-N)*N*N (3-1)*2*6
List(1,2,3,7) N*N+N+N 3*7+1+2
List(1,2,3,8) (N-N)*N*N (2-1)*3*8
List(1,2,3,9) (N+N)*N*N (3+9)*1*2
List(1,2,4,10) N*N+N*N 1*4+2*10
List(1,2,4,4) (N-N)*N*N (4-1)*2*4
List(1,2,4,5) (N-(N-N))*N (2-(1-5))*4
List(1,2,4,6) (N-N)*N*N (2-1)*4*6
List(1,2,4,7) (N-(N-N))*N (1-(2-7))*4
List(1,2,4,8) (N-N)*N*N (8-2)*1*4
List(1,2,4,9) (N-(N-N))*N (4-(1-9))*2
List(1,2,5,10) N*N-N+N 2*10-1+5
List(1,2,5,5) N*N-N+N 5*5-2+1
List(1,2,5,6) (N-(N-N))*N (1-(2-5))*6
List(1,2,5,7) (N+N)*N*N (5+7)*1*2
List(1,2,5,8) (N-N)*N*N (5-2)*1*8
List(1,2,5,9) N*N+N+N 2*9+1+5
List(1,2,6,10) (N/N-N)*N (10/2-1)*6
List(1,2,6,6) (N-N)*N*N (6-2)*1*6
List(1,2,6,7) (N-(N-N))*N (6-(1-7))*2
List(1,2,6,8) N*N/N/N 1*6/2/8
List(1,2,6,9) N*N+N*N 1*6+2*9
List(1,2,7,10) N*N+N*N 1*10+2*7
List(1,2,7,7) (N*N-N)/N (7*7-1)/2
List(1,2,7,8) N*N+N+N 2*8+1+7
List(1,2,7,9) N*N-N+N 2*9-1+7
List(1,2,8,10) N*(N-N)+N 2*(8-1)+10
List(1,2,8,8) N*N+N*N 1*8+2*8
List(1,2,8,9) N*N-N+N 2*8-1+9
List(1,3,10,10) N+N+N+N 1+3+10+10
List(1,3,3,10) (N-(N-N))*N (1-(3-10))*3
List(1,3,3,3) (N*N-N)*N (3*3-1)*3
List(1,3,3,4) (N-N)*N*N (3-1)*3*4
List(1,3,3,5) (N+N)*N*N (3+5)*1*3
List(1,3,3,6) (N-(N-N))*N (3-(1-6))*3
List(1,3,3,7) N*N+N*N 1*3+3*7
List(1,3,3,8) N*(N-N)+N 3*(8-1)+3
List(1,3,3,9) (N*N-N)*N (3*9-3)*1
List(1,3,4,10) N*(N-N)+N 10*(3-1)+4
List(1,3,4,4) (N+N)*N*N (4+4)*1*3
List(1,3,4,5) N*N+N+N 4*5+1+3
List(1,3,4,6) N/(N-N/N) 6/(1-3/4)
List(1,3,4,7) N*N-N+N 3*7-1+4
List(1,3,4,8) (N-(N-N))*N (1-(3-8))*4
List(1,3,4,9) N*N-N+N 3*9-4+1
List(1,3,5,10) N*N-N+N 3*5-1+10
List(1,3,5,6) N*N+N+N 3*6+1+5
List(1,3,5,7) (N+N)*(N-N) (1+5)*(7-3)
List(1,3,5,8) N*N+N+N 3*5+1+8
List(1,3,5,9) N*N+N*N 1*9+3*5
List(1,3,6,10) (N*N-N)*N (3*10-6)*1
List(1,3,6,6) N*N+N*N 1*6+3*6
List(1,3,6,7) N*N-N+N 3*6-1+7
List(1,3,6,8) (N-N)*N*N (6-3)*1*8
List(1,3,6,9) N*(N-N)+N 3*(6-1)+9
List(1,3,7,10) N*N-N+N 3*10-7+1
List(1,3,7,7) (N-N)*(N-N) (1-7)*(3-7)
List(1,3,7,8) N/(N-N/N) 3/(1-7/8)
List(1,3,7,9) (N+N)*N/N (1+7)*9/3
List(1,3,8,10) (N-N)*N/N (10-1)*8/3
List(1,3,8,8) N*(N-N)+N 8*(3-1)+8
List(1,3,8,9) N*N/N/N 1*8/3/9
List(1,3,9,10) (N+N)*N-N (1+10)*3-9
List(1,3,9,9) (N-N)*N/N (9-1)*9/3
List(1,4,10,10) N*N+N+N 1*4+10+10
List(1,4,4,10) (N-N)*N*N (10-4)*1*4
List(1,4,4,4) (N+N)*(N-N) (4+4)*(4-1)
List(1,4,4,5) N*N+N*N 1*4+4*5
List(1,4,4,6) N*(N-N)+N 4*(6-1)+4
List(1,4,4,7) (N*N-N)*N (4*7-4)*1
List(1,4,4,8) N*N+N*N 1*8+4*4
List(1,4,4,9) N*N-N+N 4*4-1+9
List(1,4,5,10) (N-(N-N))*N (1-(5-10))*4
List(1,4,5,5) N*N-N+N 4*5-1+5
List(1,4,5,6) N/(N-N/N) 4/(1-5/6)
List(1,4,5,7) N*N-N+N 4*7-5+1
List(1,4,5,8) N*(N-N)+N 4*(5-1)+8
List(1,4,5,9) N*(N-N)+N 5*(4-1)+9
List(1,4,6,10) (N-N)*N-N (4-1)*10-6
List(1,4,6,6) N*(N-N)+N 6*(4-1)+6
List(1,4,6,7) (N-(N-N))*N (1-(4-7))*6
List(1,4,6,8) (N-N)*N*N (8-4)*1*6
List(1,4,6,9) (N-(N+N))*N (9-(1+4))*6
List(1,4,7,7) (N+N)*(N-N) (1+7)*(7-4)
List(1,4,7,8) (N-N)*N*N (7-4)*1*8
List(1,4,7,9) (N-N)*(N-N) (1-9)*(4-7)
List(1,4,8,8) (N*N-N)*N (4*8-8)*1
List(1,4,8,9) N*N-N+N 4*8-9+1
List(1,4,9,10) N+N+N+N 1+4+9+10
List(1,5,10,10) N+N-(N-N) 5+10-(1-10)
List(1,5,5,10) (N-N)*N-N (10-5)*5-1
List(1,5,5,5) (N-N/N)*N (5-1/5)*5
List(1,5,5,6) (N+N)*N-N (1+5)*5-6
List(1,5,5,9) (N+N)*(N-N) (1+5)*(9-5)
List(1,5,6,10) (N+N)*(N-N) (1+5)*(10-6)
List(1,5,6,6) (N*N-N)*N (5*6-6)*1
List(1,5,6,7) N*N-N+N 5*6-7+1
List(1,5,6,8) (N-(N-N))*N (1-(5-8))*6
List(1,5,6,9) (N-N)*N*N (9-5)*1*6
List(1,5,7,10) (N/N+N)*N (7/5+1)*10
List(1,5,7,8) (N-(N-N))*N (1-(5-7))*8
List(1,5,7,9) (N-N)*(N-N) (1-7)*(5-9)
List(1,5,8,10) (N/N+N)*N (10/5+1)*8
List(1,5,8,8) (N-N)*N*N (8-5)*1*8
List(1,5,8,9) (N-N)*(N-N) (1-9)*(5-8)
List(1,5,9,10) N*N+N+N 1*5+9+10
List(1,5,9,9) N+N+N+N 1+5+9+9
List(1,6,6,10) (N-N)*N*N (10-6)*1*6
List(1,6,6,6) (N-N)*N-N (6-1)*6-6
List(1,6,6,8) N/(N-N/N) 6/(1-6/8)
List(1,6,6,9) (N-(N-N))*N (1-(6-9))*6
List(1,6,7,10) (N-(N-N))*N (1-(7-10))*6
List(1,6,7,9) (N+N)*(N-N) (1+7)*(9-6)
List(1,6,8,10) N*N+N+N 1*6+8+10
List(1,6,8,8) (N-(N-N))*N (1-(6-8))*8
List(1,6,8,9) (N-N)*N*N (9-6)*1*8
List(1,6,9,10) N+N-(N-N) 6+9-(1-10)
List(1,6,9,9) N*N+N+N 1*6+9+9
List(1,7,7,10) N*N+N+N 1*7+7+10
List(1,7,7,9) N+N+N+N 1+7+7+9
List(1,7,8,10) (N-N)*N*N (10-7)*1*8
List(1,7,8,8) N+N+N+N 1+7+8+8
List(1,7,8,9) N*N+N+N 1*7+8+9
List(1,7,9,10) (N-N)*(N-N) (1-9)*(7-10)
List(1,7,9,9) N+N-(N-N) 7+9-(1-9)
List(1,8,8,10) (N-(N-N))*N (1-(8-10))*8
List(1,8,8,8) N*N+N+N 1*8+8+8
List(1,8,8,9) N+N-(N-N) 8+8-(1-9)
List(2,2,10,10) N*N+N+N 2*2+10+10
List(2,2,2,10) N*N+N*N 2*2+2*10
List(2,2,2,3) (N+N)*N*N (2+2)*2*3
List(2,2,2,4) (N+N)*N*N (2+4)*2*2
List(2,2,2,5) (N+N*N)*N (2+2*5)*2
List(2,2,2,7) (N*N-N)*N (2*7-2)*2
List(2,2,2,8) (N-N)*N*N (8-2)*2*2
List(2,2,2,9) N*(N+N)+N 2*(2+9)+2
List(2,2,3,10) (N+N)*N-N (3+10)*2-2
List(2,2,3,3) (N+N)*N*N (3+3)*2*2
List(2,2,3,4) (N+N*N)*N (4+2*2)*3
List(2,2,3,5) (N*N-N)*N (2*5-2)*3
List(2,2,3,6) (N-N)*N*N (6-2)*2*3
List(2,2,3,7) (N/N+N)*N (2/2+7)*3
List(2,2,3,8) N*N-N+N 3*8-2+2
List(2,2,3,9) (N-N)*N*N (9-3)*2*2
List(2,2,4,10) (N-N)*N*N (10-4)*2*2
List(2,2,4,4) (N+N*N)*N (4+2*4)*2
List(2,2,4,5) (N-N)*N*N (5-2)*2*4
List(2,2,4,6) N*N-N+N 4*6-2+2
List(2,2,4,7) (N+N)*N-N (2+2)*7-4
List(2,2,4,8) N*N+N*N 2*4+2*8
List(2,2,4,9) N*N+N+N 2*9+2+4
List(2,2,5,10) (N-N)*(N-N) (2-5)*(2-10)
List(2,2,5,5) (N+N+N)*N (2+5+5)*2
List(2,2,5,6) (N+N)*(N-N) (2+6)*(5-2)
List(2,2,5,7) N*N+N*N 2*5+2*7
List(2,2,5,8) (N+N)*N-N (5+8)*2-2
List(2,2,5,9) (N-(N-N))*N (5-(2-9))*2
List(2,2,6,10) N*N-N+N 2*10-2+6
List(2,2,6,6) N*N+N*N 2*6+2*6
List(2,2,6,7) (N+N)*N-N (6+7)*2-2
List(2,2,6,8) N*N+N+N 2*8+2+6
List(2,2,6,9) (N*N-N)*N (2*9-6)*2
List(2,2,7,10) (N/N+N)*N (10/2+7)*2
List(2,2,7,7) (N-(N-N))*N (7-(2-7))*2
List(2,2,7,8) N*N+N+N 2*7+2+8
List(2,2,8,10) N*N-N+N 2*8-2+10
List(2,2,8,8) (N-N)*N/N (8-2)*8/2
List(2,2,8,9) N*N-N+N 2*9-2+8
List(2,2,9,10) N*(N-N)+N 2*(9-2)+10
List(2,3,10,10) N*(N-N)+N 2*(10-3)+10
List(2,3,3,10) (N/N+N)*N (10/2+3)*3
List(2,3,3,3) (N+N*N)*N (3+3*3)*2
List(2,3,3,5) (N*N-N)*N (3*5-3)*2
List(2,3,3,6) N*N+N*N 2*3+3*6
List(2,3,3,7) (N-N)*N*N (7-3)*2*3
List(2,3,3,8) (N-N)*N*N (3-2)*3*8
List(2,3,3,9) N*N+N+N 2*9+3+3
List(2,3,4,10) N*N+N+N 3*4+2+10
List(2,3,4,4) (N-N)*N*N (4-2)*3*4
List(2,3,4,5) (N-(N-N))*N (3-(2-5))*4
List(2,3,4,6) (N-N)*N*N (3-2)*4*6
List(2,3,4,7) (N-(N-N))*N (2-(3-7))*4
List(2,3,4,8) (N-N)*N*N (8-4)*2*3
List(2,3,4,9) (N+N)*N/N (3+9)*4/2
List(2,3,5,10) (N-(N-N))*N (5-(3-10))*2
List(2,3,5,5) N*N-N+N 5*5-3+2
List(2,3,5,6) (N-N)*N*N (5-3)*2*6
List(2,3,5,7) N*N-N+N 3*7-2+5
List(2,3,5,8) N*N+N+N 2*8+3+5
List(2,3,5,9) N*N-N+N 3*9-5+2
List(2,3,6,10) (N-N)*N*N (10-6)*2*3
List(2,3,6,6) (N*N-N)*N (3*6-6)*2
List(2,3,6,7) (N*N-N)*N (2*7-6)*3
List(2,3,6,8) N*N-N+N 3*6-2+8
List(2,3,6,9) N*N+N+N 2*6+3+9
List(2,3,7,10) N*N-N+N 2*10-3+7
List(2,3,7,7) N*N+N+N 2*7+3+7
List(2,3,7,8) (N-(N-N))*N (7-(3-8))*2
List(2,3,7,9) (N*N-N)*N (3*7-9)*2
List(2,3,8,10) N*N-N+N 3*10-8+2
List(2,3,8,8) (N*N-N)*N (2*8-8)*3
List(2,3,8,9) (N-N*N)*N (9-2*3)*8
List(2,3,9,10) (N*N-N)*N (2*9-10)*3
List(2,3,9,9) N*N-N+N 2*9-3+9
List(2,4,10,10) (N/N+N)*N (4/10+2)*10
List(2,4,4,10) N*N-N+N 4*4-2+10
List(2,4,4,4) N*N+N*N 2*4+4*4
List(2,4,4,5) (N*N-N)*N (2*5-4)*4
List(2,4,4,6) (N*N-N)*N (2*4-4)*6
List(2,4,4,7) (N-N)*N*N (7-4)*2*4
List(2,4,4,8) N*N+N+N 2*8+4+4
List(2,4,4,9) (N-N)*N-N (9-2)*4-4
List(2,4,5,10) N*N+N+N 2*5+4+10
List(2,4,5,5) N*(N+N)+N 2*(5+5)+4
List(2,4,5,6) N*N-N+N 4*5-2+6
List(2,4,5,7) (N+N)*N/N (5+7)*4/2
List(2,4,5,8) (N-N)*N*N (8-5)*2*4
List(2,4,5,9) (N-(N-N))*N (2-(5-9))*4
List(2,4,6,10) N*N+N+N 2*4+6+10
List(2,4,6,6) (N-N)*N*N (6-4)*2*6
List(2,4,6,7) N*N-N+N 4*7-6+2
List(2,4,6,8) N*N+N+N 2*6+4+8
List(2,4,6,9) (N-N)*N*N (9-6)*2*4
List(2,4,7,10) (N-N)*N*N (10-7)*2*4
List(2,4,7,7) (N+N)*N-N (7+7)*2-4
List(2,4,7,8) (N*N-N)*N (2*7-8)*4
List(2,4,7,9) N*N+N+N 2*4+7+9
List(2,4,8,10) N*N-N+N 2*10-4+8
List(2,4,8,8) N*N+N+N 2*4+8+8
List(2,4,8,9) (N-(N+N))*N (9-(2+4))*8
List(2,4,9,10) N*N-N+N 2*9-4+10
List(2,4,9,9) N+N+N+N 2+4+9+9
List(2,5,10,10) (N+N)*N/N (2+10)*10/5
List(2,5,5,10) (N-N/N)*N (5-2/10)*5
List(2,5,5,7) N*N+N+N 2*7+5+5
List(2,5,5,8) (N/N+N)*N (5/5+2)*8
List(2,5,5,9) N*N+N+N 2*5+5+9
List(2,5,6,10) (N/N+N)*N (10/5+2)*6
List(2,5,6,6) (N*N-N)*N (2*5-6)*6
List(2,5,6,7) (N-N)*N*N (7-5)*2*6
List(2,5,6,8) N*N-N+N 5*6-8+2
List(2,5,6,9) N+N*N/N 9+5*6/2
List(2,5,7,10) (N-(N-N))*N (7-(5-10))*2
List(2,5,7,7) N*N+N+N 2*5+7+7
List(2,5,7,8) (N*N-N)*N (2*5-7)*8
List(2,5,7,9) N*N-(N+N) 5*7-(2+9)
List(2,5,8,10) (N-N)*(N-N) (2-10)*(5-8)
List(2,5,8,8) (N+N*N)/N (8+5*8)/2
List(2,5,8,9) (N-(N-N))*N (8-(5-9))*2
List(2,5,9,10) N*N-N+N 2*10-5+9
List(2,6,10,10) N*N-N+N 2*10-6+10
List(2,6,6,10) N*N/N-N 6*10/2-6
List(2,6,6,6) N*N+N+N 2*6+6+6
List(2,6,6,7) (N-N/N)*N (7-6/2)*6
List(2,6,6,8) (N-N)*N*N (8-6)*2*6
List(2,6,6,9) (N*N-N)/N (6*9-6)/2
List(2,6,7,10) (N*N-N)*N (2*7-10)*6
List(2,6,7,8) (N-(N-N))*N (2-(6-7))*8
List(2,6,7,9) (N-N)*N*N (9-7)*2*6
List(2,6,8,10) (N-N)*N*N (10-8)*2*6
List(2,6,8,8) (N-N/N)*N (8-8/2)*6
List(2,6,8,9) (N*N-N)*N (2*6-9)*8
List(2,6,9,10) (N-N)*(N-N) (2-10)*(6-9)
List(2,6,9,9) (N-(N-N))*N (9-(6-9))*2
List(2,7,10,10) (N-N)*(N-N) (2-10)*(7-10)
List(2,7,7,10) (N/N+N)*N (10/7+2)*7
List(2,7,7,8) (N/N+N)*N (7/7+2)*8
List(2,7,8,8) (N-(N-N))*N (2-(7-8))*8
List(2,7,8,9) (N+N)*N-N (7+9)*2-8
List(2,7,9,10) (N-(N-N))*N (9-(7-10))*2
List(2,8,10,10) (N-(N-N))*N (10-(8-10))*2
List(2,8,8,10) N+N-(N-N) 8+8-(2-10)
List(2,8,8,8) (N/N+N)*N (8/8+2)*8
List(2,8,8,9) (N-(N-N))*N (2-(8-9))*8
List(2,8,9,10) (N-(N-N))*N (2-(9-10))*8
List(2,8,9,9) N+N-(N-N) 8+9-(2-9)
List(2,9,10,10) N+N+N/N 9+10+10/2
List(3,3,3,10) N*(N-N)+N 3*(10-3)+3
List(3,3,3,3) N*N*N-N 3*3*3-3
List(3,3,3,4) (N*N-N)*N (3*3-3)*4
List(3,3,3,5) N*N+N*N 3*3+3*5
List(3,3,3,6) N*N+N+N 3*6+3+3
List(3,3,3,7) (N/N+N)*N (3/3+7)*3
List(3,3,3,8) N*N-N+N 3*8-3+3
List(3,3,3,9) (N-N/N)*N (9-3/3)*3
List(3,3,4,4) N*N+N*N 3*4+3*4
List(3,3,4,5) (N-N)*N*N (5-3)*3*4
List(3,3,4,6) N*N-N+N 4*6-3+3
List(3,3,4,7) (N-(N-N))*N (4-(3-7))*3
List(3,3,4,8) (N-N)*N*N (4-3)*3*8
List(3,3,4,9) N*N+N+N 3*4+3+9
List(3,3,5,10) N*N+N+N 3*3+5+10
List(3,3,5,5) N*N-N/N 5*5-3/3
List(3,3,5,6) (N*N-N)*N (3*3-5)*6
List(3,3,5,7) (N*N-N)*N (3*5-7)*3
List(3,3,5,9) (N+N)*N/N (3+5)*9/3
List(3,3,6,10) (N*N-N)*N (3*6-10)*3
List(3,3,6,6) (N/N+N)*N (6/3+6)*3
List(3,3,6,7) N*N-N+N 3*7-3+6
List(3,3,6,8) (N*N-N)*N (3*3-6)*8
List(3,3,6,9) N*N-N+N 3*6-3+9
List(3,3,7,7) (N/N+N)*N (3/7+3)*7
List(3,3,7,8) N*N+N+N 3*3+7+8
List(3,3,7,9) (N-N)*(N-N) (3-7)*(3-9)
List(3,3,8,10) N+N+N+N 3+3+8+10
List(3,3,8,8) N/(N-N/N) 8/(3-8/3)
List(3,3,8,9) N*(N-N)+N 3*(8-3)+9
List(3,3,9,10) N*N-N+N 3*10-9+3
List(3,3,9,9) N*N-N/N 3*9-9/3
List(3,4,10,10) N*N-N+N 3*10-10+4
List(3,4,4,10) (N-N)*N-N (10-3)*4-4
List(3,4,4,4) (N+N)*N-N (3+4)*4-4
List(3,4,4,5) N*N+N+N 4*4+3+5
List(3,4,4,6) (N-N)*N*N (4-3)*4*6
List(3,4,4,7) (N-(N-N))*N (3-(4-7))*4
List(3,4,4,8) N*N-N+N 3*8-4+4
List(3,4,4,9) (N+N)*N/N (4+4)*9/3
List(3,4,5,10) N*(N-N)+N 10*(5-3)+4
List(3,4,5,5) N*N-N+N 5*5-4+3
List(3,4,5,6) (N-(N-N))*N (3-(4-5))*6
List(3,4,5,7) N*N-N+N 4*5-3+7
List(3,4,5,8) (N-N)*N*N (5-4)*3*8
List(3,4,5,9) (N*N-N)*N (3*5-9)*4
List(3,4,6,10) N*N-N+N 3*6-4+10
List(3,4,6,6) N*N+N+N 3*4+6+6
List(3,4,6,8) (N-N)*N*N (8-6)*3*4
List(3,4,6,9) (N-(N-N))*N (3-(6-9))*4
List(3,4,7,10) (N-(N-N))*N (3-(7-10))*4
List(3,4,7,7) N*N-N+N 3*7-4+7
List(3,4,7,8) N*(N-N)+N 4*(7-3)+8
List(3,4,7,9) N*N-N+N 3*9-7+4
List(3,4,8,10) (N-N)*N*N (10-8)*3*4
List(3,4,8,9) (N*N-N)*N (3*4-9)*8
List(3,4,9,9) N*(N-N)+N 3*(9-4)+9
List(3,5,10,10) (N-N/N)*N (10-10/5)*3
List(3,5,5,6) (N/N+N)*N (5/5+3)*6
List(3,5,5,7) (N/N+N)*N (5/5+7)*3
List(3,5,5,8) N*N-N+N 3*8-5+5
List(3,5,5,9) (N/N+N)*N (9/5+3)*5
List(3,5,6,10) (N/N+N)*N (10/5+6)*3
List(3,5,6,6) (N-(N-N))*N (3-(5-6))*6
List(3,5,6,7) (N-(N-N))*N (6-(5-7))*3
List(3,5,6,8) (N-N)*N*N (6-5)*3*8
List(3,5,6,9) N*N-N+N 5*6-9+3
List(3,5,7,10) (N-(N-N))*N (5-(7-10))*3
List(3,5,7,8) N*N-N+N 3*7-5+8
List(3,5,7,9) (N+N)*(N-N) (3+9)*(7-5)
List(3,5,8,8) N*(N-N)+N 8*(5-3)+8
List(3,5,8,9) N*N-N+N 3*9-8+5
List(3,5,9,10) N*(N-N)+N 3*(10-5)+9
List(3,5,9,9) (N-N)*(N-N) (3-9)*(5-9)
List(3,6,10,10) (N/N+N)*N (10/10+3)*6
List(3,6,6,10) (N-N)*N-N (6-3)*10-6
List(3,6,6,6) N*(N-N)+N 6*(6-3)+6
List(3,6,6,7) (N-(N-N))*N (3-(6-7))*6
List(3,6,6,8) N*N-N+N 3*8-6+6
List(3,6,6,9) N+N*N/N 6+6*9/3
List(3,6,7,10) N+N*N/N 10+6*7/3
List(3,6,7,7) (N-(N-N))*N (7-(6-7))*3
List(3,6,7,8) (N-N)*N*N (7-6)*3*8
List(3,6,7,9) N*N-N+N 3*7-6+9
List(3,6,8,10) (N-(N-N))*N (6-(8-10))*3
List(3,6,8,8) N+N*N/N 8+6*8/3
List(3,6,8,9) (N-(N-N))*N (3-(8-9))*6
List(3,6,9,10) (N-(N-N))*N (3-(9-10))*6
List(3,6,9,9) N*N-N+N 3*9-9+6
List(3,7,10,10) N+N-(N-N) 7+10-(3-10)
List(3,7,7,10) N*N-N+N 3*7-7+10
List(3,7,7,7) (N/N+N)*N (7/7+7)*3
List(3,7,7,8) N*N-N+N 3*8-7+7
List(3,7,7,9) (N-N/N)*N (9-7/7)*3
List(3,7,8,8) (N-N)*N*N (8-7)*3*8
List(3,7,8,9) (N-(N-N))*N (7-(8-9))*3
List(3,7,9,10) N*N-N+N 3*9-10+7
List(3,7,9,9) (N/N+N)*N (9/9+7)*3
List(3,8,10,10) N*N-N+N 3*8-10+10
List(3,8,8,10) (N*N-N)/N (8*10-8)/3
List(3,8,8,8) N*N-N+N 3*8-8+8
List(3,8,8,9) (N-N)*N*N (9-8)*3*8
List(3,8,9,10) (N-N)*N*N (10-9)*3*8
List(3,8,9,9) N*N-N+N 3*8-9+9
List(3,9,10,10) (N-N/N)*N (9-10/10)*3
List(3,9,9,10) (N-(N-N))*N (9-(10-9))*3
List(3,9,9,9) N+N-(N-N) 9+9-(3-9)
List(4,4,10,10) (N*N-N)/N (10*10-4)/4
List(4,4,4,10) (N*N-N)*N (4*4-10)*4
List(4,4,4,4) N*N+N+N 4*4+4+4
List(4,4,4,5) (N/N+N)*N (4/4+5)*4
List(4,4,4,6) N*N-N+N 4*6-4+4
List(4,4,4,7) (N+N)*(N-N) (4+4)*(7-4)
List(4,4,4,8) (N/N+N)*N (8/4+4)*4
List(4,4,4,9) N*(N-N)+N 4*(9-4)+4
List(4,4,5,10) N*(N-N)+N 4*(10-5)+4
List(4,4,5,5) (N-(N-N))*N (5-(4-5))*4
List(4,4,5,6) (N-N)*N*N (5-4)*4*6
List(4,4,5,7) (N-(N-N))*N (4-(5-7))*4
List(4,4,5,8) N*N-N+N 4*5-4+8
List(4,4,6,10) N*(N-N)+N 10*(6-4)+4
List(4,4,6,8) (N-(N-N))*N (4-(6-8))*4
List(4,4,6,9) N*N/N/N 4*4/6/9
List(4,4,7,10) (N+N)*(N-N) (4+4)*(10-7)
List(4,4,7,7) (N-N/N)*N (4-4/7)*7
List(4,4,7,8) N*N-N+N 4*7-8+4
List(4,4,7,9) (N-(N-N))*N (4-(7-9))*4
List(4,4,8,10) (N-(N-N))*N (4-(8-10))*4
List(4,4,8,8) N*(N-N)+N 4*(8-4)+8
List(4,4,8,9) N*N-(N+N) 4*9-(4+8)
List(4,5,10,10) N+N*N/N 4+10*10/5
List(4,5,5,10) N+N+N+N 4+5+5+10
List(4,5,5,5) N*N-N+N 5*5-5+4
List(4,5,5,6) N*N-N+N 4*6-5+5
List(4,5,5,7) (N-N/N)*N (7-5/5)*4
List(4,5,5,8) (N-N/N)*N (4-5/5)*8
List(4,5,5,9) N*N-N+N 4*5-5+9
List(4,5,6,10) N*N-N+N 4*5-6+10
List(4,5,6,6) (N-N)*N*N (6-5)*4*6
List(4,5,6,7) (N-(N-N))*N (5-(6-7))*4
List(4,5,6,8) (N-(N-N))*N (4-(6-5))*8
List(4,5,6,9) N+N+N+N 4+5+6+9
List(4,5,7,10) N*(N-N)+N 10*(7-5)+4
List(4,5,7,7) (N/N+N)*N (7/7+5)*4
List(4,5,7,8) (N-(N-N))*N (5-(7-8))*4
List(4,5,7,9) N*N-N+N 4*7-9+5
List(4,5,8,10) (N+N)*N/N (4+8)*10/5
List(4,5,8,8) (N/N+N)*N (8/8+5)*4
List(4,5,8,9) (N-(N-N))*N (5-(8-9))*4
List(4,5,9,10) (N-(N-N))*N (5-(9-10))*4
List(4,5,9,9) (N/N+N)*N (9/9+5)*4
List(4,6,10,10) N*N-N+N 4*6-10+10
List(4,6,6,10) (N+N)*N/N (6+10)*6/4
List(4,6,6,6) N*N-N+N 4*6-6+6
List(4,6,6,7) (N-N)*N*N (7-6)*4*6
List(4,6,6,8) N*N/(N-N) 6*8/(6-4)
List(4,6,6,9) N*(N-N)+N 9*(6-4)+6
List(4,6,7,10) N*N-N+N 4*7-10+6
List(4,6,7,7) N*N-N+N 4*6-7+7
List(4,6,7,8) (N-N)*N*N (8-7)*4*6
List(4,6,7,9) (N+N)*N/N (7+9)*6/4
List(4,6,8,10) N*(N-N)+N 4*(10-6)+8
List(4,6,8,8) N*N-N+N 4*6-8+8
List(4,6,8,9) (N-N)*N*N (9-8)*4*6
List(4,6,9,10) (N-N)*N*N (10-9)*4*6
List(4,6,9,9) N*N-N+N 4*6-9+9
List(4,7,10,10) (N-N/N)*N (7-10/10)*4
List(4,7,7,7) (N-N/N)*N (7-7/7)*4
List(4,7,7,8) (N-(N-N))*N (7-(8-7))*4
List(4,7,8,10) N+N*N/N 10+7*8/4
List(4,7,8,8) (N-(N-N))*N (4-(8-7))*8
List(4,7,8,9) (N-(N-N))*N (7-(9-8))*4
List(4,7,9,10) (N-(N-N))*N (7-(10-9))*4
List(4,7,9,9) (N-N/N)*N (7-9/9)*4
List(4,8,10,10) N+N-(N-N) 8+10-(4-10)
List(4,8,8,10) (N-(N-N))*N (8-(10-8))*4
List(4,8,8,8) N+N*N/N 8+8*8/4
List(4,8,8,9) (N-(N-N))*N (4-(9-8))*8
List(4,8,9,10) (N-(N-N))*N (4-(10-9))*8
List(4,8,9,9) (N-N/N)*N (4-9/9)*8
List(4,9,9,10) N+N-(N-N) 9+9-(4-10)
List(5,5,10,10) N*N-N/N 5*5-10/10
List(5,5,5,5) N*N-N/N 5*5-5/5
List(5,5,5,6) N*N-N+N 5*5-6+5
List(5,5,5,9) N+N+N+N 5+5+5+9
List(5,5,6,6) (N-(N-N))*N (5-(6-5))*6
List(5,5,6,7) N*N-N+N 5*5-7+6
List(5,5,6,8) N+N+N+N 5+5+6+8
List(5,5,7,10) (N+N)*N/N (5+7)*10/5
List(5,5,7,7) N*N-N/N 5*5-7/7
List(5,5,7,8) N*N-N+N 5*5-8+7
List(5,5,8,10) (N+N)*N/N (5+10)*8/5
List(5,5,8,8) N*N-N/N 5*5-8/8
List(5,5,8,9) N*N-N+N 5*5-9+8
List(5,5,9,10) N*N-N+N 5*5-10+9
List(5,5,9,9) N*N-N/N 5*5-9/9
List(5,6,10,10) (N+N)*N/N (10+10)*6/5
List(5,6,6,10) (N+N)*N/N (6+6)*10/5
List(5,6,6,6) (N-N/N)*N (5-6/6)*6
List(5,6,6,7) (N-(N-N))*N (5-(7-6))*6
List(5,6,6,8) N*(N-N)+N 6*(8-5)+6
List(5,6,6,9) N*N-N*N 6*9-5*6
List(5,6,7,7) (N-N/N)*N (5-7/7)*6
List(5,6,7,8) (N-(N-N))*N (5-(8-7))*6
List(5,6,7,9) N*(N-N)+N 9*(7-5)+6
List(5,6,8,10) N*N/N/N 5*6/10/8
List(5,6,8,8) (N-(N-N))*N (5-(8-6))*8
List(5,6,8,9) (N-(N-N))*N (5-(9-8))*6
List(5,6,9,10) (N-(N-N))*N (5-(10-9))*6
List(5,6,9,9) N*(N-N)+N 5*(9-6)+9
List(5,7,10,10) N+N*N/N 10+7*10/5
List(5,7,7,10) N*(N-N)+N 7*(7-5)+10
List(5,7,7,9) (N+N)*(N-N) (5+7)*(9-7)
List(5,7,8,10) (N+N)*(N-N) (5+7)*(10-8)
List(5,7,8,8) N*(N-N)+N 8*(7-5)+8
List(5,7,8,9) (N-(N-N))*N (5-(9-7))*8
List(5,7,9,10) N*(N-N)+N 5*(10-7)+9
List(5,8,8,10) (N-(N-N))*N (5-(10-8))*8
List(5,8,8,8) N*N-(N+N) 5*8-(8+8)
List(5,8,8,9) N*N/(N-N) 8*9/(8-5)
List(5,9,10,10) N+N-(N-N) 9+10-(5-10)
List(6,10,10,10) N+N-(N-N) 10+10-(6-10)
List(6,6,6,10) N*N-N*N 6*10-6*6
List(6,6,6,6) N+N+N+N 6+6+6+6
List(6,6,6,8) (N-(N-N))*N (6-(8-6))*6
List(6,6,6,9) N*(N-N)+N 6*(9-6)+6
List(6,6,7,10) N*(N-N)+N 6*(10-7)+6
List(6,6,7,9) (N-(N-N))*N (6-(9-7))*6
List(6,6,8,10) (N-(N-N))*N (6-(10-8))*6
List(6,6,8,8) N*N/(N-N) 6*8/(8-6)
List(6,6,8,9) (N-(N-N))*N (6-(9-6))*8
List(6,6,9,10) (N+N)*N/N (6+10)*9/6
List(6,7,10,10) (N-N)*N-N (10-7)*10-6
List(6,7,7,10) (N-(N-N))*N (7-(10-7))*6
List(6,7,8,10) (N-(N-N))*N (6-(10-7))*8
List(6,7,8,9) N*N/(N-N) 6*8/(9-7)
List(6,7,9,9) N*(N-N)+N 9*(9-7)+6
List(6,8,8,10) N*N/(N-N) 6*8/(10-8)
List(6,8,8,8) N*(N-N)+N 8*(8-6)+8
List(6,8,8,9) (N+N)*N/N (8+8)*9/6
List(6,8,9,10) N*(N-N)+N 9*(10-8)+6
List(6,8,9,9) N*N/(N-N) 8*9/(9-6)
List(6,9,9,10) N+N*N/N 9+9*10/6
List(7,7,9,10) N*(N-N)+N 7*(9-7)+10
List(7,8,10,10) N*(N-N)+N 7*(10-8)+10
List(7,8,8,10) N*N-N*N 8*10-7*8
List(7,8,8,9) N*(N-N)+N 8*(9-7)+8
List(7,8,9,10) N*N/(N-N) 8*9/(10-7)
List(8,8,8,10) N*(N-N)+N 8*(10-8)+8