Example #1
0
    def genExpression(self, size):
        '''
		generates an expression
		'''
        oprPDF = [0.35, 0.20, 0.30, 0.15]
        numRange = [(1, 9), (9, 15), (15, 25)]
        numPDF = [0.5, 0.4, 0.1]

        n1 = round(maths.weightedRandomRange(numPDF, numRange))
        if size == 1:
            return str(n1)
        if size > 2:
            print('Not implemented')
        # size = 2
        if maths.isPrime(n1):
            opr = self.operators[maths.weightedRandomIndex(
                [0.4, 0.25, 0.33, 0.02])]
        else:
            opr = self.operators[maths.weightedRandomIndex(oprPDF)]
        n2 = maths.getSecondOperand(n1,
                                    opr,
                                    multiplyLimit=200,
                                    numPDF=numPDF,
                                    numRange=numRange)

        return str(n1) + ' ' + opr + ' ' + str(n2)
Example #2
0
    def genExpression(self, size):
        '''
		Generate the expression
		'''
        oprPDF = [0.35, 0.20, 0.30, 0.15]
        numRange = [(1, 9), (9, 19), (19, 35)]
        numPDF = [0.5, 0.35, 0.15]

        if size == 2:
            exp = self.genExpression2(oprPDF)
        elif size == 3:
            exp1 = self.genExpression2(oprPDF)
            ans1 = eval(''.join(str(i) for i in exp1))
            opr = self.operators[maths.weightedRandomIndex(
                [0.4, 0.2, 0.3, 0.1])]
            exp2 = maths.getSecondOperand(ans1,
                                          opr,
                                          multiplyLimit=150,
                                          numPDF=numPDF,
                                          numRange=numRange)
            exp = ['('] + exp1 + [')'] + [opr, exp2]
        elif size == 4:
            exp1 = self.genExpression2(oprPDF)
            exp2 = self.genExpression2(oprPDF)
            exp = ['('] + exp1 + [')'] + ['+'] + ['('] + exp2 + [')']

        expStr = ' '.join(str(i) for i in exp)
        return (expStr, round(eval(expStr)))
Example #3
0
	def genExpression2(self, oprPDF):
		index = maths.weightedRandomIndex(oprPDF)
		numRange = [(1,9) , (9,19) , (19,35)]
		numPDF = [0.5, 0.35, 0.15]
		n1 = round(maths.weightedRandomRange(numPDF, numRange))
		opr = self.operators[index]
		n2 = maths.getSecondOperand(n1, opr, multiplyLimit = 100, numPDF = [0.2, 0.4, 0.3], numRange = numRange)
		if opr == '+':
			numPDF = [0.2, 0.4, 0.4]
			n1 = round(maths.weightedRandomRange(numPDF, numRange))

		return [n1, opr, n2]
Example #4
0
    def genExpression2(self, oprPDF):
        index = maths.weightedRandomIndex(oprPDF)
        numRange = [(1, 9), (9, 19), (19, 35)]
        numPDF = [0.5, 0.35, 0.15]
        n1 = round(maths.weightedRandomRange(numPDF, numRange))
        opr = self.operators[index]
        n2 = maths.getSecondOperand(n1,
                                    opr,
                                    multiplyLimit=100,
                                    numPDF=[0.2, 0.4, 0.3],
                                    numRange=numRange)
        if opr == '+':
            numPDF = [0.2, 0.4, 0.4]
            n1 = round(maths.weightedRandomRange(numPDF, numRange))

        return [n1, opr, n2]
Example #5
0
	def genExpression(self, size):
		'''
		generates an expression
		'''
		oprPDF = [0.35, 0.20, 0.30, 0.15]
		numRange = [(1,9) , (9,15) , (15,25)]
		numPDF = [0.5, 0.4, 0.1]

		n1 = round(maths.weightedRandomRange(numPDF, numRange))
		if size == 1:
			return str(n1)
		if size > 2:
			print('Not implemented')
		# size = 2
		if maths.isPrime(n1):
			opr = self.operators[ maths.weightedRandomIndex([0.4, 0.25, 0.33, 0.02]) ]
		else:
			opr = self.operators[ maths.weightedRandomIndex(oprPDF) ]
		n2 = maths.getSecondOperand(n1, opr, multiplyLimit = 200, numPDF = numPDF, numRange = numRange)

		return str(n1) + ' ' + opr + ' ' + str(n2)
Example #6
0
	def genExpression(self, size):
		'''
		Generate the expression
		'''
		oprPDF = [0.35, 0.20, 0.30, 0.15]
		numRange = [(1,9) , (9,19) , (19,35)]
		numPDF = [0.5, 0.35, 0.15]

		if size == 2:
			exp = self.genExpression2(oprPDF)
		elif size == 3:
			exp1 = self.genExpression2(oprPDF)
			ans1 = eval(''.join(str(i) for i in exp1))
			opr = self.operators[ maths.weightedRandomIndex([0.4, 0.2, 0.3, 0.1]) ]
			exp2 = maths.getSecondOperand(ans1, opr, multiplyLimit = 150, numPDF = numPDF, numRange = numRange)
			exp = ['('] + exp1 + [')'] + [opr, exp2]
		elif size == 4:
			exp1 = self.genExpression2(oprPDF)
			exp2 = self.genExpression2(oprPDF)
			exp = ['('] + exp1 + [')'] + ['+'] + ['('] + exp2 + [')']

		expStr = ' '.join( str(i) for i in exp )
		return (expStr, round(eval(expStr)))