File size: 1,630 Bytes
7990ab1 |
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 |
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()
|