-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Refactor skill level * Add exponentAndRoot
- Loading branch information
Showing
14 changed files
with
288 additions
and
139 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
export type SkillLevels = "unknown" | "beginner" | "skilled" | "pro" | "expert" | ||
|
||
class SkillLevel { | ||
private skillLevel: SkillLevels | ||
|
||
constructor() { | ||
this.skillLevel = "unknown" | ||
} | ||
|
||
initSkillLevel(newSkillLevel: SkillLevels) { | ||
this.skillLevel = newSkillLevel | ||
} | ||
|
||
getSkillLevel() { | ||
return this.skillLevel | ||
} | ||
|
||
updateSkillLevel(newSkillLevel: SkillLevels) { | ||
this.skillLevel = newSkillLevel | ||
// Update user skill level to DB | ||
} | ||
} | ||
|
||
export default SkillLevel |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,36 +1,33 @@ | ||
import divide from "./divide" | ||
import multiply from "./multiply" | ||
import substract from "./substract" | ||
import sum from "./sum" | ||
import SkillLevel from "../../SkillLevel" | ||
import divideChallenge from "./divide" | ||
import multiplyChallenge from "./multiply" | ||
import substractChallenge from "./substract" | ||
import sumChallenge from "./sum" | ||
|
||
const subTopics = new Map<NameLowerCamelCase, SubTopic>() | ||
|
||
subTopics.set("sum", { | ||
name: "Yhteenlasku", | ||
getChallenge: sum.getChallenge, | ||
getCurrentSkillLevel: sum.getSkillLevel, | ||
updateSkillLevel: sum.updateSkillLevel, | ||
getChallenge: sumChallenge, | ||
skillLevel: new SkillLevel(), | ||
}) | ||
|
||
subTopics.set("substract", { | ||
name: "Vähennyslasku", | ||
getChallenge: substract.getChallenge, | ||
getCurrentSkillLevel: substract.getSkillLevel, | ||
updateSkillLevel: substract.updateSkillLevel, | ||
getChallenge: substractChallenge, | ||
skillLevel: new SkillLevel(), | ||
}) | ||
|
||
subTopics.set("multiply", { | ||
name: "Kertolasku", | ||
getChallenge: multiply.getChallenge, | ||
getCurrentSkillLevel: multiply.getSkillLevel, | ||
updateSkillLevel: multiply.updateSkillLevel, | ||
getChallenge: multiplyChallenge, | ||
skillLevel: new SkillLevel(), | ||
}) | ||
|
||
subTopics.set("divide", { | ||
name: "Jakolasku", | ||
getChallenge: divide.getChallenge, | ||
getCurrentSkillLevel: divide.getSkillLevel, | ||
updateSkillLevel: divide.updateSkillLevel, | ||
getChallenge: divideChallenge, | ||
skillLevel: new SkillLevel(), | ||
}) | ||
|
||
export default subTopics |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
79 changes: 79 additions & 0 deletions
79
src/math/arithmetic/exponentiationAndRoot/exponentiation.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
import { getRandomInt } from "../../utils" | ||
|
||
export default (currentSkillLevel: SkillLevels): Challenge => { | ||
let baseMin = 0 | ||
let baseMax = 10 | ||
let exponentMin = 0 | ||
let exponentMax = 3 | ||
|
||
if (currentSkillLevel === "unknown" || currentSkillLevel === "beginner") { | ||
baseMin = 0 | ||
baseMax = 10 | ||
exponentMin = 1 | ||
exponentMax = 2 | ||
} else if (currentSkillLevel === "skilled") { | ||
baseMin = -5 | ||
baseMax = 5 | ||
exponentMin = 0 | ||
exponentMax = 3 | ||
} else if (currentSkillLevel === "pro") { | ||
baseMin = -6 | ||
baseMax = 6 | ||
exponentMin = -3 | ||
exponentMax = 3 | ||
} else if (currentSkillLevel === "expert") { | ||
baseMin = -10 | ||
baseMax = 10 | ||
exponentMin = -3 | ||
exponentMax = 3 | ||
} | ||
|
||
const base = getRandomInt(baseMin, baseMax) | ||
|
||
const exponent = getRandomInt(exponentMin, exponentMax) | ||
|
||
let steps: Step[] = [] | ||
let answers: Latex[] | undefined = [] | ||
|
||
if (exponent === 0 && base !== 0) { | ||
steps = [ | ||
{ | ||
math: `=1`, | ||
explanation: "Kaikki nollaa suuremmat luvut potenssiin nolla on yksi.", | ||
}, | ||
] | ||
answers = ["1"] | ||
} else if (exponent === 0 && base === 0) { | ||
steps = [ | ||
{ | ||
math: `=määrittelemätön`, | ||
explanation: "Nolla potenssiin nolla on määrittelemätön", | ||
}, | ||
] | ||
answers = undefined | ||
} else { | ||
const baseWithMultiplier = `${base.toString()}*` | ||
const exponentiationAsMultiplies = `${baseWithMultiplier.repeat( | ||
exponent - 1 | ||
)}${base}` | ||
steps = [ | ||
{ | ||
math: `=${exponentiationAsMultiplies}`, | ||
explanation: | ||
"Potenssi on lyhennysmerkintä saman luvun toistuvalle kertolaskulle. " + | ||
"Potenssissa kantaluku kerrotaan toistuvasti eksponentin osoittaman määrän verran", | ||
}, | ||
{ | ||
math: `=${base ** exponent}`, | ||
}, | ||
] | ||
answers = [`${base ** exponent}`] | ||
} | ||
|
||
return { | ||
description: "Ratkaise", | ||
descriptionLatex: `${base}^${exponent}`, | ||
steps, | ||
answers, | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
import exponentiationChallenge from "./exponentiation" | ||
import SkillLevel from "../../SkillLevel" | ||
import squareRootChallenge from "./squareRoot" | ||
|
||
const subTopics = new Map<NameLowerCamelCase, SubTopic>() | ||
|
||
subTopics.set("exponent", { | ||
name: "Potenssi", | ||
getChallenge: exponentiationChallenge, | ||
skillLevel: new SkillLevel(), | ||
}) | ||
|
||
subTopics.set("squareRoot", { | ||
name: "Neliöjuuri", | ||
getChallenge: squareRootChallenge, | ||
skillLevel: new SkillLevel(), | ||
}) | ||
|
||
export default subTopics |
Oops, something went wrong.