Visualize
main.py
import re def harfi_standardize_et(metin): if not metin: return "" # 1. Aşama: Harekeleri ve özel sembolleri temizle 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'[a-zA-Z]', '', temiz) # 2. Aşama: Karakter Dönüşümlerini Yap donusum = { 'آ': 'ا', 'أ': 'ا', 'إ': 'ا', 'ى': 'ي', 'ؤ': 'و', 'ئ': 'ي', 'ة': 'ه' } temiz = "".join([donusum.get(harf, harf) for harf in temiz]) # 3. Aşama: Sadece saf Arapça harfleri ve boşlukları koru metin_filtresi = re.compile(r'[^\s\u0621-\u064A]') temiz = metin_filtresi.sub('', temiz) return temiz.strip() # Ortak Alfabe Tanımları 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 } EBCED_ALFABE = { 'ا': 1, 'ب': 2, 'ج': 3, 'د': 4, 'ه': 5, 'و': 6, 'ز': 7, 'ح': 8, 'ط': 9, 'ي': 10, 'ك': 20, 'ل': 30, 'م': 40, 'ن': 50, 'س': 60, 'ع': 70, 'ف': 80, 'ص': 90, 'ق': 100, 'ر': 200, 'ش': 300, 'ت': 400, 'ث': 500, 'خ': 600, 'ذ': 700, 'ض': 800, 'ظ': 900, 'غ': 1000 } # Orijinal listedeki Mod 7 filtresi harfleri IZIN_VERILEN_14_HARF = {'د', 'ذ', 'ر', 'ز', 'س', 'ش', 'ص', 'ض', 'ط', 'ظ', 'ع', 'غ', 'ف', 'ق'} # Gerçek Hurûf-u Mukatta Harf Kümesi GERCEK_MUKATTA_HARFLERI = {'ا', 'ح', 'ر', 'س', 'ص', 'ط', 'ع', 'ق', 'ك', 'ل', 'م', 'ن', 'ه', 'ي'} def guvenli_mod_hesapla(sayi_str, mod_degeri): """Çok büyük basamaklı sayı dize (string) verilerinin çökme ve yavaşlama olmadan modunu alır.""" kalan = 0 for rakam in sayi_str: kalan = (kalan * 10 + int(rakam)) % mod_degeri return kalan def kontrol_19_sistemi(harfleri_hazir_kelimeler, mod="standart"): aktif_sozluk = EBCED_ALFABE if mod == "ebced" else STANDART_ALFABE sayi_gruplari = [] for kelime in harfleri_hazir_kelimeler: harf_sayilari = [str(aktif_sozluk[harf]) for harf in kelime if harf in aktif_sozluk] if harf_sayilari: sayi_gruplari.append("".join(harf_sayilari)) olusan_sayi_str = "19".join(sayi_gruplari) if not olusan_sayi_str: return None, 0, False kalan = guvenli_mod_hesapla(olusan_sayi_str, 19) return olusan_sayi_str, kalan, (kalan == 0) # ---- HIZLI SORGULAMA PANELİ ---- print("="*75) print(" ARAPÇA METİN ÖZELLEŞTİRİLMİŞ ANALİZ PANELİ ") print("="*75) while True: print("\nLütfen Arapça metni girin/yapıştırın (Çıkmak için 'q' yazın):") ana_metin = input("> ").strip() if ana_metin.lower() in ['q', 'quit', 'çıkış', 'cikis']: print("Sorgu paneli kapatıldı. İyi çalışmalar!") break if not ana_metin: continue # Kelimeleri ayır ve standardize et kelimeler = [k for k in ana_metin.split() if k] standardize_kelimeler = [harfi_standardize_et(k) for k in kelimeler if harfi_standardize_et(k)] if not standardize_kelimeler: print("Hata: Metinde geçerli Arapça harf bulunamadı!") continue print("\n" + "-"*50) print(f"Tespit Edilen Kelime Sayısı: {len(standardize_kelimeler)}") print("-"*50) # 1. Standart Mod 19 Kontrolü s19_str, s19_kalan, s19_onay = kontrol_19_sistemi(standardize_kelimeler, "standart") s_durum = "✅ TAM BÖLÜNÜYOR (MUCİZE!)" if s19_onay else f"❌ Bölünmüyor (Kalan: {s19_kalan})" print(f"▶️ HER HARFİN ALFABE SIRASI KELİME ARASI 19 İLE OLUŞAN SAYI MOD 19:") print(f" Oluşan Sayı: {s19_str}") print(f" Durum : {s_durum}") print("-"*50) # 2. Ebced Mod 19 Kontrolü e19_str, e19_kalan, e19_onay = kontrol_19_sistemi(standardize_kelimeler, "ebced") e_durum = "✅ TAM BÖLÜNÜYOR (MUCİZE!)" if e19_onay else f"❌ Bölünmüyor (Kalan: {e19_kalan})" print(f"▶️ HER HARFİN EBCED DEĞERİ KELİME ARASI 19 İLE OLUŞAN SAYI MOD 19:") print(f" Oluşan Sayı: {e19_str}") print(f" Durum : {e_durum}") print("-"*50) # 3. Kalan Harfler Yan Yana Mod 7 Hesaplamaları kalan_alfabe_list = [] kalan_ebced_list = [] # Mukatta ve Toplam Saf Harf Sayacı Değişkenleri mukatta_ebced_toplami = 0 mukatta_harf_sayisi = 0 toplam_saf_harf_sayisi = 0 for kelime in standardize_kelimeler: for harf in kelime: if harf in STANDART_ALFABE: toplam_saf_harf_sayisi += 1 # Standardize edilmiş toplam harf sayısı # Orijinal Mod 7 Filtresi if harf not in IZIN_VERILEN_14_HARF: kalan_alfabe_list.append(str(STANDART_ALFABE[harf])) kalan_ebced_list.append(str(EBCED_ALFABE[harf])) # Bağımsız Mukatta Analizi if harf in GERCEK_MUKATTA_HARFLERI: mukatta_ebced_toplami += EBCED_ALFABE[harf] mukatta_harf_sayisi += 1 kalan_alfabe_str = "".join(kalan_alfabe_list) kalan_ebced_str = "".join(kalan_ebced_list) print(f"▶️ İKİLİLİLERDEN 7Lİ GRUP (14 HARF) ÇIKTIKTAN SONRA KALAN HARFLER YAN YANA MOD 7 ANALİZİ:") # Kalan Harfler Alfabe Mod 7 if kalan_alfabe_str: kalan_alfabe_mod7 = guvenli_mod_hesapla(kalan_alfabe_str, 7) ka_7_durum = "✅ TAM BÖLÜNÜYOR!" if kalan_alfabe_mod7 == 0 else f"❌ Bölünmüyor (Kalan: {kalan_alfabe_mod7})" print(f" Alfabe Sayısı: {kalan_alfabe_str}") print(f" Alfabe Mod 7 : {ka_7_durum}") else: print(" Alfabe Mod 7 : Metinde kalan harf yok.") # Kalan Harfler Ebced Mod 7 if kalan_ebced_str: kalan_ebced_mod7 = guvenli_mod_hesapla(kalan_ebced_str, 7) ke_7_durum = "✅ TAM BÖLÜNÜYOR!" if kalan_ebced_mod7 == 0 else f"❌ Bölünmüyor (Kalan: {kalan_ebced_mod7})" print(f" Ebced Sayısı : {kalan_ebced_str}") print(f" Ebced Mod 7 : {ke_7_durum}") else: print(" Ebced Mod 7 : Metinde kalan harf yok.") print("-"*50) # Hurûf-u Mukatta Bağımsız Analizi print(f"▶️ HURÛF-U MUKATTA EBCED TOPLAM ANALİZİ (MOD 19):") if mukatta_harf_sayisi > 0: mukatta_mod19 = mukatta_ebced_toplami % 19 m_durum = "✅ TAM BÖLÜNÜYOR (MUCİZE!)" if mukatta_mod19 == 0 else f"❌ Bölünmüyor (Kalan: {mukatta_mod19})" print(f" Tespit Edilen Mukatta Harf Sayısı: {mukatta_harf_sayisi}") print(f" Toplam Mukatta Ebced Değeri : {mukatta_ebced_toplami}") print(f" Durum : {m_durum}") else: print(" Metinde Hurûf-u Mukatta harfi tespit edilemedi.") print("-"*50) # SON KOŞUL: Toplam Harf Sayısı Kontrolü (80 Harf mi?) print(f"▶️ STANDART HARF SAYISI KONTROLÜ (80 HARF):") h_durum = "✅ METİN TAM 80 HARFTEN OLUŞUYOR!" if toplam_saf_harf_sayisi == 80 else f"❌ 80 Harf Değil (Mevcut Harf Sayısı: {toplam_saf_harf_sayisi})" print(f" Durum : {h_durum}") print("-"*50)
Output