diff --git a/docs/css/app.05e9b227.css b/docs/css/app.05e9b227.css
new file mode 100644
index 0000000..3e0b86b
--- /dev/null
+++ b/docs/css/app.05e9b227.css
@@ -0,0 +1 @@
+@-webkit-keyframes shake{0%{border-color:#df4160;transform:translate(0)}20%{transform:translate(.2em)}40%{transform:translate(-.2em)}60%{border-color:#df4160;transform:translate(.2em)}80%{transform:translate(-.2em)}to{transform:translate(0);border-color:#333}}@keyframes shake{0%{border-color:#df4160;transform:translate(0)}20%{transform:translate(.2em)}40%{transform:translate(-.2em)}60%{border-color:#df4160;transform:translate(.2em)}80%{transform:translate(-.2em)}to{transform:translate(0);border-color:#333}}#input input.shake{-webkit-animation:shake .5s;animation:shake .5s}#app,body,html{height:100%;min-height:100%;background:#0f0f0f}#input input{text-align:center;background-color:transparent;border-color:#333;border-left-width:0;border-right-width:0;border-radius:0;color:#ccc;font-family:KaTeX_Main,serif;padding:0;height:1.3em;line-height:0;font-size:8em}#input input:active,#input input:focus{box-shadow:none}a,p,span{color:#e8e8e8;text-shadow:#0d0d0d 5px 5px}#question-text{font-family:Computer Modern,serif}#expression{width:75%;margin:0 auto;padding-bottom:2em;text-align:center}#expression .katex{font-size:16em!important;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.notices .toast{padding:.6em 1.35em!important}
\ No newline at end of file
diff --git a/docs/css/app.35184fd4.css b/docs/css/app.35184fd4.css
deleted file mode 100644
index 2e390da..0000000
--- a/docs/css/app.35184fd4.css
+++ /dev/null
@@ -1 +0,0 @@
-#app,body,html{height:100%;min-height:100%;background:#0f0f0f}#input input{text-align:center;background-color:transparent;border-color:#333;border-left-width:0;border-right-width:0;border-radius:0;color:#ccc;font-family:KaTeX_Main,serif;padding:0;height:1.3em;line-height:0;font-size:8em}#input input:active,#input input:focus{box-shadow:none}a,p,span{color:#e8e8e8;text-shadow:#0d0d0d 5px 5px}#question-text{font-family:Computer Modern,serif}#expression{width:75%;margin:0 auto;padding-bottom:2em;text-align:center}#expression .katex{font-size:16em!important;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
\ No newline at end of file
diff --git a/docs/index.html b/docs/index.html
index 1119993..a8a7211 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -1 +1 @@
-
power-math
\ No newline at end of file
+power-math
\ No newline at end of file
diff --git a/docs/js/app.9942a7ba.js b/docs/js/app.9942a7ba.js
new file mode 100644
index 0000000..5b2fe5f
--- /dev/null
+++ b/docs/js/app.9942a7ba.js
@@ -0,0 +1,2 @@
+(function(t){function e(e){for(var r,s,a=e[0],u=e[1],c=e[2],h=0,l=[];h0&&void 0!==arguments[0]?arguments[0]:1,e=u.methods.getRandomInt(5*t,100*t),n=u.methods.getRandomInt(5*t,100*t);return{text:"".concat(e," + ").concat(n),answer:e+n}},subtraction:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=u.methods.getRandomInt(5*t,100*t),n=u.methods.getRandomInt(5*t,100*t);return Math.random()>.5?{text:"".concat(e," - ").concat(n),answer:e-n}:{text:"-".concat(e," + ").concat(n),answer:-e+n}},multiplication:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=u.methods.getRandomInt(3*t,30*t),n=u.methods.getRandomInt(3*t,15*t);return{text:"".concat(e," \\times ").concat(n),answer:e*n}},division:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=u.methods.getRandomInt(3*t,30*t),n=u.methods.getRandomInt(2*t,15*t);return{text:"".concat(e*n," \\div ").concat(n),answer:e}},square_root:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=u.methods.getRandomInt(2*t,20*t);return{text:"\\sqrt{".concat(e*e,"}"),answer:e}},getProblem:function(){var t=[this.addition,this.subtraction,this.multiplication,this.division,this.square_root],e=u.methods.getRandomInt(0,t.length);return t[e]()}}},d={name:"App",data:function(){return{answer:null,currentQuestion:null,correctTimeout:!1,shakeInput:!1}},computed:{expression:function(){return null!=this.currentQuestion?this.currentQuestion.text:"error"},input_shake:function(){return this.shakeInput?"shake":""}},created:function(){var t=this;window.addEventListener("keyup",(function(e){39===e.keyCode&&t.nextQuestion()}))},mounted:function(){var t=this;this.$nextTick((function(){t.nextQuestion()}))},methods:{nextQuestion:function(){this.currentQuestion=c.methods.getProblem()},checkAnswer:function(){var t;t="number"===typeof this.currentQuestion.answer?this.currentQuestion.answer===Number.parseInt(this.answer):this.currentQuestion.answer===this.answer,t?(this.$buefy.toast.open({message:"Correct!",type:"is-success",duration:600}),this.nextQuestion(),this.answer=""):(this.$buefy.toast.open({message:"Incorrect.",type:"is-danger",duration:500}),this.shakeInput=!0,setTimeout(this.stopShake,500))},stopShake:function(){this.shakeInput=!1}}},h=d,l=(n("5c0b"),n("2877")),p=Object(l["a"])(h,s,a,!1,null,null,null),f=p.exports;n("be0f"),n("5abe");r["a"].config.productionTip=!1,r["a"].use(i["a"]),r["a"].use(o["a"]),new r["a"]({render:function(t){return t(f)}}).$mount("#app")},"5c0b":function(t,e,n){"use strict";var r=n("9c0c"),o=n.n(r);o.a},"9c0c":function(t,e,n){}});
+//# sourceMappingURL=app.9942a7ba.js.map
\ No newline at end of file
diff --git a/docs/js/app.9942a7ba.js.map b/docs/js/app.9942a7ba.js.map
new file mode 100644
index 0000000..e38e6ac
--- /dev/null
+++ b/docs/js/app.9942a7ba.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?6fea","webpack:///./src/utils.js","webpack:///./src/arithmetic.js","webpack:///src/App.vue","webpack:///./src/App.vue?1160","webpack:///./src/App.vue","webpack:///./src/main.js","webpack:///./src/App.vue?c650"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","_vm","this","_h","$createElement","_c","_self","attrs","directives","rawName","expression","staticClass","nativeOn","$event","type","indexOf","_k","keyCode","checkAnswer","input_shake","model","callback","$$v","answer","staticRenderFns","methods","getRandomInt","min","max","Math","ceil","floor","random","addition","mult","a","utils","b","text","subtraction","multiplication","division","square_root","getProblem","possible","index","component","Vue","config","productionTip","use","Buefy","VueKatex","render","h","App","$mount"],"mappings":"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","file":"js/app.9942a7ba.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/power-math/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('div',{directives:[{name:\"katex\",rawName:\"v-katex\",value:(_vm.expression),expression:\"expression\"}],attrs:{\"id\":\"expression\"}}),_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"columns is-centered\"},[_c('div',{staticClass:\"column is-three-fifths\"},[_c('b-field',{attrs:{\"id\":\"input\"},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.checkAnswer()}}},[_c('b-input',{attrs:{\"custom-class\":_vm.input_shake},model:{value:(_vm.answer),callback:function ($$v) {_vm.answer=$$v},expression:\"answer\"}})],1)],1)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default {\r\n methods: {\r\n getRandomInt(min, max) {\r\n min = Math.ceil(min);\r\n max = Math.floor(max);\r\n return Math.floor(Math.random() * (max - min) + min); //The maximum is exclusive and the minimum is inclusive\r\n }\r\n }\r\n}\r\n","import utils from './utils.js';\r\n\r\nexport default {\r\n methods: {\r\n // Generate a addition problem\r\n addition(mult = 1) {\r\n let a = utils.methods.getRandomInt(5 * mult, 100 * mult);\r\n let b = utils.methods.getRandomInt(5 * mult, 100 * mult);\r\n return {\r\n text: `${a} + ${b}`,\r\n answer: a + b\r\n }\r\n },\r\n subtraction(mult = 1) {\r\n let a = utils.methods.getRandomInt(5 * mult, 100 * mult);\r\n let b = utils.methods.getRandomInt(5 * mult, 100 * mult);\r\n if (Math.random() > 0.5) {\r\n return {\r\n text: `${a} - ${b}`,\r\n answer: a - b,\r\n }\r\n }\r\n else {\r\n return {\r\n text: `-${a} + ${b}`,\r\n answer: -a + b\r\n }\r\n }\r\n },\r\n multiplication(mult = 1) {\r\n let a = utils.methods.getRandomInt(3 * mult, 30 * mult);\r\n let b = utils.methods.getRandomInt(3 * mult, 15 * mult);\r\n return {\r\n text: `${a} \\\\times ${b}`,\r\n answer: a * b\r\n }\r\n },\r\n division(mult = 1) {\r\n let a = utils.methods.getRandomInt(3 * mult, 30 * mult);\r\n let b = utils.methods.getRandomInt(2 * mult, 15 * mult);\r\n return {\r\n text: `${a * b} \\\\div ${b}`,\r\n answer: a\r\n }\r\n\r\n },\r\n square_root(mult = 1) {\r\n let a = utils.methods.getRandomInt(2 * mult, 20 * mult);\r\n return {\r\n text: `\\\\sqrt{${a * a}}`,\r\n answer: a\r\n }\r\n },\r\n getProblem: function () {\r\n let possible = [this.addition, this.subtraction, this.multiplication, this.division, this.square_root];\r\n let index = utils.methods.getRandomInt(0, possible.length);\r\n return possible[index]();\r\n }\r\n }\r\n}\r\n","\n \n\n\n\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=7f899730&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport VueKatex from 'vue-katex';\nimport Buefy from 'buefy';\nimport App from './App.vue'\nimport 'katex/dist/katex.min.css';\nimport 'buefy/dist/buefy.css';\n\n\nVue.config.productionTip = false\nVue.use(Buefy)\nVue.use(VueKatex)\n\nnew Vue({\n render: h => h(App),\n}).$mount('#app')\n","import mod from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\""],"sourceRoot":""}
\ No newline at end of file
diff --git a/docs/js/app.c001db59.js b/docs/js/app.c001db59.js
deleted file mode 100644
index 55ae973..0000000
--- a/docs/js/app.c001db59.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(function(t){function e(e){for(var r,a,s=e[0],u=e[1],c=e[2],l=0,f=[];l0&&void 0!==arguments[0]?arguments[0]:1,e=u.methods.getRandomInt(5*t,100*t),n=u.methods.getRandomInt(5*t,100*t);return{text:"".concat(e," + ").concat(n),answer:e+n}},subtraction:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=u.methods.getRandomInt(5*t,100*t),n=u.methods.getRandomInt(5*t,100*t);return Math.random()>.5?{text:"".concat(e," - ").concat(n),answer:e-n}:{text:"-".concat(e," + ").concat(n),answer:-e+n}},multiplication:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=u.methods.getRandomInt(3*t,30*t),n=u.methods.getRandomInt(3*t,15*t);return{text:"".concat(e," \\times ").concat(n),answer:e*n}},square_root:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=u.methods.getRandomInt(2*t,20*t);return{text:"\\sqrt{".concat(e*e,"}"),answer:e}},getProblem:function(){var t=[this.multiplication,this.square_root],e=u.methods.getRandomInt(0,t.length);return t[e]()}}},d={name:"App",data:function(){return{answer:null,currentQuestion:null,correctTimeout:!1}},computed:{expression:function(){return null!=this.currentQuestion?this.currentQuestion.text:"error"}},created:function(){var t=this;window.addEventListener("keyup",(function(e){39===e.keyCode&&t.nextQuestion()}))},mounted:function(){var t=this;this.$nextTick((function(){t.nextQuestion()}))},methods:{nextQuestion:function(){this.currentQuestion=c.methods.getProblem()},checkAnswer:function(){var t;t="number"===typeof this.currentQuestion.answer?this.currentQuestion.answer===Number.parseInt(this.answer):this.currentQuestion.answer===this.answer,t?(this.$buefy.toast.open({message:"Correct!",type:"is-success",duration:6e3}),this.nextQuestion(),this.answer=""):this.$buefy.toast.open({message:"Incorrect.",type:"is-danger",duration:5e3})}}},l=d,f=(n("5c0b"),n("2877")),p=Object(f["a"])(l,a,s,!1,null,null,null),h=p.exports;n("be0f"),n("5abe");r["a"].config.productionTip=!1,r["a"].use(i["a"]),r["a"].use(o["a"]),new r["a"]({render:function(t){return t(h)}}).$mount("#app")},"5c0b":function(t,e,n){"use strict";var r=n("9c0c"),o=n.n(r);o.a},"9c0c":function(t,e,n){}});
-//# sourceMappingURL=app.c001db59.js.map
\ No newline at end of file
diff --git a/docs/js/app.c001db59.js.map b/docs/js/app.c001db59.js.map
deleted file mode 100644
index 0d7a449..0000000
--- a/docs/js/app.c001db59.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?feb2","webpack:///./src/utils.js","webpack:///./src/arithmetic.js","webpack:///src/App.vue","webpack:///./src/App.vue?1160","webpack:///./src/App.vue","webpack:///./src/main.js","webpack:///./src/App.vue?c650"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","_vm","this","_h","$createElement","_c","_self","attrs","directives","rawName","expression","staticClass","nativeOn","$event","type","indexOf","_k","keyCode","checkAnswer","model","callback","$$v","answer","staticRenderFns","methods","getRandomInt","min","max","Math","ceil","floor","random","addition","mult","a","utils","b","text","subtraction","multiplication","square_root","getProblem","possible","index","component","Vue","config","productionTip","use","Buefy","VueKatex","render","h","App","$mount"],"mappings":"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","file":"js/app.c001db59.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/power-math/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('div',{directives:[{name:\"katex\",rawName:\"v-katex\",value:(_vm.expression),expression:\"expression\"}],attrs:{\"id\":\"expression\"}}),_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"columns is-centered\"},[_c('div',{staticClass:\"column is-three-fifths\"},[_c('b-field',{attrs:{\"id\":\"input\"},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.checkAnswer()}}},[_c('b-input',{model:{value:(_vm.answer),callback:function ($$v) {_vm.answer=$$v},expression:\"answer\"}})],1)],1)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default {\r\n methods: {\r\n getRandomInt(min, max) {\r\n min = Math.ceil(min);\r\n max = Math.floor(max);\r\n return Math.floor(Math.random() * (max - min) + min); //The maximum is exclusive and the minimum is inclusive\r\n }\r\n }\r\n}\r\n","import utils from './utils.js';\r\n\r\nexport default {\r\n methods: {\r\n // Generate a addition problem\r\n addition(mult = 1) {\r\n let a = utils.methods.getRandomInt(5 * mult, 100 * mult);\r\n let b = utils.methods.getRandomInt(5 * mult, 100 * mult);\r\n return {\r\n text: `${a} + ${b}`,\r\n answer: a + b\r\n }\r\n },\r\n subtraction(mult = 1) {\r\n let a = utils.methods.getRandomInt(5 * mult, 100 * mult);\r\n let b = utils.methods.getRandomInt(5 * mult, 100 * mult);\r\n if (Math.random() > 0.5) {\r\n return {\r\n text: `${a} - ${b}`,\r\n answer: a - b,\r\n }\r\n }\r\n else {\r\n return {\r\n text: `-${a} + ${b}`,\r\n answer: -a + b\r\n }\r\n }\r\n },\r\n multiplication(mult = 1) {\r\n let a = utils.methods.getRandomInt(3 * mult, 30 * mult);\r\n let b = utils.methods.getRandomInt(3 * mult, 15 * mult);\r\n return {\r\n text: `${a} \\\\times ${b}`,\r\n answer: a * b\r\n }\r\n },\r\n square_root(mult = 1) {\r\n let a = utils.methods.getRandomInt(2 * mult, 20 * mult);\r\n return {\r\n text: `\\\\sqrt{${a * a}}`,\r\n answer: a\r\n }\r\n },\r\n getProblem: function () {\r\n let possible = [this.multiplication, this.square_root];\r\n let index = utils.methods.getRandomInt(0, possible.length);\r\n return possible[index]();\r\n }\r\n }\r\n}\r\n","\n \n\n\n\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=6a028abe&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport VueKatex from 'vue-katex';\nimport Buefy from 'buefy';\nimport App from './App.vue'\nimport 'katex/dist/katex.min.css';\nimport 'buefy/dist/buefy.css';\n\n\nVue.config.productionTip = false\nVue.use(Buefy)\nVue.use(VueKatex)\n\nnew Vue({\n render: h => h(App),\n}).$mount('#app')\n","import mod from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\""],"sourceRoot":""}
\ No newline at end of file
diff --git a/src/arithmetic.js b/src/arithmetic.js
index d5e780e..aeb95a6 100644
--- a/src/arithmetic.js
+++ b/src/arithmetic.js
@@ -35,6 +35,15 @@ export default {
answer: a * b
}
},
+ division(mult = 1) {
+ let a = utils.methods.getRandomInt(3 * mult, 30 * mult);
+ let b = utils.methods.getRandomInt(2 * mult, 15 * mult);
+ return {
+ text: `${a * b} \\div ${b}`,
+ answer: a
+ }
+
+ },
square_root(mult = 1) {
let a = utils.methods.getRandomInt(2 * mult, 20 * mult);
return {
@@ -43,7 +52,7 @@ export default {
}
},
getProblem: function () {
- let possible = [this.multiplication, this.square_root];
+ let possible = [this.addition, this.subtraction, this.multiplication, this.division, this.square_root];
let index = utils.methods.getRandomInt(0, possible.length);
return possible[index]();
}