# Levels
## Levels for vanilla version of LittleX (June 2023)
| Level | Equation | Minimum number of moves |
| :----| :----| :---: |
| 1 | `(+ x + a) = b` | 1 |
| 2 | `(* x * c) = d` | 1 |
| 3 | `e = (* b / x)` | 2 |
| 4 | `d = (+ a - x)` | 2 |
| 5 | `(+ (* a * x) - b) = c` | 2 |
| 6 | `(* (* a * x) / b = (* c * d)` | 2 |
| 7 | `(+ b - e) = (+ c - d - x)` | 3 |
| 8 | `(* a * (+ x - b)) = d` | 2 |
| 9 | `(* a / x) = (* 1 / b)` | 3 |
| 10 | `(* (* a * (+ x + b)) / c) = d` | 3 |
| 11 | `(* a * (+ (* b * x) - 1)) = (* a * c)` | 3 |
| 12 | `(+ (* a * x) + (* b * x) ) = c` | 2 |
| 13 | `(+ (* 1 / x) + a) = b` | 4 |
| 14 | `(* a * (+ (* x / a) - b)) = c` | 3 |
| 15 | `(+ (* a * x) + b ) = (+ (* c * x) - a` | 4 |
## John's new levels (genus)
From working backwards from a final position, I've come up with some interesting levels:
```
x = (+ (* a2 * (+ x - 1)) + (* a1 * c2))
```
```
x = (+ (* a3 * (+ x - 1)) + (* a2 * c3))
```
```
(+ (* c2 * x) - b2) = (* c2 * (* a2 * c2))
```
```
(+ (* (+ x - (* c2 * a2) ) / b1 ) - c1 ) = a1
```
:::danger
more to come ...
:::
## Superpowers
orbs super power to upgrade the genus of a genus bubble (or single term) to its next genus
orbs can be constrained orbs too, like one with + sign which can only be put on top of a summation expression, etc
reveal superpower: convert character to number to simplify a complex expression and earn stars or something cool if you do that, even though level could be solved without that simplification
## Summary
| Level | Snapshot | Comments |
| :---: | :---: | :---: |
| 1 |  |
| 2 |  |
| 3 |  |
| 4 |  |
| 5 |  |
| 6 |  |
| 7 |  |
| 8 |  |
| 9 |  |
| 10 |  |
| 11 |  |
| 12 |  |
| 13 |  |
| 14 |  |
| 15 |  | Awesome level! |
| 16 |  | Needs 1 super-power |
## Blackboard
| Upstairs | Downstairs |
| :---: | :---: |
|  |  |
|  |  |
|  | 
|  | 
[Jyoti, Anup] We love the idea of showing the combined number on the blackboard!
## Notes from internal genus discussions
* What's the narrative reason for combining terms by genus?
* Unclear why I should even combine it in `x = a + b` (first level, has x already isolated). Hmm.. thinking.
> [name=johnbamberg] I think the narrative issue is offset by the blackboard.
* Level 1 to 6 felt dull, since they have trivial genus combinations and it didn't motivate me much to play further..it could be resolved by the party bubble idea we discuss below..what do you think John?
> [name=johnbamberg] Alternatively, I think it would be OK if Level 3 was changed slightly. The levels surrounding it do something new, so it is only boring to us really. We could introduce a super-power in Level 3 by changing it to $$(* a2 * x) = b3.$$
* Should unselect the selected term when player clicks outside any term.
* Genus narrative motivation idea:
* Characters outside any bubble are unhappy and the world is noisy, this is how the level begins.
* Characters become happy and noisy once they get inside a genus bubble, and progressively happier as the bubble they are in expands. Sound goes inside the bubble.
* While they are becoming happier, we can visually show that the bubble is containing their party noise inside it, thus making x happier and calmer too as the characters get bubbled up among themselves more and more.
> [name=johnbamberg] Yes this is good. Also the bubble could visually take on different guises as we change the background theme. So it could literally be a soap bubble for one level, but then it could also be a massive seed pod or something, in a different theme.
* Two similar terms should be able to factor out as a common factor even if they have different genus values. Their combined genus can be the highest genus value from either of them, what do you think John?
> [name=johnbamberg] Or perhaps the smallest genus? I'm not entirely sure what would make the most sense. Perhaps "smallest" is best as factorisation invariably leads to simplification of the mathematics, but at a cost of reducing the overall genus.
* Idea for simplification as a game mechanic:
* Once player is well versed enough with isolation + genus as the challenge, we can introduce simplification of expressions also as a challenge in the game maybe by limiting the max number of total characters that can be part of the party bubble on the right side. This is where we need super powers.
* Idea for combining numbers with genus terms:
* Numbers can just enter the genus bubble without changing the bubble’s genus value
* This will help level 11 solve: $(*a2 * (+x + (*1/a2))) = (*d1 * c1)$
* Genus 4 (Genus.D) terms can combine to wrap around to become Genus 1 (Genus.A)
* What should happen to the party inside the bubble when 4 and 4 become Genus 1, should the party sound go off? that's why they suddenly sit down and stop having fun?
> [name=johnbamberg] Maybe this is OK. Having to be "cruel to be kind" might work. That is, making a whole group unhappy, to later all be happy, is a nice strategy.
* Should the first 15 levels only have 5 characters max in the party bubble?
> [name=johnbamberg] I'm still thinking about this. I'm a bit worried about putting too much drag into the game.
## Genus-ifying some levels
It would be cool to force the user to take a strange route with Level 14.
:::success
\begin{align}
\frac{a(x+b)}{c}=d&\longrightarrow \frac{a\cdot x+a\cdot b}{c}=d\\
&\longrightarrow a\cdot x+a\cdot b=c\cdot d\\
&\longrightarrow a\cdot x=c\cdot d-a\cdot b\\
&\longrightarrow x=\dfrac{c\cdot d-a\cdot b}{a}
\end{align}
:::
Can we do this with genus? (Genus 1,2,3,4 sequence)
:::success
\begin{align}
\frac{a_3(x+b_3)}{c_2}=d_2&\longrightarrow \frac{a_3\cdot x+a_3\cdot b_3}{c_2}=d_2\\
&\longrightarrow a_3\cdot x+a_3\cdot b_3=c_2\cdot d_2\\
&\Longrightarrow a_3\cdot x+a_3\cdot b_3=c_3\cdot d_3\\
&\longrightarrow a_3\cdot x=c_3\cdot d_3-a_3\cdot b_3\\
&\longrightarrow x=\dfrac{c_3\cdot d_3-a_3\cdot b_3}{a_3}
\end{align}
:::
Not happy with this. Would be good to put special power here?
# Levels breakdown
## Level 1
:::info
$x - a = b$
:::
- Introduction to moving a summation term
- Introduction to combining summation terms
<details>
<summary>Solution</summary>
:::success
$x - a = b$
$x = b + a$
:::
</details>
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new SummationExpression(
new SummationTerm("x"),
new SummationTerm(Operator.Subtract, "a")),
rhs: new Variable("b"),
unknownVariableName: "x"
));
```
</details>
## Level 2
:::info
$\displaystyle\frac{x}{a}=b$
:::
- Practice for moving and combining product terms
<details>
<summary>Solution</summary>
:::success
$x = a . b$
:::
</details>
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ProductExpression(
new ProductTerm("x"),
new ProductTerm(Operator.Divide, "a")),
rhs: new Variable("b"),
unknownVariableName: "x"
));
```
</details>
## Level 3
:::info
$a\cdot x = b$
:::
- Introduction to moving a term using portal, a product term in this case
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ProductExpression(
new ProductTerm("a"),
new ProductTerm("x")),
rhs: new ProductExpression(
new ProductTerm("b")),
unknownVariableName: "x"
));
```
</details>
## Level 4
:::info
$a\cdot x - b = c$
:::
- Having both a product term and summation term.
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new SummationExpression(
new SummationTerm(
new ProductExpression(
new ProductTerm("a"),
new ProductTerm("x"))),
new SummationTerm(Operator.Subtract, new Variable("b"))),
rhs: new Variable("c"),
unknownVariableName: "x"
));
```
</details>
## Level 5
:::info
$\displaystyle\frac{a\cdot x}{b}=c\cdot d$
:::
- Three product expressions and nesting of product expressions.
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ProductExpression(
new ProductTerm("a"),
new ProductTerm("x"),
new ProductTerm(Operator.Divide, new Variable("b"))),
rhs: new ProductExpression(
new ProductTerm("c"),
new ProductTerm("d")),
unknownVariableName: "x"
));
```
</details>
## Level 6
:::info
$a(x - b) = c$
:::
- Introduction to expansion.
- Show user that they need to drag $a$ over the bracketed expression.
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ProductExpression(
new ProductTerm("a"),
new ProductTerm(
new SummationExpression(
new SummationTerm("x"),
new SummationTerm(Operator.Subtract, "b")))),
rhs: new Variable("c"),
unknownVariableName: "x"
));
```
</details>
---
As you can see from the graph below, there are essentially two paths to a solution, and one has minimum distance 2, the other, 3 steps. This is one way we can account for cost in this level.

