File indexing completed on 2024-04-21 14:43:37

0001 /* GCompris
0002  *
0003  * SPDX-FileCopyrightText: 2014 Bruno Coudoin
0004  *
0005  *   SPDX-License-Identifier: GPL-3.0-or-later
0006  */
0007 
0008 .import "qrc:/gcompris/src/core/core.js" as Core
0009 
0010 function getAddTable(table) {
0011     var result = []
0012     for(var i = 1; i <= 10; ++i) {
0013         if(Math.floor(Math.random()*2))
0014             // The mathematical addition sign
0015             result.push(["" + table + " " + qsTr("+") + " " + i,
0016                          table + i])
0017         else
0018             result.push(["" + i + " " + qsTr("+") + " " + table,
0019                          table + i])
0020     }
0021     return result
0022 }
0023 
0024 function getMinusTable(table) {
0025     var result = []
0026     for(var i = 1; i <= 10; ++i) {
0027         // The mathematical subtraction sign
0028         result.push(["" + (i + table) + " " + qsTr("−") + " " + table,
0029                       i])
0030     }
0031     return result
0032 }
0033 
0034 function getMultTable(table) {
0035     var result = []
0036     for(var i = 1; i <= 10; ++i) {
0037         if(Math.floor(Math.random()*2))
0038             // The mathematical multiplication sign
0039             result.push(["" + table + " " + qsTr("×") + " " + i,
0040                          table * i])
0041         else
0042             result.push(["" + i + " " + qsTr("×") + " " + table,
0043                          table * i])
0044     }
0045     return result
0046 }
0047 
0048 function getDivTable(table) {
0049     var result = []
0050     for(var i = 1; i <= 10; ++i) {
0051         // The mathematical division sign
0052         result.push(["" + i * table + " " + qsTr("÷") + " " + table,
0053                      i])
0054     }
0055     return result
0056 }
0057 
0058 function removeDuplicates(tAll) {
0059     Core.shuffle(tAll)
0060     var result = []
0061     // Remove duplicate values with the same result
0062     for(var i = 0; i < tAll.length; ++i) {
0063         var gotIt = false
0064         for(var j = 0; j < result.length; ++j) {
0065             if(tAll[i][1] === result[j][1])
0066                 gotIt = 1
0067         }
0068         if(!gotIt)
0069             result.push(tAll[i])
0070     }
0071     return result
0072 }
0073 
0074 function getAddMinusTable(table) {
0075     var t1 = getAddTable(table)
0076     var t2 = getMinusTable(table)
0077     return removeDuplicates(t1.concat(t2))
0078 }
0079 
0080 function getAddMinusMultDivTable(table) {
0081     var t1 = getAddTable(table)
0082     var t2 = getMinusTable(table)
0083     var t3 = getMultTable(table)
0084     var t4 = getDivTable(table)
0085     return removeDuplicates(t1.concat(t2, t3, t4))
0086 }
0087 
0088 function getMultDivTable(table) {
0089     var t1 = getMultTable(table)
0090     var t2 = getDivTable(table)
0091     return removeDuplicates(t1.concat(t2))
0092 }
0093