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)