Tatil, gündelik işler falan derken sonunda tekrar şu Karele ile uğraşmaya başladım ve bitirdim.
Aslında bir önceki yazımda olayı biraz geliştirip arayüzle çalışmayı istediğimi belirtmiştim ama sanırım kareleri doldurdukça üzerinde çalışma isteğim giderek azaldı ne yazık ki. Fakat bu arayüz olayını başka bir proje için saklıyorum.
Script üzerinde birazcık değişiklikle bazı iyileştirmeler ve geliştirmeler yaptım.
Öncelikle programı 'class' yapısıyla yeniden düzenledim. Böylece değişiklik yaparken daha az zorlanırım diye düşündüm. Daha sonra kareyi tamamen oluşturana kadar uğraşsın dursun diye küçük bir döngü ekledim. Tabii merakıma yenik düştüm ve bilgisayarın bunu kaç denemede ve ne kadar sürede tamamladığını merak ettim ve bu istatistikleri de ekleyiverdim. Bir de sürekli screenshot yapmaktan bıktım, sonucu bulduğunda verileri dosyaya yazdırmasını söyledim. Kırmadı beni sağolsun.
Yukarıda 64'lük karenin çıktısı mevcut, hemen aşağıda da 49'luk karenin. Çok uzun bir deneme maratonundan sonra 100'lük karenin de sonucunu eklemek isterdim ama beklemekten yoruldum, olur da yazıyı okuyan ve denemek isteyen olursa o paylaşsın.
Verileri incelediğimizde sayı arttıkça süre ve deneme sayısının ciddi miktarda arttığını görüyoruz. Ayrıca birbirinden farklı birçok çözümün olduğunu ve hatta karenin simetrik bir yapı olmasından dolayı en az 4 adet farklı sonucun -aynı sonuçlar olduğunu iddia etmek de pek yanlış olmaz- olacağını söyleyebiliriz.
Bunların sonucunu bulunca kesin çözüm için bir algoritma geliştirmenin birazcık zaman kaybı olduğunu farkettim. Aslında sonuca ulaşınca hevesimi kaybettim demek daha doğru olur. Küçücük bir scriptin bana verdiği hayat dersine bakın. Yılmaz Erdoğan'ın "Ben senin beni sevebilme ihtimalini sevdim." demesi gibi ben de karenin doldurulma ihtimalini sevmişim. Bazı şeylerin olabilme ihtimalini, olma durumundan daha çok seviyoruz galiba.
Aşağıda scriptin github deposunu da koydum. Google Drive linklerini de ekledim. Sanırım bir maceranın sonuna da böylelikle geldim.
Github deposu: http://goo.gl/D7ljZM
Google Drive: http://goo.gl/KEILCP (DriveNotepad uygulamasını Drive'a eklemenizi tavsiye ederim.)
*************** EKLEME***************
*************** EKLEME***************
- 8*8'lik bir kare oluşturmak için 'Windows 8.1 Pro' işletim sisteminde, işlem sırasında CPU'nun %21'i sadece kendisi kullanırken saniye başına yaklaşık olarak 1987 adet işlem yapılmış. ( 677736 // 340.92 )
- Aynı boyutta kare için 'Linux Mint 17 Cinnamon' işletim sisteminde, işlem sırasında CPU gücünün (İntel i5-2500k 4 Çekirdek) bir çekirdeğinin %100'ünü kullanmış ve saniye başına 5110 adet işlem yapılmış. (5807743 // 1136.52)
Aradaki ciddi farkın nedenini araştırmak lazım.
Hiç yorum yok:
Yorum Gönder