kendrickfff's picture
Create app.py
1fcdf1c verified
raw
history blame
2.19 kB
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()