import re
import itertools
# =====================================================================
# 1. METİN TEMİZLEME VE STANDARDİZASYON SİSTEMİ
# =====================================================================
def harfi_standardize_et(metin):
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'[a-zA-Z]', '', temiz)
donusum = {
'آ': 'ا', 'أ': 'ا', 'إ': 'ا',
'ى': 'ي',
'ؤ': 'و', 'ئ': 'ي',
'ة': 'ه'
}
temiz = "".join([donusum.get(harf, harf) for harf in temiz])
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
}
IZIN_VERILEN_14_HARF = {'د', 'ذ', 'ر', 'ز', 'س', 'ش', 'ص', 'ض', 'ط', 'ظ', 'ع', 'غ', 'ف', 'ق'}
GERCEK_MUKATTA_HARFLERI = {'ا', 'ح', 'ر', 'س', 'ص', 'ط', 'ع', 'ق', 'ك', 'ل', 'م', 'ن', 'ه', 'ي'}
def guvenli_mod_hesapla(sayi_str, mod_degeri):
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)
# =====================================================================
# 📋 KELİME GİRİŞ HAVUZU
# =====================================================================
KELIME_1 = "بسم"
KELIME_2 = "الله"
KELIME_3 = "الرحمن"
KELIME_4 = "الرحيم"
KELIME_5 = "بلى, بل"
KELIME_6 = "قادرون, قادر, قادران, القادر, بقادر, قديرين, قدير, قدرين, قدور, قادرين"
KELIME_7 = "على"
KELIME_8 = "ان"
KELIME_9 = "يسوي, نسويه, نُسَوِّيَ, نسويهم"
KELIME_10 = "بالبنانات, بَنَانَهُ, بالبنانة, بالبنان, البنانة, ببنائه, ببنانها, ببنانيه, بالْبنائه"
KELIME_11 = "بلى, بل"
KELIME_12 = "يريد, يُرِيدُونَ, أُرِيدُ"
KELIME_13 = "انسان, الانسان, الناس"
KELIME_14 = "ليطغى, لتفجر, يفجر, تفجر, فجورا"
KELIME_15 = "أمام, امامه, امام, خلفه"
KELIME_16 = "يسألون, يسأل, تسألون, يسيل, يسعل"
KELIME_17 = "اين, ايان, أينما, متى"
KELIME_18 = "الْيوم"
KELIME_19 = "القيامة"
GIRIS_LISTESI = [
KELIME_1, KELIME_2, KELIME_3, KELIME_4, KELIME_5, KELIME_6, KELIME_7, KELIME_8, KELIME_9, KELIME_10,
KELIME_11, KELIME_12, KELIME_13, KELIME_14, KELIME_15, KELIME_16, KELIME_17, KELIME_18, KELIME_19
]
if __name__ == '__main__':
PRE_KELIME_HAVUZU = []
for sira in GIRIS_LISTESI:
if not sira.strip(): continue
alternatifler = [alt.strip() for alt in sira.split(',') if alt.strip()]
sira_elemanlari = []
for alt in alternatifler:
temiz_alt = alt.replace(',', ' ')
alt_kelimeler = [k for k in temiz_alt.split() if k]
std_kelimeler = [harfi_standardize_et(k) for k in alt_kelimeler if harfi_standardize_et(k)]
h_sayisi = sum(len(k) for k in std_kelimeler)
sira_elemanlari.append({
'orjinal': alt,
'std_kelimeler': std_kelimeler,
'harf_sayisi': h_sayisi
})
if sira_elemanlari:
PRE_KELIME_HAVUZU.append(sira_elemanlari)
print("="*75)
print(" ARAPÇA METİN SIRALI KOMBİNASYON ANALİZ PANELİ ")
print("="*75)
toplam_kombinasyon_sayisi = 1
for h in PRE_KELIME_HAVUZU:
toplam_kombinasyon_sayisi *= len(h)
print(f"Aktif İşlenen Kelime Sırası Sayısı: {len(PRE_KELIME_HAVUZU)}")
print(f"Toplam Test Edilecek Benzersiz Kombinasyon: {toplam_kombinasyon_sayisi}")
print("Tarama başlatıldı...\n")
basarili_sonuc_sayisi = 0
taranan_sayac = 0
for komb in itertools.product(*PRE_KELIME_HAVUZU):
taranan_sayac += 1
# Sadece her 500.000 adımda bir özet geçerek sistemi yormuyoruz
if taranan_sayac % 500000 == 0:
print(f"> İlerleme durumu: {taranan_sayac:,} / {toplam_kombinasyon_sayisi:,} kombinasyon elendi...")
toplam_saf_harf_sayisi = sum(k['harf_sayisi'] for k in komb)
if toplam_saf_harf_sayisi != 80:
continue
standardize_kelimeler = []
for k in komb:
standardize_kelimeler.extend(k['std_kelimeler'])
kalan_alfabe_list = []
kalan_ebced_list = []
mukatta_ebced_toplami = 0
mukatta_harf_sayisi = 0
for kelime in standardize_kelimeler:
for harf in kelime:
if harf in STANDART_ALFABE:
if harf not in IZIN_VERILEN_14_HARF:
kalan_alfabe_list.append(str(STANDART_ALFABE[harf]))
kalan_ebced_list.append(str(EBCED_ALFABE[harf]))
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)
s19_str, s19_kalan, s19_onay = kontrol_19_sistemi(standardize_kelimeler, "standart")
if not s19_onay: continue
e19_str, e19_kalan, e19_onay = kontrol_19_sistemi(standardize_kelimeler, "ebced")
if not e19_onay: continue
if not kalan_alfabe_str: continue
if guvenli_mod_hesapla(kalan_alfabe_str, 7) != 0: continue
if not kalan_ebced_str: continue
if guvenli_mod_hesapla(kalan_ebced_str, 7) != 0: continue
if mukatta_harf_sayisi == 0 or (mukatta_ebced_toplami % 19 != 0): continue
basarili_sonuc_sayisi += 1
ana_metin = " ".join(k['orjinal'] for k in komb)
print("\n" + "*" * 70)
print(f"🎯 [MUCİZE EŞLEŞME #{basarili_sonuc_sayisi}]")
print(f" Metin : {ana_metin}")
print(f" Harf Sayısı : {toplam_saf_harf_sayisi} (✅ TAM 80)")
print(f" Standart 19 : {s19_str} (✅ Kalan: 0)")
print(f" Ebced 19 : {e19_str} (✅ Kalan: 0)")
print(f" Alfabe Mod 7 : {kalan_alfabe_str} (✅ Kalan: 0)")
print(f" Ebced Mod 7 : {kalan_ebced_str} (✅ Kalan: 0)")
print(f" Mukatta Ebced: {mukatta_ebced_toplami} (✅ Kalan: 0, Harf: {mukatta_harf_sayisi})")
print("*" * 70 + "\n")
print("="*75)
if basarili_sonuc_sayisi > 0:
print(f"Tarama Tamamlandı. Toplam {basarili_sonuc_sayisi} adet tam eşleşen kombinasyon bulundu.")
else:
print("Tarama Bitti: Havuzdaki mevcut kelime kombinasyonlarından bu 6 katı kuralın TÜMÜNÜ birden karşılayan bir dizilim çıkmadı.")
print("="*75)