Visualize
main.py
import re def harfi_standardize_et(metin): """Sizin verdiğiniz orijinal Arapça metin temizleme fonksiyonu""" if not metin: return "" harekeler = re.compile(r'[\u064B-\u065F\u0670\u06D6-\u06ED]') temiz = harekeler.sub('', metin) temiz = re.sub(r'[\u00A0\u2000-\u200A\u202F\u205F\u3000]', ' ', temiz) temiz = re.sub(r'[\d\u0660-\u0669]', '', temiz) temiz = re.sub(r'ء', '', temiz) temiz = re.sub(r'[^\w\s\u0621-\u064A]', '', temiz) donusum = { 'آ': 'ا', 'أ': 'ا', 'إ': 'ا', 'ى': 'ي', 'ؤ': 'و', 'ئ': 'ي', 'ة': 'ه' } son_metin = [] for harf in temiz: if harf in donusum: son_metin.append(donusum[harf]) else: son_metin.append(harf) return "".join(son_metin).strip() def hurufu_mukatta_analiz_et(ana_metin): # Standart Arapça Alfabesi ve Sıra Numaraları (1-28) standart_alfabe = { 'ا': 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 } # İstenen 7 Hurûf-ı Mukatta harfinin Arapça karşılıkları: elif, lam, mim, ra, ha, ta, sin hedef_harfler = {'ا', 'ل', 'م', 'ر', 'ح', 'ط', 'س'} kelimeler = ana_metin.split() print("\n" + "=" * 90) print(f"{'Orijinal Kelime':<20} | {'Temiz Kelime':<15} | {'Geçen Harfler':<15} | {'Oluşan Sayı':<15} | {'7\'ye Bölünme'}") print("=" * 90) tam_bolunenler = [] for k in kelimeler: # Önce metin temizliği yapılıyor temiz_kelime = harfi_standardize_et(k) if not temiz_kelime: continue olusan_sayi_str = "" gecen_harfler = [] # Kelime içindeki harfleri sırasıyla kontrol etme for harf in temiz_kelime: if harf in hedef_harfler: gecen_harfler.append(harf) olusan_sayi_str += str(standart_alfabe[harf]) if olusan_sayi_str: olusan_sayi = int(olusan_sayi_str) kalan = olusan_sayi % 7 if kalan == 0: bolunme_durumu = "Bölünür ✅" tam_bolunenler.append((k, temiz_kelime, olusan_sayi)) else: bolunme_durumu = f"Bölünmez (Kalan: {kalan})" print(f"{k:<20} | {temiz_kelime:<15} | {', '.join(gecen_harfler):<15} | {olusan_sayi_str:<15} | {bolunme_durumu}") else: print(f"{k:<20} | {temiz_kelime:<15} | {'-':<15} | {'Sayı Oluşmadı':<15} | -") # Sonuç Paneli print("\n" + "-"*50) print("🎯 7'YE KALANSIZ BÖLÜNEN KELİMELERİN ÖZETİ:") print("-"*50) if tam_bolunenler: for orj, tmz, sayi in tam_bolunenler: print(f"• Orijinal: '{orj}' (Temiz: '{tmz}') -> Sayı: {sayi} ({sayi} / 7 = {sayi // 7})") else: print("Metinde şartı sağlayan (7'ye tam bölünen) bir kelime bulunamadı.") print("="*90) # ---- PANEL ANA DÖNGÜSÜ ---- print("="*75) print(" HURÛF-I MUKATTA (7 HARF) MODÜL 7 ANALİZ PANELİ ") print("="*75) while True: print("\nLütfen analiz edilecek Arapça metni girin/yapıştırın:") print("(Giriş bittiğinde boş bir satırda ENTER'a basın. Çıkmak için 'çıkış' yazın.)") satirlar = [] cikis_istegi = False while True: hat = input("> ") if hat.strip().lower() == 'çıkış': cikis_istegi = True break if not hat: # Boş satırda ENTER'a basılınca veri girişini bitirir break satirlar.append(hat) if cikis_istegi: print("\nSorgu paneli kapatıldı. İyi çalışmalar!") break ana_metin = " ".join(satirlar).strip() if not ana_metin: print("[UYARI] Herhangi bir metin girmediniz.") continue # Analiz fonksiyonunu çalıştır hurufu_mukatta_analiz_et(ana_metin)
Output