## Level 7
:::info
$a(b\cdot x-a)=d$
:::
- More practice at expansion.
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ProductExpression(
new ProductTerm("a"),
new ProductTerm(
new SummationExpression(
new SummationTerm(
new ProductExpression(
new ProductTerm("b"),
new ProductTerm("x"))),
new SummationTerm(Operator.Subtract, new Variable("a"))))),
rhs: new SummationExpression(
new SummationTerm("d"),
new SummationTerm(Operator.Subtract, new Variable("c"))),
unknownVariableName: "x"
));
```
</details>
## Level 8 (new)
:::info
$a\cdot x+b\cdot x=c$
:::
- Factorisation to get one $x$.
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new SummationExpression(
new SummationTerm(
new ProductExpression(
new ProductTerm("a"),
new ProductTerm("x"))),
new SummationTerm(
new ProductExpression(
new ProductTerm("b"),
new ProductTerm("x")))),
rhs: new Variable("c"),
unknownVariableName: "x"
));
```
</details>
## Level 9
:::info
$a\cdot x+b=c\cdot x-a$
:::
- x on both sides
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new SummationExpression(
new SummationTerm(
new ProductExpression(
new ProductTerm("a"),
new ProductTerm("x"))),
new SummationTerm("b")),
rhs: new SummationExpression(
new SummationTerm(
new ProductExpression(
new ProductTerm("c"),
new ProductTerm("x"))),
new SummationTerm(Operator.Subtract, new Variable("a"))),
unknownVariableName: "x"
));
```
</details>
## Level 10
:::info
$\displaystyle\frac{a\cdot (x+b)}{c}=d$
:::
- x is on a numerator
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ProductExpression(
new ProductTerm("a"),
new ProductTerm(
new SummationExpression(
new SummationTerm("x"),
new SummationTerm("b"))),
new ProductTerm(Operator.Divide, new Variable("c"))),
rhs: new Variable("d"),
unknownVariableName: "x"
));
```
</details>
## Level 11
:::info
$\displaystyle\frac{x-a}{b}=\displaystyle\frac{c-x}{d}$
:::
- Two x's, but one is positive and the other is negative.
:::info
\begin{align*}
x^2 + 2x + 1 &= 0 \\
(x+1)^2 &= 0 \\
\llap{$\rightarrow$\hspace{50pt}} x &= -1
\end{align*}
:::
<details>
<summary>Solution</summary>
:::success
\begin{align*}
x - a &= \displaystyle\frac{b \cdot (c - x)}{d} \\
d \cdot (x - a) &= b \cdot (c - x) \\
dx - da &= bc - bx \\
dx &= bc - bx + da \\
dx + bx &= bc + da \\
(d + b) \cdot x &= bc + da \\
x &= \displaystyle\frac{bc + da}{d + b} \\
\end{align*}
:::
</details>
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ProductExpression(
new ProductTerm(
new SummationExpression(
new SummationTerm("x"),
new SummationTerm(Operator.Subtract, "a"))),
new ProductTerm(Operator.Divide, "b")),
rhs: new ProductExpression(
new ProductTerm(
new SummationExpression(
new SummationTerm("c"),
new SummationTerm(Operator.Subtract, "x"))),
new ProductTerm(Operator.Divide, "d")),
unknownVariableName: "x"
));
```
</details>
## Level 12
:::info
$\displaystyle\frac{a}{x+a}=\displaystyle\frac{b}{x-c}$
:::
- x is on both sides and two denominators
- numerators have larger numbers
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ProductExpression(
new ProductTerm("a"),
new ProductTerm(
Operator.Divide,
new ProductExpression(
new ProductTerm("b"),
new ProductTerm(
new SummationExpression(
new SummationTerm("x"),
new SummationTerm("c")))))),
rhs: new ProductExpression(
new ProductTerm("b"),
new ProductTerm(
Operator.Divide,
new Variable("x"))),
unknownVariableName: "x"
));
```
</details>
## Level 13
:::info
$\displaystyle\frac{a}{b\cdot(x+c)}=\displaystyle\frac{b}{x}$
:::
- More practice where $x$ is on both sides, denominators, and expansion is involved!
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ProductExpression(
new ProductTerm("a"),
new ProductTerm(
Operator.Divide,
new SummationExpression(
new SummationTerm("x"),
new SummationTerm("a")))),
rhs: new ProductExpression(
new ProductTerm("b"),
new ProductTerm(
Operator.Divide,
new SummationExpression(
new SummationTerm("x"),
new SummationTerm(Operator.Subtract, new Variable("c"))))),
unknownVariableName: "x"
));
```
</details>
## Level 14
:::info
$\displaystyle\frac{1}{x}=\displaystyle\frac{a}{x+b}$
:::
- 1 appears in this one.
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ProductExpression(
new ProductTerm("1"),
new ProductTerm(
Operator.Divide,
new Variable("x"))),
rhs: new ProductExpression(
new ProductTerm("a"),
new ProductTerm(
Operator.Divide,
new SummationExpression(
new SummationTerm("x"),
new SummationTerm("b")))),
unknownVariableName: "x"
));
```
</details>
## Level 15
:::info
$\displaystyle\frac{1}{x}+a=b$
:::
- Fractions mixed with addition.
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new SummationExpression(
new SummationTerm(
new ProductExpression(
new ProductTerm("1"),
new ProductTerm(
Operator.Divide,
new Variable("x"))),
new SummationTerm("a")),
rhs: new Variable("b"),
unknownVariableName: "x"
));
```
</details>
## Level 16
:::info
$\displaystyle\frac{x-a}{x+b}=c$
:::
- The numerator and denominator has $x$
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ProductExpression(
new ProductTerm(
new SummationExpression(
new SummationTerm("x"),
new SummationTerm(Operator.Subtract,
new Variable("a"))),
new ProductTerm(Operator.Divide),
new SummationExpression(
new SummationTerm("x"),
new SummationTerm("b"))),
rhs: new Variable("c"),
unknownVariableName: "x"
));
```
</details>
## Level 17
:::info
$\displaystyle\frac{a\cdot x-b}{-c+d\cdot x}=b$
:::
- making the linear terms more complicated, and having x on numerator and denominator.
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ProductExpression(
new ProductTerm(
new SummationExpression(
new SummationTerm(
new ProductExpression(
new ProductTerm("a"),
new ProductTerm("x"))),
new SummationTerm(Operator.Subtract,
new Variable("b")))),
new ProductTerm(Operator.Divide,
new SummationExpression(
new SummationTerm(Operator.Subtract,
new Variable("c")),
new SummationTerm(
new ProductExpression(
new ProductTerm("d"),
new ProductTerm("x")))))),
rhs: new Variable("b"),
unknownVariableName: "x"
));
```
</details>
## Level 18
:::info
$\displaystyle\frac{-x+a}{b\cdot x}+d=c$
:::
- Now there is a choice of whether to multiply by denominator or subtract $d$
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new SummationExpression(
new SummationTerm(
new ProductExpression(
new ProductTerm(
new SummationExpression(
new SummationTerm(Operator.Subtract,
new Variable("x")),
new SummationTerm("a"))),
new ProductTerm(Operator.Divide,
new ProductExpression(
new ProductTerm("b"),
new ProductTerm("x"))))),
new SummationTerm("d")),
rhs: new Variable("c"),
unknownVariableName: "x"
));
```
</details>
## Level 19
:::info
$a\cdot(x+b)+x=-c\cdot x$
:::
- Three $x$'s
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new SummationExpression(
new SummationTerm(
new ProductExpression(
new ProductTerm("a"),
new ProductTerm(
new SummationExpression(
new SummationTerm("x"),
new SummationTerm("b"))))),
new SummationTerm("x")),
rhs: new SummationExpression(
new SummationTerm(Operator.Subtract,
new ProductExpression(
new ProductTerm("c"),
new ProductTerm("x")))),
unknownVariableName: "x"
));
```
</details>
## Level 20
:::info
$a\cdot (x-b\cdot x)=c\cdot x+d$
:::
- Three x's, needing expansion and factoring.
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ProductExpression(
new ProductTerm("a"),
new ProductTerm(
new SummationExpression(
new SummationTerm("x"),
new SummationTerm(Operator.Subtract,
new ProductExpression(
new ProductTerm("b"),
new ProductTerm("x")))))),
rhs: new SummationExpression(
new SummationTerm(
new ProductExpression(
new ProductTerm("c"),
new ProductTerm("x"))),
new SummationTerm("d")),
unknownVariableName: "x"
));
```
</details>
## Level 21
:::info
$\displaystyle\frac{1}{x}-\displaystyle\frac{a}{x}=b$
:::
- Hurdle level
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new SummationExpression(
new SummationTerm(
new ProductExpression(
new ProductTerm("1"),
new ProductTerm(Operator.Divide,
new Variable("x")))),
new SummationTerm(Operator.Subtract,
new ProductExpression(
new ProductTerm("a"),
new ProductTerm(Operator.Divide,
new Variable("x"))))),
rhs: new Variable("b"),
unknownVariableName: "x"
));
```
</details>
## Level 22
:::info
$((x+b)\cdot a-c)\cdot b=d$
:::
- nested brackets
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ProductExpression(
new ProductTerm(
new SummationExpression(
new SummationTerm(
new ProductExpression(
new ProductTerm(
new SummationExpression(
new SummationTerm("x"),
new SummationTerm("b"))),
new ProductTerm("a"))),
new SummationTerm(Operator.Subtract,
new Variable("c")))),
new ProductTerm("b")),
rhs: new Variable("d"),
unknownVariableName: "x"
));
```
</details>
## Level 23
:::info
$b\cdot (c\cdot x - a\cdot (x+b))=d$
:::
- practice with nested brackets
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ProductExpression(
new ProductTerm("b"),
new ProductTerm(
new SummationExpression(
new SummationTerm(
new ProductExpression(
new ProductTerm("c"),
new ProductTerm("x"))),
new SummationTerm(Operator.Subtract,
new ProductExpression(
new ProductTerm("a"),
new ProductTerm(
new SummationExpression(
new SummationTerm("x"),
new SummationTerm("b")))))))),
rhs: new Variable("d"),
unknownVariableName: "x"
));
```
</details>
## Level 24
:::info
$a\cdot \displaystyle\frac{x}{b\cdot(x+c)}=d$
:::
- practice with nested brackets
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ProductExpression(
new ProductTerm("a"),
new ProductTerm(
new ProductExpression(
new ProductTerm("x"),
new ProductTerm(Operator.Divide,
new ProductExpression(
new ProductTerm("b"),
new ProductTerm(
new SummationExpression(
new SummationTerm("x"),
new SummationTerm("c")))))))),
rhs: new Variable("d"),
unknownVariableName: "x"
));
```
</details>
## Level 25 (Challenge Level 1)
Every now and then, there could be a challenge level that the user can try of their own will to earn some new thing in the game.
:::info
$\displaystyle\frac{a\cdot(d-b\cdot x)+c}{e}=\left(a+b\cdot\left(\displaystyle\frac{x}{f}-a\right)\right)\cdot c$
:::
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ProductExpression(
new ProductTerm(
new SummationExpression(
new SummationTerm(
new ProductExpression(
new ProductTerm("a"),
new ProductTerm(
new SummationExpression(
new SummationTerm("d"),
new SummationTerm(Operator.Subtract,
new ProductExpression(
new ProductTerm("b"),
new ProductTerm("x"))))))),
new SummationTerm("c"))),
new ProductTerm(Operator.Divide, "e")),
rhs: new ProductExpression(
new ProductTerm(
new SummationExpression(
new SummationTerm("a"),
new SummationTerm(
new ProductExpression(
new ProductTerm("b"),
new ProductTerm(
new SummationExpression(
new SummationTerm(
new ProductExpression(
new ProductTerm("x"),
new ProductTerm(Operator.Divide, "f"))),
new SummationTerm(Operator.Subtract, "a"))))))),
new ProductTerm("c")),
unknownVariableName: "x"
));
```
</details>
---
# Indices
## Level 26
:::info
$(x+a)^b=c$
:::
- indices: apply inverse power
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ExponentialExpression(
new ExponentialTerm(
new SummationExpression(
new SummationTerm("x"),
new SummationTerm("a")
)
),
new ExponentialTerm(
Operator.Exponent,
new Variable("b")
)
),
rhs: new Variable("c"),
unknownVariableName: "x"
));
```
</details>
## Level 27
:::info
$x^b-a=c^d$
:::
- indices: apply inverse power
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new SummationExpression(
new SummationTerm(
new ExponentialExpression(
new ExponentialTerm("x"),
new ExponentialTerm(
Operator.Exponent,
new Variable("b")
)
)
),
new SummationTerm(Operator.Subtract, "a")
),
rhs: new ExponentialExpression(
new ExponentialTerm("c"),
new ExponentialTerm(Operator.Exponent, "d")
),
unknownVariableName: "x"
));
```
</details>
## Level 28
:::info
$(a\cdot x+b)^c=d^e$
:::
- indices: apply inverse power
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ExponentialExpression(
new ExponentialTerm(
new SummationExpression(
new SummationTerm(
new ProductExpression(
new ProductTerm("a"),
new ProductTerm("x"))),
new SummationTerm("b"))),
new ExponentialTerm(Operator.Exponent, "c")),
rhs: new ExponentialExpression(
new ExponentialTerm("d"),
new ExponentialTerm(Operator.Exponent, "e")),
unknownVariableName: "x"
));
```
</details>
## Level 29
:::info
$\displaystyle\frac{a}{x^b}=c$
:::
- indices: apply inverse power
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ProductExpression(
new ProductTerm("a"),
new ProductTerm(Operator.Divide,
new ExponentialExpression(
new ExponentialTerm("x"),
new ExponentialTerm(Operator.Exponent, "b")))),
rhs: new Variable("c"),
unknownVariableName: "x"
));
```
</details>
## Level 30
:::info
$x^{\frac{1}{a}}=b$
:::
Change to ...
:::success
$\left(x^{\frac{1}{a}}\right)^a=b$
:::
- composition of exponents becomes a product (becomes 1)
- fractional indices
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ExponentialExpression(
new ExponentialTerm(
new ExponentialExpression(
new ExponentialTerm("x"),
new ExponentialTerm(Operator.Exponent,
new ProductExpression(
new ProductTerm("1"),
new ProductTerm(Operator.Divide,"a"))))),
new ExponentialTerm(
new ExponentialTerm(Operator.Exponent, "a"))),
rhs: new Variable("b"),
unknownVariableName: "x"
));
```
</details>
## Level 31
:::info
$(x+c)^{\frac{b}{a}}=d$
:::
- practice with fractional indices
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ExponentialExpression(
new ExponentialTerm(
new SummationExpression(
new SummationTerm("x"),
new SummationTerm("c"))),
new ExponentialTerm(Operator.Exponent,
new ProductExpression(
new ProductTerm("b"),
new ProductTerm(Operator.Divide,"a")))),
rhs: new Variable("d"),
unknownVariableName: "x"
));
```
</details>
## Level 32
:::info
$x^a(x^b)=c$
:::
- addition of indices
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ProductExpression(
new ProductTerm(
new ExponentialExpression(
new ExponentialTerm("x"),
new ExponentialTerm(Operator.Exponent, "a"))),
new ProductTerm(
new ExponentialExpression(
new ExponentialTerm("x"),
new ExponentialTerm(Operator.Exponent, "b")))),
rhs: new Variable("c"),
unknownVariableName: "x"
));
```
</details>
## Level 33
:::info
$b\cdot x^a=\displaystyle\frac{x^c}{d}$
:::
- subtraction of indices
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ProductExpression(
new ProductTerm("b"),
new ProductTerm(
new ExponentialExpression(
new ExponentialTerm("x"),
new ExponentialTerm(Operator.Exponent, "a")))),
rhs: new ProductExpression(
new ProductTerm(
new ExponentialExpression(
new ExponentialTerm("x"),
new ExponentialTerm(Operator.Exponent, "c"))),
new ProductTerm(Operator.Divide, "d")),
unknownVariableName: "x"
));
```
</details>
## Level 34
:::info
$x^a = b^c$
:::
Change to
:::success
$(d\cdot x)^{-a} = b^c$
:::
- power law of indices
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ExponentialExpression(
new ExponentialTerm(
new ProductExpression(
new ProductTerm("d"),
new ProductTerm("x"))),
new ExponentialTerm(Operator.Exponent,
new SummationExpression(
new SummationTerm(Operator.Subtract,"q")))),
rhs: new ExponentialExpression(
new ExponentialTerm("b"),
new ExponentialTerm(Operator.Exponent, "p")),
unknownVariableName: "x"
));
```
</details>
## Level 35
:::info
$d\cdot x^a = b\cdot x^c$
:::
- practice
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ProductExpression(
new ProductTerm("d"),
new ProductTerm(
new ExponentialExpression(
new ExponentialTerm("x"),
new ExponentialTerm(Operator.Exponent, "a")))),
rhs: new ProductExpression(
new ProductTerm("b"),
new ProductTerm(
new ExponentialExpression(
new ExponentialTerm("x"),
new ExponentialTerm(Operator.Exponent, "c")))),
unknownVariableName: "x"
));
```
</details>
## Level 36
:::info
$b\cdot x^a=\displaystyle\frac{c}{d}$
:::
Change to
:::success
$b\cdot x^p=\displaystyle\frac{c}{x^{q-p}}$
:::
- Difference of exponents cancels once law of indices used.
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ProductExpression(
new ProductTerm("b"),
new ProductTerm(
new ExponentialExpression(
new ExponentialTerm("x"),
new ExponentialTerm(Operator.Exponent, "p")))),
rhs: new ProductExpression(
new ProductTerm("c"),
new ProductTerm(Operator.Divide,
new ExponentialExpression(
new ExponentialTerm("x"),
new ExponentialTerm(Operator.Exponent,
new SummationExpression(
new SummationTerm("q"),
new SummationTerm(Operator.Subtract, "p")))))),
unknownVariableName: "x"
));
```
</details>
## Level 37
:::info
$(a\cdot x^{1/p})^p=b+c$
:::
- practice
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ExponentialExpression(
new ExponentialTerm(
new ProductExpression(
new ProductTerm("a"),
new ProductTerm(
new ExponentialExpression(
new ExponentialTerm("x"),
new ExponentialTerm(Operator.Exponent,
new ProductExpression(
new ProductTerm("1"),
new ProductTerm(Operator.Divide, "p")
)))))),
new ExponentialTerm(Operator.Exponent, "p")),
rhs: new SummationExpression(
new SummationTerm("b"),
new SummationTerm("c")),
unknownVariableName: "x"
));
```
</details>
## Level 38
:::info
$x\cdot (c\cdot x^p+b)=c\cdot x^{p+1}$
:::
- practice
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ProductExpression(
new ProductTerm("x"),
new ProductTerm(
new SummationExpression(
new SummationTerm(
new ProductExpression(
new ProductTerm("c"),
new ProductTerm(
new ExponentialExpression(
new ExponentialTerm("x"),
new ExponentialTerm(Operator.Exponent, "r"))))),
new SummationTerm("b")))),
rhs: new ProductExpression(
new ProductTerm("c"),
new ProductTerm(
new ExponentialExpression(
new ExponentialTerm("x"),
new ExponentialTerm(Operator.Exponent,
new SummationExpression(
new SummationTerm("r"),
new SummationTerm("1")))))),
unknownVariableName: "x"
));
```
</details>
## Level 39
:::info
$\dfrac{a\cdot x^p}{b\cdot x^q}=d\cdot x^{p-q-1}$
:::
- practice
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new ProductExpression(
new ProductTerm("a"),
new ProductTerm(
new ExponentialExpression(
new ExponentialTerm("x"),
new ExponentialTerm(Operator.Exponent, "p"))),
new ProductTerm(Operator.Divide,
new ProductExpression(
new ProductTerm("b"),
new ProductTerm(
new ExponentialExpression(
new ExponentialTerm("x"),
new ExponentialTerm(Operator.Exponent, "q")))))),
rhs: new ProductExpression(
new ProductTerm("d"),
new ProductTerm(
new ExponentialExpression(
new ExponentialTerm("x"),
new ExponentialTerm(Operator.Exponent,
new SummationExpression(
new SummationTerm("p"),
new SummationTerm(Operator.Subtract,"q"),
new SummationTerm(Operator.Subtract,"1") ))))),
unknownVariableName: "x"
));
```
</details>
## Level 40
:::info
$x^q\cdot (x^p\cdot b)+(a\cdot x)^{p+q}=d\cdot e^q$
:::
- challenge
<details>
<summary>Code (click to expand)</summary>
```csharp
levels.Add(new Equation(
lhs: new SummationExpression(
new SummationTerm(
new ProductExpression(
new ProductTerm(
new ExponentialExpression(
new ExponentialTerm("x"),
new ExponentialTerm(Operator.Exponent, "q"))),
new ProductTerm(
new Product Expression(
new ProductTerm(
new ExponentialExpression(
new ExponentialTerm("x"),
new ExponentialTerm(Operator.Exponent,"p"))),
new ProductTerm("b"))))),
new SummationTerm(
new ExponentialExpression(
new ExponentialTerm(
new ProductExpression(
new ProductTerm("a"),
new ProductTerm("x"))),
new ExponentialTerm(Operator.Exponent,
new SummationExpression(
new SummationTerm("p"),
new SummationTerm("q")))))))),
rhs: new ProductExpression(
new ProductTerm("d"),
new ProductTerm(
new ExponentialExpression(
new ExponentialTerm("x"),
new ExponentialTerm(Operator.Exponent,
new SummationExpression(
new SummationTerm("p"),
new SummationTerm("q")))))))),
unknownVariableName: "x"
));
```
</details>
# Logarithms
## Level 41
:::info
$a^x=b$
:::
> The solution is $x=\log_ab$. How do we want this to look? What is the mechanic?
https://math.stackexchange.com/questions/30046/alternative-notation-for-exponents-logs-and-roots
## Level 42
:::info
$a^{b\cdot x}=c+d$
:::
---
# Concepts to cover
Open questions:
- start with symbols alone?
Difficulty progression:
- Simple equation with one variable (4)
a. 5x = 20
b. 8+2(x-4) = 16
c. 3x-5 = 10
- Simple equation with negative numbers ()
a. -x-4 = 11
b.
- One fraction equation
a. -3/4x = 10/13
b. (5x+1)/17 = 3
- Fraction linear equation
a. 2/3x – 3/2x = 1/12
b.
c. x-(1-3x/2)/4 = (2-x/4)/3-11/12
d. 3x/5-2 = 2x/5
e. (x + 11)/(x + 6) = 6
f. 1/2(10-4x) - 1/4(4x+12) = 0
- Expanding brackets
a. 2(x + 3) - 10 = 6(32 - 3x)
b. -(x + 2) = 2(3x - 6)
- Factoring terms into brackets
- Nested brackets
- Equation with multiple x’s
a. 4x-7(2-x) = 3 x + 2
b. (x + 2) (x + 3) + (x – 3) (x – 2) – 2x(x + 1) = 0
c. x/6-1=1/3(9-3x)
- Equations with multiple variables
a.
- Indices
- Log equations
- Sin/cos equations