Exemplo n.º 1
0
    def __init__(self, numbers_to_use, **options):
        super().setup("minimal", **options)
        super().setup("numbers", nb=numbers_to_use, **options)
        super().setup("nb_variants", nb=numbers_to_use, **options)

        the_sum = Sum([self.nb1, self.nb2])
        self.sum_str = the_sum.printed
        self.result = the_sum.evaluate()

        if self.context == 'mini_problem':
            super().setup("mini_problem_wording",
                          q_id=os.path.splitext(os.path.basename(__file__))[0],
                          **options)
Exemplo n.º 2
0
    def __init__(self, numbers_to_use, **options):
        super().setup("minimal", **options)
        super().setup("numbers", nb=numbers_to_use, **options)
        super().setup("nb_variants", nb=numbers_to_use, **options)

        ##
        #   @todo   Leave it possible to have negative results (relative nb)
        self.nb1, self.nb2 = max(self.nb1, self.nb2), min(self.nb1, self.nb2)
        the_diff = Sum([self.nb1, -self.nb2])
        self.diff_str = the_diff.printed
        self.result = the_diff.evaluate()

        if self.context == 'mini_problem':
            super().setup("mini_problem_wording",
                          q_id=os.path.splitext(os.path.basename(__file__))[0],
                          **options)
Exemplo n.º 3
0
    def __init__(self, build_data, **options):
        super().setup("minimal", **options)
        super().setup("numbers", nb=build_data, **options)
        super().setup("nb_variants", nb=build_data, **options)
        self.transduration = 8
        if (self.nb1 > 20 and self.nb2 > 20
            and abs(self.nb1 - self.nb2) > 10
            and abs(self.nb1 - self.nb2) % 10 != 0):
            self.transduration = 12
        elif abs(self.nb1 - self.nb2) % 1 != 0:
            self.transduration = 10

        if self.subvariant == 'only_positive':
            self.nb1, self.nb2 = max(self.nb1, self.nb2), min(self.nb1,
                                                              self.nb2)
        if (options.get('nb_source', 'default').startswith('complement')
            and self.nb_variant.startswith('decimal')):
            self.nb1 //= 10
        if (options.get('nb_source', 'default').startswith('complement')
            and random.choice([True, False])):
            self.nb2 = self.nb1 - self.nb2

        the_diff = Sum([self.nb1, -self.nb2])
        self.diff_str = the_diff.printed
        self.result = the_diff.evaluate()

        if self.context == 'mini_problem':
            self.transduration = 25
            super().setup('mini_problem_wording',
                          q_id=os.path.splitext(os.path.basename(__file__))[0],
                          **options)
        elif self.context.startswith('complement_wording'):
            self.transduration = 12
            super().setup('complement_wording',
                          q_id=os.path.splitext(os.path.basename(__file__))[0],
                          **options)
        elif self.context == 'angles':
            self.transduration = 25
            deg = r'\textdegree'
            from mathmakerlib.geometry import AngleDecoration
            self.result = Number(self.nb1 - self.nb2)
            self.hint = deg
            required.package['xcolor'] = True
            required.options['xcolor'].add('dvipsnames')
            extra_deco = {'0:1': AngleDecoration(label='?',
                                                 thickness='ultra thick',
                                                 color='BrickRed',
                                                 radius=Number('0.5',
                                                               unit='cm')),
                          }
            extra_deco2 = {}
            if self.nb1 != 90:
                extra_deco.update({'0:2':
                                   AngleDecoration(label=None,
                                                   thickness='ultra thick',
                                                   color='NavyBlue',
                                                   radius=Number('1.6',
                                                                 unit='cm'),
                                                   eccentricity=2,
                                                   arrow_tips='<->')})
                extra_deco2.update({'1:2':
                                    AngleDecoration(label=Number(self.nb1,
                                                                 unit=deg),
                                                    do_draw=False,
                                                    color='NavyBlue',
                                                    radius=Number('1.6',
                                                                  unit='cm'))})
            else:
                extra_deco.update({'0:2':
                                   AngleDecoration(label=None,
                                                   radius=Number('0.25',
                                                                 unit='cm'))})
            super().setup('angles_bunch', extra_deco=extra_deco,
                          extra_deco2=extra_deco2,
                          labels=nndist([self.nb1, self.nb2])[::-1],
                          subvariant_nb=options.get('subvariant_nb', None),
                          variant=options.get('variant', None),
                          subtr_shapes=True)
            self.hint = r'\si{\degree}'