Ejemplo n.º 1
0
 def test_donwload_sample_cases_issue_192(self):
     # see https://github.com/kmyk/online-judge-tools/issues/192
     self.assertEqual(
         YukicoderProblem.from_url('https://yukicoder.me/problems/no/750').
         download_sample_cases(), [
             TestCase(name='sample-1',
                      input_name='サンプル1 入力',
                      input_data=b'6\n4 5\n3 7\n3 4\n-2 3\n9 1\n3 8\n',
                      output_name='サンプル1 出力',
                      output_data=b'9 1\n4 5\n3 4\n3 7\n3 8\n-2 3\n'),
             TestCase(name='sample-2',
                      input_name='サンプル2 入力',
                      input_data=b'3\n3 7\n1 1\n5 3\n',
                      output_name='サンプル2 出力',
                      output_data=b'5 3\n1 1\n3 7\n'),
             TestCase(name='sample-3',
                      input_name='サンプル3 入力',
                      input_data=b'6\n1 1\n7 4\n0 5\n1 3\n-8 9\n5 1\n',
                      output_name='サンプル3 出力',
                      output_data=b'5 1\n7 4\n1 1\n1 3\n0 5\n-8 9\n'),
         ])
     self.assertEqual(
         YukicoderProblem.from_url('https://yukicoder.me/problems/no/751').
         download_sample_cases(), [
             TestCase(name='sample-1',
                      input_name='サンプル1 入力',
                      input_data=b'3\n1 8 3\n2\n6 10\n',
                      output_name='サンプル1 出力',
                      output_data=b'5 72\n'),
             TestCase(name='sample-2',
                      input_name='サンプル2 入力',
                      input_data=b'2\n-1 1\n3\n-1 1 -1\n',
                      output_name='サンプル2 出力',
                      output_data=b'-1 1\n'),
         ])
Ejemplo n.º 2
0
 def test_from_url(self):
     self.assertEqual(
         YukicoderProblem.from_url(
             'https://yukicoder.me/problems/no/9003').problem_no, 9003)
     self.assertEqual(
         YukicoderProblem.from_url(
             'https://yukicoder.me/problems/100').problem_id, 100)
     self.assertEqual(
         YukicoderProblem.from_url(
             'http://yukicoder.me/problems/no/123/').problem_no, 123)
     self.assertEqual(
         YukicoderProblem.from_url(
             'http://yukicoder.me/problems/123').problem_id, 123)
Ejemplo n.º 3
0
 def test_donwload_sample_cases_issue_355(self):
     # see https://github.com/kmyk/online-judge-tools/issues/355
     self.assertEqual(
         YukicoderProblem.from_url('https://yukicoder.me/problems/no/649').
         download_sample_cases(), [
             TestCase(
                 name='sample-1',
                 input_name='サンプル1 入力',
                 input_data=
                 b'15 3\n1 3\n1 4\n1 5\n2\n2\n1 10\n1 10\n1 1\n2\n1 3\n2\n1 1000\n2\n1 0\n2\n',
                 output_name='サンプル1 出力',
                 output_data=b'5\n-1\n4\n3\n10\n3\n'),
             TestCase(name='sample-2',
                      input_name='サンプル2 入力',
                      input_data=b'4 1\n1 10\n1 10\n2\n2\n',
                      output_name='サンプル2 出力',
                      output_data=b'10\n10\n'),
             TestCase(
                 name='sample-3',
                 input_name='サンプル3 入力',
                 input_data=
                 b'4 2\n1 9\n1 10000000000000000\n1 90000000000000000\n2\n',
                 output_name='サンプル3 出力',
                 output_data=b'10000000000000000\n'),
             TestCase(name='sample-4',
                      input_name='サンプル4 入力',
                      input_data=b'1 1\n2\n',
                      output_name='サンプル4 出力',
                      output_data=b'-1\n'),
         ])
