| 123456789101112131415161718192021222324252627282930313233343536 | 
							- func solveEquation(equation string) string {
 
- 	part := strings.Split(equation, "=")
 
- 	x1, a1 := parse(part[0])
 
- 	x2, a2 := parse(part[1])
 
- 	if x1 == x2 && a1 == a2 {
 
- 		return "Infinite solutions"
 
- 	} else if x1 != x2 {
 
- 		return fmt.Sprintf("x=%d", (a2-a1)/(x1-x2))
 
- 	} else {
 
- 		return "No solution"
 
- 	}
 
- }
 
- func parse(eq string) (x int, a int) {
 
- 	pre, n := 0, len(eq)
 
- 	for i := range eq {
 
- 		if eq[i] == 'x' || i == n-1 || eq[i+1] == '-' || eq[i+1] == '+' {
 
- 			if eq[i] == 'x' {
 
- 				switch eq[pre:i] {
 
- 				case "", "+": // Handle special case
 
- 					x += 1
 
- 				case "-":
 
- 					x -= 1
 
- 				default:
 
- 					num, _ := strconv.Atoi(eq[pre:i])
 
- 					x += num
 
- 				}
 
- 			} else {
 
- 				num, _ := strconv.Atoi(eq[pre : i+1])
 
- 				a += num
 
- 			}
 
- 			pre = i + 1
 
- 		}
 
- 	}
 
- 	return
 
- }
 
 
  |