{}
run-icon
main.py
import re def metni_temizle_ve_esitle(metin): """ Harekeleri temizler. Tüm hemzeli harflerin (أ, إ, آ, ئ, ؤ) sadece hemzesini kaldırarak yalın taban harflerini (ا, ي, و) korur. Müstakil hemzeyi (ء) siler. """ # 1. Harekeleri, şeddeleri ve Kuran durak işaretlerini kaldır harekeler = re.compile(r'[\u064B-\u065F\u0670\u06D6-\u06ED]') temiz = harekeler.sub('', metin) # 2. Noktalama işaretlerini ve sayıları kaldır temiz = re.sub(r'[^\w\s\u0621-\u064A]', '', temiz) temiz = re.sub(r'[\d\u0660-\u0669]', '', temiz) # 3. KAPSAMLI HARF DÖNÜŞÜMLERİ VE HEMZE AYRIŞTIRMASI # Lamelif birleşimlerini aç (İçindeki gizli Elifleri yakalamak için) temiz = re.sub(r'لآ', 'لا', temiz) temiz = re.sub(r'لأ', 'لا', temiz) temiz = re.sub(r'لإ', 'لا', temiz) # 👉 DÜZENLEME: Hemzeli Elifleri yalın Elif (ا) yap temiz = re.sub(r'[أإآ]', 'ا', temiz) # 👉 DÜZENLEME: Kürsülü hemzeyi yalın Ye (ي) yap (Hemzesi atılmış oldu) temiz = re.sub(r'ئ', 'ي', temiz) # 👉 DÜZENLEME: Vavlı hemzeyi yalın Vav (و) yap (Hemzesi atılmış oldu) temiz = re.sub(r'ؤ', 'و', temiz) # 👉 DÜZENLEME: Altında taban harfi olmayan müstakil hemzeyi (ء) tamamen sil temiz = re.sub(r'ء', '', temiz) # Noktasız ye (ى) harfini standart Ye (ي) yap temiz = re.sub(r'ى', 'ي', temiz) # Ta Marbuta (ة) harfini He (ه) yap (Ebced değeri 5'tir) temiz = re.sub(r'ة', 'ه', temiz) # 4. Çift boşlukları temizle temiz = ' '.join(temiz.split()) return temiz def hurufi_mukattaa_ebced_hesapla(ham_metin): temiz_metin = metni_temizle_ve_esitle(ham_metin) if not temiz_metin: print("❌ Hata: Temizleme sonrasında analiz edilecek harf bulunamadı!") return # 14 HURÛF-I MUKATTA'A HARFLERİ mukattaa_harfleri = {'ا', 'ح', 'ر', 'س', 'ص', 'ط', 'ع', 'ق', 'ك', 'ل', 'م', 'ن', 'ه', 'ي'} # STANDART EBCED TABLOSU tam_ebced_sozluk = { 'ا': 1, 'ب': 2, 'ج': 3, 'د': 4, 'ه': 5, 'و': 6, 'ز': 7, 'ح': 8, 'ط': 9, 'ي': 10, 'ك': 20, 'ل': 30, 'م': 40, 'ن': 50, 'س': 60, 'ع': 70, 'ف': 80, 'ص': 90, 'ق': 100, 'ر': 200, 'sh': 300, 'ت': 400, 'ث': 500, 'خ': 600, 'ذ': 700, 'ض': 800, 'ظ': 900, 'غ': 1000 } # GENEL METİN İÇİN MUKATTA ANALİZİ bulunan_harfler = {} toplam_mukatta_ebced = 0 toplam_mukatta_harf_sayisi = 0 for harf in temiz_metin: if harf in mukattaa_harfleri: bulunan_harfler[harf] = bulunan_harfler.get(harf, 0) + 1 toplam_mukatta_harf_sayisi += 1 toplam_mukatta_ebced += tam_ebced_sozluk[harf] # VERİ ANALİZİ VE HAZIRLIK kelimeler = [k for k in temiz_metin.split() if k.strip()] kelime_detaylari = [] genel_harf_sirasi = 1 kumulatif_harf_sayisi = 0 kumulatif_ebced_degeri = 0 for sira, kelime in enumerate(kelimeler, start=1): k_harfler = [h for h in kelime if h in tam_ebced_sozluk] k_harf_sayisi = len(k_harfler) k_ebced_toplam = sum(tam_ebced_sozluk[h] for h in k_harfler) kumulatif_harf_sayisi += k_harf_sayisi kumulatif_ebced_degeri += k_ebced_toplam harf_listesi = [] for k_harf_sira, harf in enumerate(k_harfler, start=1): val = tam_ebced_sozluk[harf] harf_listesi.append({ 'harf': harf, 'deger': val, 'kelime_ici_sira': k_harf_sira, 'genel_sira': genel_harf_sirasi }) genel_harf_sirasi += 1 kelime_detaylari.append({ 'sira': sira, 'harf_sayisi': k_harf_sayisi, 'ebced_toplam': k_ebced_toplam, 'kumulatif_harf': kumulatif_harf_sayisi, 'kumulatif_ebced': kumulatif_ebced_degeri, 'harfler': harf_listesi }) # 10 ÖZEL MADDENİN OLUŞTURULMASI str_m1, str_m2, str_m3, str_m4, str_m5 = "", "", "", "", "" str_m6, str_m7, str_m8, str_m9, str_m10 = "", "", "", "", "" for k in kelime_detaylari: str_m1 += f"{k['sira']}{k['harf_sayisi']}" str_m2 += f"{k['sira']}{k['ebced_toplam']}" str_m4 += f"{k['sira']}{k['kumulatif_harf']}" str_m5 += f"{k['sira']}{k['kumulatif_ebced']}" str_m7 += f"{k['sira']}{k['ebced_toplam'] + k['harf_sayisi']}" for k in kelime_detaylari: str_m3 += f"{k['sira']}" for h in k['harfler']: str_m3 += f"{h['deger']}" str_m6 += f"{k['sira']}" for h in k['harfler']: str_m6 += f"{h['kelime_ici_sira']}{h['deger']}" for k in kelime_detaylari: for h in k['harfler']: str_m8 += f"{h['deger']}{h['genel_sira']}" str_m9 += f"{h['deger']}{h['genel_sira']}" str_m9 += f"{k['sira']}" for k in kelime_detaylari: for h in k['harfler']: str_m10 += f"{h['deger']}{h['genel_sira']}" str_m10 += f"{k['ebced_toplam']}" def int_yap(s): s_clean = ''.join(s.split()) return int(s_clean) if s_clean else 0 maddeler = { "Madde 1: [Kelime Sırası + Harf Sayısı]": int_yap(str_m1), "Madde 2: [Kelime Sırası + Kelime Ebced Toplamı]": int_yap(str_m2), "Madde 3: [Kelime Sırası + Her Harfin Ayrı Ayrı Ebced Değerleri]": int_yap(str_m3), "Madde 4: [Kelime Sırası + O Kelimeye Kadarki Kümülatif Harf Sayısı]": int_yap(str_m4), "Madde 5: [Kelime Sırası + O Kelimeye Kadarki Kümülatif Ebced Toplamı]": int_yap(str_m5), "Madde 6: [Kelime Sırası + Her Harfin Kelime İçi Sırası + Harf Ebcedi]": int_yap(str_m6), "Madde 7: [Kelime Sırası + (Kelime Ebcedi + Harf Sayısı Toplamı)]": int_yap(str_m7), "Madde 8: [Her Harfin Ebced Değeri + Değişken Genel Harf Sırası]": int_yap(str_m8), "Madde 9: [Her Harfin Ebcedi + Değişken Genel Harf Sırası + Kelime Numarası]": int_yap(str_m9), "Madde 10: [Her Harfin Ebcedi + Değişken Genel Harf Sırası + Kelime Ebced Toplamı]": int_yap(str_m10) } print("\n" + "="*60) print("--- 1-2: ORİJİNAL GENEL MUKATTA KONTROLLERİ ---") print(f"Orijinal Girdi: {ham_metin}") print(f"Dönüştürülmüş Yalın Metin: {temiz_metin}\n") print("Harf Sayım Detayları:") for h_adi, sayisi in bulunan_harfler.items(): print(f" Harf: '{h_adi}' -> {sayisi} adet bulundu.") print(f"\n👉 Toplam Mukatta Harf Sayısı: {toplam_mukatta_harf_sayisi}") print(f"👉 Toplam Mukatta Ebced Değeri: {toplam_mukatta_ebced}") print("\n" + "-"*30) if toplam_mukatta_ebced % 19 == 0 and toplam_mukatta_ebced > 0: print(f"🎯 MUKATTA EBCED TOPLAMI ({toplam_mukatta_ebced}) 19'un TAM katıdır!") else: print(f"❌ MUKATTA EBCED TOPLAMI ({toplam_mukatta_ebced}) 19'un katı değildir. (Kalan: {toplam_mukatta_ebced % 19})") if toplam_mukatta_harf_sayisi % 19 == 0 and toplam_mukatta_harf_sayisi > 0: print(f"🎯 TOPLAM MUKATTA HARF SAYISI ({toplam_mukatta_harf_sayisi}) 19'un TAM katıdır!") else: print(f"❌ TOPLAM MUKATTA HARF SAYISI ({toplam_mukatta_harf_sayisi}) 19'un katı değildir. (Kalan: {toplam_mukatta_harf_sayisi % 19})") print("="*60) print("--- KELİME VE HARF YAPISINA GÖRE 10 ADET DİNAMİK MATEMATİKSEL KONTROL ---") for baslik, sayi in maddeler.items(): print(f"\n🔹 {baslik}") sayi_str = str(sayi) gosterim = sayi_str if len(sayi_str) <= 65 else f"{sayi_str[:65]}... ({len(sayi_str)} basamaklı)" print(f"Oluşan Sayı: {gosterim}") if sayi > 0 and sayi % 19 == 0: print(f" 🎯 MUCİZE: 19'un TAM katıdır! (19 x {sayi // 19})") else: kalan = sayi % 19 if sayi > 0 else 0 print(f" ❌ DURUM: 19'un katı değildir. (Kalan: {kalan})") print("="*60) # ==================== KULLANICI GİRİŞ ALANI ==================== girilen_metin = input("Lütfen analiz etmek istediğiniz Arapça metni buraya yapıştırın: ") if girilen_metin.strip(): hurufi_mukattaa_ebced_hesapla(girilen_metin) else: print("Boş metin girdiniz.")
Output