File size: 2,509 Bytes
41302a5
 
 
 
 
 
8c89a6d
6a914f4
3788f63
bcc3eb3
3788f63
293121e
 
83b66cb
 
 
 
 
 
 
 
08dccaf
71d997f
bcd8088
b62bff0
d2654c4
b62bff0
7368e62
 
 
bcd8088
7368e62
41302a5
7368e62
 
41302a5
 
7368e62
 
 
 
 
2b8f77a
 
7368e62
 
 
83b66cb
35b35ab
d80e0ae
 
 
be31a1d
d80e0ae
 
 
 
f5e6a19
 
b4a4ef7
f5e6a19
35b35ab
 
 
be31a1d
3996319
04484c3
35b35ab
b4a4ef7
35b35ab
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# coding: utf-8

# Author: Du Mingzhe ([email protected])
# Date: 2025-04-01

import json
import random 
import pandas as pd
import streamlit as st
from datasets import load_dataset

st.title("Code Arena")

with st.spinner("Loading data...", show_time=True):
    problem_dict = dict()
    ds = load_dataset("Elfsong/leetcode_data", split='train')
    for problem in ds:
        problem_id = problem["problem_id"]
        problem_dict[problem_id] = problem


if "problem" in st.query_params:
    problem_id = int(st.query_params["problem"])
    problem_instance = problem_dict[problem_id]

    with st.container(border=True):
        st.write(f"Problem [{problem_id}]")
    
    with st.expander("Problem Description"):
        st.markdown(problem_instance["question_content"])

    with st.expander("Test Cases"):
        test_cases = json.loads(problem_instance["test_cases"])
        df = pd.DataFrame(
            {
                "input": [test_case['input'] for test_case in test_cases],
                "output": [test_case['output'] for test_case in test_cases],
            }
        )
        st.dataframe(
            df,
            column_config={
                "input": st.column_config.TextColumn("Input"),
                "output": st.column_config.TextColumn("Output"),
            },
            column_order=("input", "output"),
        )
    
else:
    with st.spinner("Loading Framework...", show_time=True):
        df = pd.DataFrame(
            {
                "problem_id": [int(problem['problem_id']) for problem in ds],
                "problem_link": ["https://huggingface.co/spaces/Elfsong/CodeArena/?problem=" + str(problem['problem_id']) for problem in ds],
                "dynamic_point": [[random.randint(0, 5000) for _ in range(30)] for problem in ds],
            }
        )
    
    tab_problem, tab_submission, tab_model = st.tabs(["Problems", "Submissions", "Models"])

    with tab_problem:
        st.dataframe(
            df,
            column_config={
                "problem_id": st.column_config.NumberColumn("Problem ID"),
                "dynamic_point": st.column_config.LineChartColumn("Dynamic Point", y_min=0, y_max=5000),
                "problem_link": st.column_config.LinkColumn("Link", display_text="Open"),
            },
            column_order=("problem_id", "dynamic_point", "problem_link"),
            hide_index=True,
        )

    with tab_submission:
        st.header("Submissions")

    with tab_model:
        st.header("Models")