Spaces:
Sleeping
Sleeping
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() | |