File size: 4,861 Bytes
e26e6f0
423493d
940b7a6
 
e26e6f0
 
b56c552
28e57d6
b56c552
940b7a6
b56c552
 
 
d73cfae
 
 
 
940b7a6
 
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
940b7a6
37ed2b5
 
 
 
 
 
 
 
 
6d2862c
37ed2b5
 
 
 
421998a
 
37ed2b5
423493d
3825094
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
import streamlit as st
from sympy import symbols, solve, S, Interval, Eq
import matplotlib.pyplot as plt
import numpy as np

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

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

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

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)


def inequality_solver():
    st.header("ไธ็ญ‰ๅผใฎ่จˆ็ฎ—")

    with st.form(key='inequality_solver_form'):
        # ใƒฆใƒผใ‚ถใƒผๅ…ฅๅŠ›
        inequality_input = st.text_input("ไธ็ญ‰ๅผใ‚’ๅ…ฅๅŠ›ใ—ใฆใใ ใ•ใ„", "2*x >= 2")
        
        # ใƒ•ใ‚ฉใƒผใƒ ้€ไฟกใƒœใ‚ฟใƒณ
        submit_button = st.form_submit_button(label='่งฃใ‚’ๆฑ‚ใ‚ใ‚‹')

    if submit_button:
        # ไธ็ญ‰ๅผใฎ่งฃใ‚’ๆฑ‚ใ‚ใ‚‹
        x = symbols('x')
        inequality = eval(inequality_input)
        solution = solve(inequality, x)
        
        st.subheader("ไธ็ญ‰ๅผใฎ่งฃ")
        st.write(Eq(str(solution).replace("& (x < oo)","")))

if __name__ == "__main__":
    main()