File size: 3,931 Bytes
310af8d
 
f6fd044
310af8d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77ac01c
 
310af8d
 
 
 
77ac01c
311bca3
310af8d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77ac01c
 
310af8d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f129397
310af8d
 
 
f129397
310af8d
311bca3
310af8d
 
 
f129397
310af8d
 
 
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
import itertools
import requests
import gradio as gr

# Địa chỉ URL của Google Form (thay bằng URL Form thực tế của bạn)
form_url = 'https://docs.google.com/forms/u/0/d/e/1FAIpQLSe86wq_QorUNWn2rCiXKaOmOvphXx7BBsylDWV2Er5wJ-iIXw/formResponse?pli=1'

# Giá trị nguyên và giới hạn cho các biến
values = range(1, 56)

# Hệ số trong các phương trình
coef_KQ3 = [1.58, 0.742, 0.317, 0.0784, -0.1188, -0.00622, 0.00463]  # KQ3
coef_KQ1 = [-1.13, 0.748, 0.0171, -0.00513]  # KQ1
coef_KQ6 = [18.32, 0.290, -0.474, 1.210, -0.00628, -0.01439, -0.00641, 0.02001]  # KQ6

# Lưu nghiệm gần đúng và loại bỏ nghiệm trùng lặp
unique_solutions = set()



# Hàm xử lý tính toán và gửi lên Google Form
def process_and_send(values_input):
    global unique_solutions
    unique_solutions.clear()  # Xóa bộ nhớ nghiệm cũ
    # Sai số epsilon để kiểm tra giá trị gần đúng
    epsilon = values_input

    # Lặp qua các giá trị có thể
    for KQ1, KQ2, KQ3, KQ4, KQ5, KQ6 in itertools.product(values, repeat=6):
        # Kiểm tra điều kiện ràng buộc
        if 1 <= KQ1 < KQ2 < KQ3 < KQ4 < KQ5 < KQ6 <= 55:
            # Tính KQ3 từ KQ2, KQ4, KQ5, KQ6
            KQ3_calc = coef_KQ3[0] + coef_KQ3[1] * KQ2 + coef_KQ3[2] * KQ4 + coef_KQ3[3] * KQ5 \
                       + coef_KQ3[4] * KQ6 + coef_KQ3[5] * KQ2 * KQ5 + coef_KQ3[6] * KQ4 * KQ6

            # Tính KQ1 từ KQ2, KQ5
            KQ1_calc = coef_KQ1[0] + coef_KQ1[1] * KQ2 + coef_KQ1[2] * KQ5 + coef_KQ1[3] * KQ2 * KQ5

            # Tính KQ6 từ KQ2, KQ4, KQ5
            KQ6_calc = coef_KQ6[0] + coef_KQ6[1] * KQ2 + coef_KQ6[2] * KQ4 + coef_KQ6[3] * KQ5 \
                       + coef_KQ6[4] * KQ4**2 + coef_KQ6[5] * KQ5**2 + coef_KQ6[6] * KQ2 * KQ5 + coef_KQ6[7] * KQ4 * KQ5

            # Kiểm tra các điều kiện ràng buộc
            if abs(KQ1_calc - round(KQ1_calc)) < epsilon and abs(KQ3_calc - round(KQ3_calc)) < epsilon and abs(KQ6_calc - round(KQ6_calc)) < epsilon:
                if 1 <= KQ1_calc <= 12 and 3 <= KQ3_calc <= 32 and 33 <= KQ6_calc <= 53:
                    # Thêm nghiệm vào tập hợp để loại bỏ trùng lặp
                    unique_solutions.add((round(KQ1_calc), round(KQ3_calc), round(KQ6_calc), KQ1, KQ2, KQ3, KQ4, KQ5, KQ6))

    # Gửi dữ liệu lên Google Form
    results = []
    for solution in unique_solutions:
        data = {
            "entry.1511535107": solution[0],  # Gửi giá trị rounded cho KQ1
            "entry.818723360": solution[1],   # Gửi giá trị rounded cho KQ3
            "entry.813212118": solution[2],   # Gửi giá trị rounded cho KQ6
            "entry.841431312": solution[3],   # Gửi giá trị nguyên KQ1
            "entry.966231036": solution[4],   # Gửi giá trị nguyên KQ2
            "entry.1686911997": solution[5],  # Gửi giá trị nguyên KQ3
            "entry.1450362490": solution[6],  # Gửi giá trị nguyên KQ4
            "entry.1112265375": solution[7],  # Gửi giá trị nguyên KQ5
            "entry.233110464": solution[8],   # Gửi giá trị nguyên KQ6
        }

        # Gửi yêu cầu POST tới Google Form
        response = requests.post(form_url, data=data)

        if response.status_code == 200:
            results.append(f"Đã gửi thành công: {solution}")
        else:
            results.append(f"Lỗi khi gửi: {solution} - Mã lỗi: {response.status_code}")
    
    return "\n".join(results)

# Tạo giao diện Gradio
interface = gr.Interface(
    fn=process_and_send,
    inputs=gr.Number(label="Nhập giá trị",value=0.0000001),
    outputs="text",
    title="Ứng dụng Gửi Dữ Liệu Lên Google Form",
    description="Nhập các giá trị cần thiết và nhấn 'Submit' để tính toán và gửi kết quả lên Google Form."
)

# Chạy giao diện Gradio
interface.launch()