File size: 4,037 Bytes
e26e6f0
 
 
b56c552
28e57d6
b56c552
d73cfae
b56c552
 
 
d73cfae
 
 
 
b56c552
013c7f1
93d1180
 
 
 
 
 
 
 
 
013c7f1
b56c552
 
 
3057500
 
 
 
 
 
 
 
 
 
 
 
 
 
 
93d1180
 
 
3057500
93d1180
 
 
3057500
93d1180
 
 
 
 
 
3057500
93d1180
 
 
3057500
93d1180
 
 
e26e6f0
d73cfae
 
0e28850
 
d73cfae
0e28850
 
 
 
 
d73cfae
0e28850
d73cfae
0e28850
 
 
 
 
d73cfae
 
 
 
 
 
 
 
 
0e28850
d73cfae
 
 
 
 
 
 
 
 
 
 
 
 
 
b56c552
e26e6f0
 
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import streamlit as st

def main():
    st.title("้›†ๅˆๆ“ไฝœใ‚ขใƒ—ใƒช")

    # ใƒกใƒ‹ใƒฅใƒผใฎ้ธๆŠž
    option = st.sidebar.selectbox("ๆฉŸ่ƒฝใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„", ["้›†ๅˆใฎๆ“ไฝœ", "ๅ…จไฝ“้›†ๅˆใฎ็”Ÿๆˆ", "่ฃœ้›†ๅˆใฎ่จˆ็ฎ—"])

    if option == "้›†ๅˆใฎๆ“ไฝœ":
        set_operations()
    elif option == "ๅ…จไฝ“้›†ๅˆใฎ็”Ÿๆˆ":
        generate_universe()
    elif option == "่ฃœ้›†ๅˆใฎ่จˆ็ฎ—":
        complement_operation()

def parse_set(input_str):
    if input_str:
        try:
            return set(map(int, input_str.split(',')))
        except ValueError:
            st.error("ๅ…ฅๅŠ›ใŒๆญฃใ—ใใ‚ใ‚Šใพใ›ใ‚“ใ€‚ใ‚ซใƒณใƒžๅŒบๅˆ‡ใ‚Šใฎๆ•ดๆ•ฐใ‚’ๅ…ฅๅŠ›ใ—ใฆใใ ใ•ใ„ใ€‚")
            return None
    else:
        st.error("ๅ…ฅๅŠ›ใŒ็ฉบใงใ™ใ€‚ใ‚ซใƒณใƒžๅŒบๅˆ‡ใ‚Šใฎๆ•ดๆ•ฐใ‚’ๅ…ฅๅŠ›ใ—ใฆใใ ใ•ใ„ใ€‚")
        return None

def set_operations():
    st.header("้›†ๅˆใฎๆ“ไฝœ")

    with st.form(key='set_operations_form'):
        # ใƒฆใƒผใ‚ถใƒผๅ…ฅๅŠ›
        set1 = st.text_input("้›†ๅˆ1 (ใ‚ซใƒณใƒžๅŒบๅˆ‡ใ‚Šใง่ฆ็ด ใ‚’ๅ…ฅๅŠ›ใ—ใฆใใ ใ•ใ„)", "1,2,3")
        set2 = st.text_input("้›†ๅˆ2 (ใ‚ซใƒณใƒžๅŒบๅˆ‡ใ‚Šใง่ฆ็ด ใ‚’ๅ…ฅๅŠ›ใ—ใฆใใ ใ•ใ„)", "3,4,5")
        set3 = st.text_input("้›†ๅˆ3 (ใ‚ซใƒณใƒžๅŒบๅˆ‡ใ‚Šใง่ฆ็ด ใ‚’ๅ…ฅๅŠ›ใ—ใฆใใ ใ•ใ„)", "5,6,7")
        
        # ใƒ•ใ‚ฉใƒผใƒ ้€ไฟกใƒœใ‚ฟใƒณ
        submit_button = st.form_submit_button(label='ๅฎŸ่กŒ')

    if submit_button:
        # ๅ…ฅๅŠ›ใ•ใ‚ŒใŸๆ–‡ๅญ—ๅˆ—ใ‚’้›†ๅˆใซๅค‰ๆ›
        set1 = parse_set(set1)
        set2 = parse_set(set2)
        set3 = parse_set(set3)

        if set1 is not None and set2 is not None and set3 is not None:
            # ้›†ๅˆใฎๆ“ไฝœ
            st.subheader("้›†ๅˆใฎๆ“ไฝœ็ตๆžœ")

            st.subheader("ๅ’Œ้›†ๅˆ")
            union = set1.union(set2, set3)
            st.write(union)

            st.subheader("็ฉ้›†ๅˆ")
            intersection = set1.intersection(set2, set3)
            if intersection:
                st.write(intersection)
            else:
                st.write("็ฉ้›†ๅˆใฎ็ตๆžœใฏ็ฉบใงใ™ใ€‚")

            st.subheader("ๅทฎ้›†ๅˆ")
            difference = set1.difference(set2, set3)
            st.write(difference)

            st.subheader("ๅฏพ็งฐๅทฎ")
            symmetric_difference = set1.symmetric_difference(set2)
            st.write(symmetric_difference)