Ejemplo n.º 4
0
 def test_normal(self):
     self.assertEqual(
         YukicoderProblem.from_url(
             'https://yukicoder.me/problems/no/1').get_input_format(),
         '\\(N\\)\n\\(C\\)\n\\(V\\)\n\\(S_1\\ S_2\\ S_3\\ \\dots\\ S_V\\)\n\\(T_1\\ T_2\\ T_3\\ \\dots\\ T_V\\)\n\\(Y_1\\ Y_2\\ Y_3\\ \\dots\\ Y_V\\)\n\\(M_1\\ M_2\\ M_3\\ \\dots\\ M_V\\)\n'
     )
     self.assertEqual(
         YukicoderProblem.from_url(
             'https://yukicoder.me/problems/no/2').get_input_format(),
         'N\n')
     self.assertEqual(
         YukicoderProblem.from_url(
             'https://yukicoder.me/problems/no/3').get_input_format(),
         'N\n')
     self.assertEqual(
         YukicoderProblem.from_url(
             'https://yukicoder.me/problems/no/128').get_input_format(),
         'N\nM')
     self.assertEqual(
         YukicoderProblem.from_url(
             'https://yukicoder.me/problems/no/256').get_input_format(),
         '$N$\n')
     self.assertEqual(
         YukicoderProblem.from_url(
             'https://yukicoder.me/problems/no/512').get_input_format(),
         '$X$ $Y$\n$N$\n$A_1$ $\\cdots$ $A_N$\n')
     self.assertEqual(
         YukicoderProblem.from_url(
             'https://yukicoder.me/problems/no/777').get_input_format(),
         '$N$\n$A_1$ $B_1$ $C_1$\n$A_2$ $B_2$ $C_2$\n…\n$A_N$ $B_N$ $C_N$\n'
     )
Ejemplo n.º 5
0
    def test_donwload_sample_cases(self):
        self.assertEqual(YukicoderProblem.from_url('http://yukicoder.me/problems/no/9000').download_sample_cases(), [
            TestCase(name='sample-1', input_name='サンプル1 入力', input_data=b'yukicoder\n', output_name='サンプル1 出力', output_data=b'Hello World!\n'),
        ])

        self.assertEqual(YukicoderProblem.from_url('https://yukicoder.me/problems/no/400').download_sample_cases(), [
            TestCase(name='sample-1', input_name='サンプル1 入力', input_data=b'<<<\n', output_name='サンプル1 出力', output_data=b'>>>\n'),
            TestCase(name='sample-2', input_name='サンプル2 入力', input_data=b'<>>\n', output_name='サンプル2 出力', output_data=b'<<>\n'),
            TestCase(name='sample-3', input_name='サンプル3 入力', input_data=b'>>><<<\n', output_name='サンプル3 出力', output_data=b'>>><<<\n'),
            TestCase(name='sample-4', input_name='サンプル4 入力', input_data=b'><<><<<><><\n', output_name='サンプル4 出力', output_data=b'><><>>><>><\n'),
        ])

        self.assertEqual(YukicoderProblem.from_url('https://yukicoder.me/problems/no/260').download_sample_cases(), [
            TestCase(name='sample-1', input_name='サンプル1 入力', input_data=b'1 100\n', output_name='サンプル1 出力', output_data=b'40\n'),
            TestCase(name='sample-2', input_name='サンプル2 入力', input_data=b'114 514\n', output_name='サンプル2 出力', output_data=b'211\n'),
            TestCase(name='sample-3', input_name='サンプル3 入力', input_data=b'1234 567890\n', output_name='サンプル3 出力', output_data=b'339733\n'),
        ])

        self.assertEqual(YukicoderProblem.from_url('https://yukicoder.me/problems/no/104').download_sample_cases(), [
            TestCase(name='sample-1', input_name='サンプル1 入力', input_data=b'LR\n', output_name='サンプル1 出力', output_data=b'5\n'),
            TestCase(name='sample-2', input_name='サンプル2 入力', input_data=b'RLL\n', output_name='サンプル2 出力', output_data=b'12\n'),
            TestCase(name='sample-3', input_name='サンプル3 入力', input_data=b'RLLRLRLRRRLRL\n', output_name='サンプル3 出力', output_data=b'12986\n'),
            TestCase(name='sample-4', input_name='サンプル4 入力', input_data=b'\n', output_name='サンプル4 出力', output_data=b'1\n'),
        ])
