|
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() |
|
|