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)
# Kelime içine sızabilecek yabancı/latin harfleri tamamen ayıklar
temiz = re.sub(r'[a-zA-Z]', '', 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 buyuk_sayi_7_kontrol_paneli(ham_metin):
# Standart Arapça Alfabesi 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
}
# 7 Mukatta Harfinin Geleneksel Ebced Değerleri
ebced_alfabe = {
'ا': 1, 'ح': 8, 'ر': 200, 'س': 60, 'ط': 9, 'ل': 30, 'م': 40
}
# 7 Hedef Harf Filtresi
hedef_harfler = {'ا', 'ح', 'ر', 'س', 'ط', 'ل', 'م'}
# Tüm metni önce kelimelere ayırıp, temizleyip tek parça temiz harf akışı yapıyoruz
kelimeler = ham_metin.split()
temiz_harf_listesi = []
for k in kelimeler:
temiz_kelime = harfi_standardize_et(k)
for harf in temiz_kelime:
if harf in hedef_harfler:
temiz_harf_listesi.append(harf)
if not temiz_harf_listesi:
print("[HATA] Girilen metinde bu 7 harften hiçbiri bulunamadı!")
return
# 1. ANALİZ: Standart Alfabe Sırasına Göre Yan Yana Dizim
standart_sayi_str = "".join([str(standart_alfabe[h]) for h in temiz_harf_listesi])
standart_buyuk_sayi = int(standart_sayi_str)
std_kalan = standart_buyuk_sayi % 7
std_onay = "TAM BÖLÜNÜR ✅ (Mod 7 = 0)" if std_kalan == 0 else f"Bölünmez ❌ (Kalan: {std_kalan})"
# 2. ANALİZ: Ebced Değerlerine Göre Yan Yana Dizim
ebced_sayi_str = "".join([str(ebced_alfabe[h]) for h in temiz_harf_listesi])
ebced_buyuk_sayi = int(ebced_sayi_str)
ebc_kalan = ebced_buyuk_sayi % 7
ebc_onay = "TAM BÖLÜNÜR ✅ (Mod 7 = 0)" if ebc_kalan == 0 else f"Bölünmez ❌ (Kalan: {ebc_kalan})"
# RAPORLAMA EKRANI
print("\n" + "="*80)
print("📈 METİN BÜTÜNSEL MUKATTA MÜHÜR RAPORU (7 HARF AKIŞI)")
print("="*80)
print(f"Süzülen Harf Sayısı : {len(temiz_harf_listesi)} adet")
print(f"Metindeki Harf Akışı : {', '.join(temiz_harf_listesi)}")
print("-"*80)
print(f"➡️ 1. STANDART ALFABE BÜYÜK SAYI ANALİZİ:")
print(f" Oluşan Devasa Sayı ({len(standart_sayi_str)} Basamaklı):")
print(f" {standart_sayi_str}")
print(f" 7'ye Bölünme Durumu : {std_onay}")
print("-"*80)
print(f"➡️ 2. EBCED DEĞERLERİ BÜYÜK SAYI ANALİZİ:")
print(f" Oluşan Devasa Sayı ({len(ebced_sayi_str)} Basamaklı):")
print(f" {ebced_sayi_str}")
print(f" 7'ye Bölünme Durumu : {ebc_onay}")
print("="*80 + "\n")
# ---- INTERAKTİF PANEL ÇALIŞTIRMA ----
print("="*75)
print(" 7 MUKATTA HARFİ BÜYÜK SAYI (MOD 7) TEST PANELİ ")
print("="*75)
while True:
print("Lü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:
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] Boş veri girdiniz.\n")
continue
buyuk_sayi_7_kontrol_paneli(ana_metin)