예제 #1
0
    def download_problem_content(self, problem: Problem) -> ProblemContent:
        resp = self._request(problem.get_url())

        try:
            return ProblemContent.from_html(resp.text)
        except (InputFormatDetectionError, SampleDetectionError) as e:
            raise e
예제 #2
0
    def download_problem_content(self, problem: Problem) -> ProblemContent:
        resp = self._request(problem.get_url())

        try:
            return ProblemContent.from_html(resp.text)
        except (InputFormatDetectionError, SampleDetectionError) as e:
            raise e
def get_problem_content(problem: Problem):
    def func():
        print("downloading html ...", file=sys.stderr)
        raw_response = atcoder._request(problem.get_url())
        return raw_response.text

    return ProblemContent.from_html(get_and_set_cache("problem/{}".format(problem.problem_id), func))
예제 #4
0
def get_problem_content(problem: Problem):
    def func():
        print("downloading html ...", file=sys.stderr)
        raw_response = atcoder._request(problem.get_url())
        return raw_response.text

    return ProblemContent.from_html(
        get_and_set_cache("problem/{}".format(problem.problem_id), func))
    def load_problem_content(self, case_name: str) -> ProblemContent:
        case_dir = self._get_test_case_dir(case_name)
        format_file = os.path.join(case_dir, FORMAT_FILE_NAME)
        example_files = [
            os.path.join(case_dir, file) for file in os.listdir(case_dir)
            if file != FORMAT_FILE_NAME
        ]

        with open(format_file, 'r', encoding="utf-8") as f:
            input_format = f.read()

        examples = []
        for ex_file in example_files:
            with open(ex_file, 'r', encoding="utf-8") as f:
                examples.append(Sample(f.read(), None))

        return ProblemContent(input_format, examples)
예제 #6
0
    def test_default_code_generators_and_templates(self):
        def _full_path(filename):
            return os.path.join(RESOURCE_DIR,
                                "test_default_code_generators_and_templates",
                                filename)

        input_file = _full_path("echo_test_input.txt")
        expected_output_file = _full_path("echo_test_output.txt")
        pred_result = predict_format(
            ProblemContent(load_text_file(
                _full_path("echo_test_format.txt")), [
                    Sample(load_text_file(_full_path("echo_test_input.txt")),
                           None)
                ]))

        for lang in ALL_LANGUAGES:
            expected_default_generated_code_file = _full_path(
                os.path.join(
                    lang.name,
                    lang.source_code_name("expected_default_generated_code")))

            # 1. Compile test with default templates

            self._compile_and_run(lang, pred_result.format,
                                  lang.default_template_path,
                                  expected_default_generated_code_file,
                                  input_file)

            # 2. Echo test, which tests custom templates having echo output of input

            exec_result = self._compile_and_run(
                lang, pred_result.format,
                _full_path(
                    os.path.join(lang.name,
                                 lang.source_code_name("echo_template"))),
                _full_path(
                    os.path.join(
                        lang.name,
                        lang.source_code_name(
                            "expected_echo_generated_code"))), input_file)
            self.assertEqual(load_text_file(expected_output_file),
                             exec_result.output)
예제 #7
0
def predict_yes_no(html: str) -> Tuple[Optional[str], Optional[str]]:
    try:
        outputs = set()
        for sample in ProblemContent.from_html(html).get_samples():
            for x in sample.get_output().split("\n"):
                outputs.add(x.strip())
    except (InputFormatDetectionError, SampleDetectionError) as e:
        raise YesNoPredictionFailedError(e)

    yes_kws = ["yes", "possible", "ok"]
    no_kws = ["no", "impossible", "ng"]

    yes_str = None
    no_str = None
    for val in outputs:
        if val.lower() in yes_kws:
            yes_str = val
        if val.lower() in no_kws:
            no_str = val

    return yes_str, no_str
def predict_yes_no(html: str) -> Tuple[Optional[str], Optional[str]]:
    try:
        outputs = set()
        for sample in ProblemContent.from_html(html).get_samples():
            for x in sample.get_output().split("\n"):
                outputs.add(x.strip())
    except (InputFormatDetectionError, SampleDetectionError) as e:
        raise YesNoPredictionFailedError(e)

    yes_kws = ["yes", "possible"]
    no_kws = ["no", "impossible"]

    yes_str = None
    no_str = None
    for val in outputs:
        if val.lower() in yes_kws:
            yes_str = val
        if val.lower() in no_kws:
            no_str = val

    return yes_str, no_str