carp / app.py
byikp's picture
Create app.py
7990ab1 verified
import gradio as gr
import sympy
from graphviz import Digraph
# Asal çarpanları bulan fonksiyon
def asal_carpanlar(sayi):
return sympy.factorint(sayi)
# Çarpan ağacını oluşturmak için rekürsif fonksiyon
def carpan_agaci(sayi):
factors = sympy.factorint(sayi)
if len(factors) == 1 and list(factors.values())[0] == 1:
return str(sayi)
else:
factor = list(factors.keys())[0]
return [sayi, carpan_agaci(factor), carpan_agaci(sayi // factor)]
# Ağacı grafiksel olarak oluşturan fonksiyon
def ciz_agac(agac, graph=None):
if graph is None:
graph = Digraph()
if isinstance(agac, list):
parent = str(agac[0])
left, right = agac[1], agac[2]
for child in [left, right]:
child_label = str(child[0]) if isinstance(child, list) else str(child)
graph.edge(parent, child_label)
if isinstance(child, list):
ciz_agac(child, graph)
return graph
# Gradio arayüzü fonksiyonu
def asal_carpan_gorseli(sayi):
agac = carpan_agaci(int(sayi))
graph = ciz_agac(agac)
graph.render("asal_carpan_agaci", format="png")
return "asal_carpan_agaci.png"
# Gradio arayüz tasarımı
with gr.Blocks() as demo:
gr.Markdown("### 🔢 Asal Çarpan Ağacı Hesaplama")
with gr.Row():
sayi = gr.Number(label="Bir sayı girin", minimum=2, value=48)
btn = gr.Button("Asal Çarpan Ağacını Oluştur 🌳")
output_img = gr.Image(label="Asal Çarpan Ağacı Görseli", type="filepath")
btn.click(asal_carpan_gorseli, inputs=sayi, outputs=output_img)
demo.launch()