Bu dosya, 9x9 Sudoku bulmacasını Excel üzerinde çözen VBA kodlarını içerir. Bulmacanın rakamları sayfaya girilir, ÇÖZ düğmesine basıldığında çözüm aynı sayfada listelenir. Her satır, her sütun ve her 3x3 karede 1'den 9'a kadar rakamların birer kez yer alması kuralı kod içinde uygulanır.
Dosyanın içeriği
- SUDOKU: Bulmaca tablosu D2:L10 aralığındadır. Çözüm sonucu D14:L22 aralığına yazılır. Sayfada ÇÖZ düğmesi ve temizleme için ayrı bir düğme bulunur.
- adres: Gizli sayfadır; A1:A132 aralığında yardımcı veri tutar.
Makrolar
Dosya makro içerir, açarken makroları etkinleştirmeniz gerekir. VBA kodları açıktır ve incelenebilir. Kodda dosya silme veya dışarıya bağlantı gibi zararlı bir işlem yoktur.- CommandButton1_Click: ÇÖZ düğmesine bağlı ana makrodur. Önce D14:L22 aralığını temizler. Ardından boş hücreler için olası rakamları hesaplar ve tek olasılığı kalan hücreleri doldurur. Doldurulan hücreler renklendirilir.
- test: Bir hücre için aynı satırda, aynı sütunda ve aynı 3x3 karede bulunan rakamları 1-9 listesinden eler, kalan olasılıkları döndürür. Hiç olasılık kalmazsa çözümün hatalı olduğunu belirtir ve işlem yeniden başlar.
- test2: Satır, sütun ve 3x3 kareler içinde yalnızca tek hücrede geçerli olan rakamları bulur.
- Atis_Serbest: Mantıksal adımlarla çözüm bulunamazsa olasılığı birden fazla olan bir hücreye rastgele bir rakam atar ve çözüm denemesini sürdürür.
- CozumDogrumu: Satır, sütun ve 3x3 karelerin toplamının 45 olup olmadığını denetler. Doğruysa "Çözüldü..." iletisi gösterilir.
- Temizlik: Rastgele atış sırasında doldurulan, renk koduyla işaretli hücreleri temizler.
- CommandButton3_Click: Sayfadaki ikinci düğmeye bağlı makrodur.
- TestXXX: Module1 içindeki yardımcı bir fonksiyondur; hücrenin hangi 3x3 karede olduğunu belirler.
Nasıl kullanılır
- Dosyayı açın ve makroları etkinleştirin.
- SUDOKU sayfasında D2:L10 aralığına bulmacanın verilen rakamlarını girin.
- ÇÖZ düğmesine tıklayın.
- Çözüm D14:L22 aralığında listelenir; çözüm tamamlandığında bilgi iletisi görüntülenir.
- Yeni bir bulmaca için verilen rakamları değiştirip işlemi tekrarlayın.