Ejemplo n.º 6
0
 def test_list_problems(self):
     self.assertEqual(
         YukicoderContest.from_url(
             'https://yukicoder.me/contests/276').list_problems(), [
                 YukicoderProblem(problem_id=4401),
                 YukicoderProblem(problem_id=4809),
                 YukicoderProblem(problem_id=4387),
                 YukicoderProblem(problem_id=4729),
                 YukicoderProblem(problem_id=4271),
                 YukicoderProblem(problem_id=4255),
             ])
Ejemplo n.º 7
0
 def test_problem_without_input(self):
     self.assertIsNone(
         YukicoderProblem.from_url(
             'https://yukicoder.me/problems/no/3003').get_input_format())
Ejemplo n.º 8
0
    def test_get_handmade_cases_issue_553(self):
        # see https://github.com/kmyk/online-judge-tools/issues/553
        handmade_html = """
<!DOCTYPE html>
<html lang="ja">
<head>
</head>
<body>
<div class="block">
    <div class="sample">
        <h5 class="underline">サンプル1</h5>
        <div class="paragraph">
            <h6>入力</h6>
            <pre><strong>3<br/>1</strong> 2<br/>3 4<br/>5 6</pre>
            <h6>出力</h6>
            <pre>0<br/><br/><br/><br/><br/>0</pre>
        </div>
    </div>

    <div class="sample">
        <h5 class="underline">サンプル2</h5>
        <div class="paragraph">
            <h6>入力</h6>
            <pre>1 1 1
1 <strong><mark>0</mark></strong> 1
1 1 1</pre>
            <h6>出力</h6>
            <pre><s>0</s></pre>
        </div>
    </div>

    <div class="sample">
        <h5 class="underline">サンプル3</h5>
        <div class="paragraph">
            <h6>入力</h6>
            <pre><i></i></pre>
            <h6>出力</h6>
            <pre><i><strong>We<br/><mark>Love</mark><br/><s>Competitive</s><br/>Programming!</strong></i></pre>
        </div>
    </div>

    <div class="sample">
        <h5 class="underline">サンプル4</h5>
        <div class="paragraph">
            <h6>入力</h6>
            <pre></pre>
            <h6>出力</h6>
            <pre>A<-- comment1 -->B<!-- comment2 -->C</pre>
        </div>
    </div>
</div>
</body>
</html>
"""
        self.assertEqual(
            get_handmade_sample_cases(YukicoderProblem(problem_no=5555),
                                      html=handmade_html),
            [
                TestCase(name='sample-1',
                         input_name='サンプル1 入力',
                         input_data=b'3\n1 2\n3 4\n5 6\n',
                         output_name='サンプル1 出力',
                         output_data=b'0\n\n\n\n\n0\n'),
                TestCase(name='sample-2',
                         input_name='サンプル2 入力',
                         input_data=b'1 1 1\n1 0 1\n1 1 1\n',
                         output_name='サンプル2 出力',
                         output_data=b'0\n'),
                TestCase(name='sample-3',
                         input_name='サンプル3 入力',
                         input_data=b'\n',
                         output_name='サンプル3 出力',
                         output_data=b'We\nLove\nCompetitive\nProgramming!\n'),
                TestCase(name='sample-4',
                         input_name='サンプル4 入力',
                         input_data=b'\n',
                         output_name='サンプル4 出力',
                         output_data=b'ABC\n'),
            ])