Пример #1
0
 def get_correct_answer(m):
     # get the string to be repeated
     answer, n = m.search_last_message(
         r"(?:{verb}) (.*) (\w+) times separated".format(
             verb="|".join(repetition.verbs),
             context="|".join(repetition.context)))
     return " and ".join([answer] * msg.string_to_number(n))
 def get_correct_answer(m):
     # get the string to be repeated
     answer, n = m.search_last_message(
         r"(?:{verb}) (.*) (\w+) times separated".format(
             verb="|".join(repetition.verbs),
             context="|".join(repetition.context)))
     return " and ".join([answer] * msg.string_to_number(n))
Пример #3
0
 def solve(m):
     nsteps, object_ = m.search_last_message(
         r"(\w+) steps forward, pick up the (\w+)")
     nsteps = msg.string_to_number(nsteps)
     for i in range(nsteps - 1):
         m.send("I move forward.")
         # wait for feedback
         m.read()
     # move
     m.send("I pick up the {object}.".format(object=object_))
 def solve(m):
     nsteps, object_ = m.search_last_message(
         r"(\w+) steps forward, pick up the (\w+)")
     nsteps = msg.string_to_number(nsteps)
     for i in range(nsteps - 1):
         m.send("I move forward.")
         # wait for feedback
         m.read()
     # move
     m.send("I pick up the {object}.".format(object=object_))
        def get_correct_answer(m):
            """ get the string to be repeated

            :param m:
            :return:
            """
            answer, n = m.search_last_message(
                r"(?:{verb}) (.*) (\w+) times\.".format(
                    verb="|".join(repetition.verbs)))
            return " ".join([answer] * msg.string_to_number(n))
        def get_correct_answer(m):
            """ get the string to be repeated

            :param m:
            :return:
            """
            answer, n = m.search_last_message(
                r"(?:{verb}) (.*) (\w+) times separated".format(
                    verb="|".join(repetition.verbs),
                    context="|".join(repetition.context)))
            enum = [answer] * msg.string_to_number(n)
            return " and ".join([", ".join(enum[:-1]), enum[-1]])
Пример #7
0
    def on_something_said(self, event):
        """ find out the correct answer.  get the answer of the learner and parse it

        :param event:
        :return:
        """
        count = self.get_world().state.learner_inventory[self.target_obj]
        answer = event.get_match(1)
        num_answer = msg.string_to_number(answer)
        if num_answer == count:
            self.set_reward(1, "Correct!")
        else:
            self.set_message("{negative_feedback} " "You have {count} {objects}.".format(
                    negative_feedback = random.choice(msg.failed), count = count, objects =
                    msg.pluralize(self.target_obj, count)))
 def on_something_said(self, event):
     # find out the correct answer
     count = self.get_world().state.learner_inventory[self.target_obj]
     # get the answer of the learner and parse it
     answer = event.get_match(1)
     num_answer = msg.string_to_number(answer)
     if num_answer == count:
         self.set_result(1, "Correct!")
     else:
         self.set_message("{negative_feedback} "
                          "You have {count} {objects}.".format(
                              negative_feedback=random.choice(msg.failed),
                              count=count,
                              objects=msg.pluralize(self.target_obj,
                                                    count)))
Пример #9
0
 def on_answer_query(self, event):
     # if we are waiting for an object, then we don't expect an answer
     # to a query
     if self.stage == 'waiting-give-back':
         return
     # if you just gave me an object, then this is not the
     # answer for a query
     if self.time_gave_me_object == self.get_time():
         return
     # short variable for the world state
     ws = self.get_world().state
     # we check if the learner's answer matches the number of instances
     # it has of the given object
     count = ws.learner_inventory[self.state.target_obj]
     # get the answer of the learner and parse it
     answer = event.get_match(1)
     try:
         num_answer = msg.string_to_number(answer)
     except ValueError:
         num_answer = None
     # check if the learner has failed
     self.failed = self.failed or num_answer != count
     # get a feedback response
     feedback = random.choice(msg.congratulations) if num_answer == count \
                 else random.choice(msg.failed)
     if self.stage == 'initial-query':
         ws.learner_inventory[self.state.target_obj] += 1
         self.set_message(
             "{feedback} I gave you {indef_object}. "
             "How many {objects} do you have now?".format(
                 indef_object=msg.indef_article(self.state.target_obj),
                 objects=msg.pluralize(self.state.target_obj, 2),
                 feedback=feedback))
         self.stage = 'one-more-query'
     elif self.stage == 'one-more-query':
         self.set_message(
             "{feedback} Now give the {object} back to me.".format(
                 object=self.state.target_obj, feedback=feedback))
         ws.teacher_accepts.add(self.state.target_obj)
         self.stage = 'waiting-give-back'
     elif self.stage == 'final-query':
         # reward the learner if it replied correctly all the questions
         if not self.failed:
             self.set_reward(1, feedback)
         else:
             self.set_reward(0, feedback)
 def on_answer_query(self, event):
     # if we are waiting for an object, then we don't expect an answer
     # to a query
     if self.stage == 'waiting-give-back':
         return
     # if you just gave me an object, then this is not the
     # answer for a query
     if self.time_gave_me_object == self.get_time():
         return
     # short variable for the world state
     ws = self.get_world().state
     # we check if the learner's answer matches the number of instances
     # it has of the given object
     count = ws.learner_inventory[self.state.target_obj]
     # get the answer of the learner and parse it
     answer = event.get_match(1)
     try:
         num_answer = msg.string_to_number(answer)
     except ValueError:
         num_answer = None
     # check if the learner has failed
     self.failed = self.failed or num_answer != count
     # get a feedback response
     feedback = random.choice(msg.congratulations) if num_answer == count \
                 else random.choice(msg.failed)
     if self.stage == 'initial-query':
         ws.learner_inventory[self.state.target_obj] += 1
         self.set_message(
             "{feedback} I gave you {indef_object}. "
             "How many {objects} do you have now?".format(
                 indef_object=msg.indef_article(self.state.target_obj),
                 objects=msg.pluralize(self.state.target_obj, 2),
                 feedback=feedback))
         self.stage = 'one-more-query'
     elif self.stage == 'one-more-query':
         self.set_message("{feedback} Now give the {object} back to me."
                          .format(object=self.state.target_obj,
                                  feedback=feedback))
         ws.teacher_accepts.add(self.state.target_obj)
         self.stage = 'waiting-give-back'
     elif self.stage == 'final-query':
         # reward the learner if it replied correctly all the questions
         if not self.failed:
             self.set_result(1, feedback)
         else:
             self.set_result(0, feedback)