Beispiel #1
0
    def gen_smpl(self, idx, n_digits, n_nums, var_digits=0):
        """ generate an example of a simple addition 
        """
        assert (n_digits >= 1)
        assert (var_digits < n_digits)
        q_tab = Tabular(' c r ', row_height=1.2)

        # contents...
        nums = [gen_rnd(n_digits, var_digits) for n in range(0, n_nums)]
        sgns = [sign(randint(-1000000, 1000000)) for n in range(0, n_nums)]

        sign_syms = list(map(lambda x: '+' if x == 1 else '-', sgns))

        sum_str = ''.join(
            [sign_syms[n] + str(nums[n]) for n in range(0, n_nums)])
        if sum_str[0] == '+':
            sum_str = sum_str[1:]  # tail if leading with a '+'

        mth = Math(escape=False, inline=True)
        mth.append(NoEscape(sum_str + '='))
        q_tab.add_row((bold(str(idx) + ':'), mth))

        a_tab = Tabular(' l l ', row_height=1.1)
        a_idx = bold(str(idx) + ":")
        res = sum(multiply(nums, sgns))
        a_tab.add_row((a_idx, res))

        #print(sum_str, '=', res)
        return (q_tab, a_tab)
Beispiel #2
0
 def gen_smpl(self, idx, n_digits, n_nums, var_digits=0):
     """ generate an example of a simple addition 
     """
     assert (n_digits >= 1)
     assert (var_digits < n_digits)
     q_tab = Tabular(' c r ', row_height=1.2)
     nums = [gen_rnd(n_digits, var_digits) for n in range(0, n_nums)]
     sum_str = functools.reduce(lambda x, y: str(x) + '-' + str(y), nums)
     mth = Math(escape=False, inline=True)
     mth.append(NoEscape(sum_str + '='))
     q_tab.add_row((bold(str(idx) + ':'), mth))
     a_tab = Tabular(' l l ', row_height=1.1)
     a_idx = bold(str(idx) + ":")
     a_tab.add_row((a_idx, nums[0] - sum(nums[1:])))
     return (q_tab, a_tab)