Spaces:
Running
Running
import itertools | |
import gradio as gr | |
def solve_cryptarithm(equation): | |
# Hilangkan spasi dari input user | |
equation = equation.replace(" ", "") | |
# Pisahkan bagian kiri dan kanan persamaan | |
left_side, right_side = equation.split('=') | |
# Ambil semua huruf unik dari persamaan | |
letters = set(filter(str.isalpha, equation)) | |
letters = ''.join(letters) | |
# Jika huruf terlalu banyak (lebih dari 10), maka tidak mungkin menyelesaikan | |
if len(letters) > 10: | |
return "Terlalu banyak huruf untuk diselesaikan!" | |
# Dapatkan semua kombinasi angka unik untuk huruf | |
digits = '0123456789' | |
for perm in itertools.permutations(digits, len(letters)): | |
# Buat mapping huruf ke angka | |
translation = str.maketrans(letters, ''.join(perm)) | |
# Terjemahkan persamaan ke angka | |
translated_left_side = left_side.translate(translation) | |
translated_right_side = right_side.translate(translation) | |
# Cek apakah ada angka yang dimulai dengan 0 pada posisi pertama | |
if any(part.startswith('0') and len(part) > 1 for part in translated_left_side.split('+') + translated_right_side.split('+')): | |
continue | |
try: | |
# Evaluasi apakah nilai kiri sama dengan nilai kanan | |
if eval(translated_left_side) == eval(translated_right_side): | |
return f"Solusi ditemukan: {translated_left_side} = {translated_right_side}" | |
except: | |
continue | |
return "Tidak ada solusi yang ditemukan." | |
def solve_multiple_equations(equations): | |
results = [] | |
for equation in equations.splitlines(): | |
if equation.strip(): # Hanya memproses baris yang tidak kosong | |
result = solve_cryptarithm(equation) | |
results.append(result) | |
return "\n".join(results) | |
# Membuat antarmuka Gradio | |
iface = gr.Interface( | |
fn=solve_multiple_equations, | |
inputs=gr.Textbox(lines=10, placeholder="Masukkan satu atau beberapa persamaan cryptarithm di sini..."), | |
outputs="text", | |
title="Solver Cryptarithm", | |
description="Masukkan persamaan cryptarithm (misal: SEND + MORE = MONEY) di setiap baris." | |
) | |
if __name__ == "__main__": | |
iface.launch() | |