Tiếp tục trong loạt bài các phép tính nhẩm. Hôm nay tôi mô phỏng phép toán tính nhẩm nhanh một số 2 chữ số với 99. Về mặt lập trình tôi vẫn áp dụng mô hình design pattern
Strategy mà mình đã giới thiệu ở bài viết Mô phỏng phép tính nhân 2 số bé hơn và gần bằng 100
Tạo ngẫu nhiên số có 2 chữ số trong phép tính nhân với 99
Mã nguồn mô phỏng phép tính bằng javascript
var ABx99 = function () { $.extend(this, new MathX()); var number1__1, number1__1_length; var number1__1_1, number1__1_2; var n9_number1__1_1, n9_number1__1_2; this.onCreateNumber = function () { this.number1 = Core.random(100); while (this.number1 < 10) this.number1 = Core.random(100); this.number2 = 99; number1__1 = this.number1 - 1; number1__1_length = (number1__1 + "").length; number1__1_1 = (number1__1 + "").charAt(0); number1__1_2 = (number1__1 + "").charAt(1); n9_number1__1_1 = 9 - number1__1_1; n9_number1__1_2 = 9 - number1__1_2; } this.onCreateScripts = function (scripts) { for (var i = 0; i <= 14; i++) scripts.push(this["createScript" + i]()); } this.createScript0 = function () { var $this = this; return function () { $this.fillQuestion("data-step-1-result", number1__1); $this.balance(1, 3, number1__1_length); $this.mainForm.find("[data-step=1]").removeClass("hide"); }; } this.createScript1 = function () { var $this = this; return function () { $this.fillNumber("data-step-1-input-1", $this.number1); }; }; this.createScript2 = function () { var $this = this; return function () { $this.fillNumber("data-step-1-input-2", 1); }; }; this.createScript3 = function () { var $this = this; return function () { $this.fillNumber("data-step-1-result", number1__1); }; }; this.createScript4 = function () { var $this = this; return function () { $this.fillNumber("data-result", number1__1 * 100, function (span, length, index) { switch (index) { case 0: span.addClass("bg-crimson text-white"); break; case 1: span.addClass("bg-danger text-white"); break; case 2: case 3: span.html("?"); break; } }); }; } this.createScript5 = function () { var $this = this; return function () { $this.fillQuestion("data-step-2-result", n9_number1__1_1); $this.balance(2, 2, 1); $this.mainForm.find("[data-step=2]").removeClass("hide"); }; }; this.createScript6 = function () { var $this = this; return function () { $this.fillNumber("data-step-2-input-1", 9); }; }; this.createScript7 = function () { var $this = this; return function () { $this.fillNumber("data-step-2-input-2", number1__1_1); }; }; this.createScript8 = function () { var $this = this; return function () { $this.fillNumber("data-step-2-result", n9_number1__1_1); }; }; this.createScript9 = function () { var $this = this; return function () { $this.fillNumber("data-result", number1__1 * 100 + n9_number1__1_1 * 10, function (span, length, index) { switch (index) { case 2: span.addClass("bg-sienna text-white"); break; case 3: span.html("?"); break; } }); }; } this.createScript10 = function () { var $this = this; return function () { $this.fillQuestion("data-step-3-result", n9_number1__1_2); $this.balance(3, 2, 1); $this.mainForm.find("[data-step=3]").removeClass("hide"); }; }; this.createScript11 = function () { var $this = this; return function () { $this.fillNumber("data-step-3-input-1", 9); }; }; this.createScript12 = function () { var $this = this; return function () { $this.fillNumber("data-step-3-input-2", number1__1_2); }; }; this.createScript13 = function () { var $this = this; return function () { $this.fillNumber("data-step-3-result", n9_number1__1_2); }; }; this.createScript14 = function () { var $this = this; return function () { $this.fillNumber("data-result", number1__1 * 100 + n9_number1__1_1 * 10 + n9_number1__1_2, function (span, length, index) { switch (index) { case 3: span.addClass("bg-indianred text-white"); break; } }); }; } }; var pageMathX = new PageMathX(); pageMathX.mathX = new ABx99(); pageMathX.start();
Sơn 20