def generate_universe():
    st.header("ๅ…จไฝ“้›†ๅˆใฎ็”Ÿๆˆ")

    with st.form(key='generate_universe_form'):
        # ใƒฆใƒผใ‚ถใƒผๅ…ฅๅŠ›
        initial_value = st.number_input("ๅˆๆœŸๅ€ค", value=0)
        step = st.number_input("ใ‚นใƒ†ใƒƒใƒ—", value=1)
        num_steps = st.number_input("ๅ›žๆ•ฐ", value=10, min_value=1)
        
        # ใƒ•ใ‚ฉใƒผใƒ ้€ไฟกใƒœใ‚ฟใƒณ
        submit_button = st.form_submit_button(label='็”Ÿๆˆ')

    if submit_button:
        # ๅ…จไฝ“้›†ๅˆใฎ็”Ÿๆˆ
        universe_set = set(range(initial_value, initial_value + step * num_steps, step))
        
        st.subheader("็”Ÿๆˆใ•ใ‚ŒใŸๅ…จไฝ“้›†ๅˆ")
        st.write(universe_set)

def complement_operation():
    st.header("่ฃœ้›†ๅˆใฎ่จˆ็ฎ—")

    with st.form(key='complement_operation_form'):
        # ๅ…จไฝ“้›†ๅˆใฎๆŒ‡ๅฎš
        universe = st.text_input("ๅ…จไฝ“้›†ๅˆ (ใ‚ซใƒณใƒžๅŒบๅˆ‡ใ‚Šใง่ฆ็ด ใ‚’ๅ…ฅๅŠ›ใ—ใฆใใ ใ•ใ„)", "1,2,3,4,5,6,7,8,9,10")
        # ๅฏพ่ฑก้›†ๅˆใฎๆŒ‡ๅฎš
        target_set = st.text_input("ๅฏพ่ฑก้›†ๅˆ (ใ‚ซใƒณใƒžๅŒบๅˆ‡ใ‚Šใง่ฆ็ด ใ‚’ๅ…ฅๅŠ›ใ—ใฆใใ ใ•ใ„)", "1,3,5")
        
        # ใƒ•ใ‚ฉใƒผใƒ ้€ไฟกใƒœใ‚ฟใƒณ
        submit_button = st.form_submit_button(label='่จˆ็ฎ—')

    if submit_button:
        # ๅ…ฅๅŠ›ใ•ใ‚ŒใŸๆ–‡ๅญ—ๅˆ—ใ‚’้›†ๅˆใซๅค‰ๆ›
        universe_set = parse_set(universe)
        target_set = parse_set(target_set)

        if universe_set is not None and target_set is not None:
            # ่ฃœ้›†ๅˆใฎ่จˆ็ฎ—
            complement = universe_set.difference(target_set)
            
            st.subheader("่ฃœ้›†ๅˆใฎ่จˆ็ฎ—็ตๆžœ")
            st.write(complement)

if __name__ == "__main__":
    main()