Ejemplo n.º 1
0
    def get_problem(self, contest_id, pid):
        source_problem = "http://codeforces.com/contest/"
        r = list(
            filter(
                lambda x: x['contestId'] == contest_id and x['index'] == pid,
                self.parsed_problems['result']['problems']))
        if len(r) != 1 and not self.up_to_date:
            self.update()
            return self.get_problem(contest_id, pid)
        if len(r) != 1:
            return None

        p = Problem(contest_id, pid, r[0]['name'], None,
                    source_problem + str(contest_id) + "/problem/" + pid)
        # get test cases
        try:
            print "getting test cases for problem " + p.name
            html = urlopen(p.url.encode('utf-8')).read()
        except:
            print "Could not get test cases for problem " + p.name
        parser = TestCasesHTMLParser()
        parser.feed(html)
        [p.add_test(t) for t in parser.tests]
        return p