İyi programcı aynı zamanda iyi bir problem çözücü olmalıdır. Analitik düşünebilmelidir. Gerçek hayat problemlerini bilgisayar ortamına aktarıp çözebilmelidir. Bazı insanlarda algoritmik düşünme doğuştan gelen bir yetenekken bazı insanlar da ise ne yazık ki bu özellik ayrıca bir yetenek olarak bulunmuyor. Fakat bu durum böyle kalmak zorunda değil. Her alanda olduğu gibi bunun üzerine gidersek, çalışırsak, ekstra gayret sarf edersek istediğimizi elde etmek için hiç bir sebep yok.
Evet, ilk paragrafla başlğın hiç bir alakası yok :). Fakat birazdan bağlayacağım.

Project Euler, içerisinde tam 882 adet problem sorusu olan bir web sitesi. Burdaki soruların bazılarını 1 milyona yakın kişi çözebilmişken bazılarında ise bu sayı 100’lere kadar düşüyor. Yani soruların zorluk dereceleri değişkenlik gösteriyor. Buradaki problemleri sadece kağıt kalemle çözebileceğimiz gibi bizim tercih edeceğimiz yöntem olan bir programlama dili kullanarak da çözebiliriz. Ve programlama dili seçimi tamamen bize kalmış. Tabi ki programlamaya geçmeden önce çözüm yöntemini kafamızda belirlemeliyiz. Paldır küldür kod yazmaya girişmemeliyiz. Yoksa bizim vasat yazılımcılardan ne farkımız kalır?
Bu problemleri üzerinde düşünmek, uğraşmak, algoritma becerilerimizi geliştirecek, farklı perspektiflerden problemlere yaklaşmamızı sağlayacaktır. Elbette problemleri bu web sitesi üzerinden çözmek zorunda değiliz. Herhangi bir yerde gördüğümüz, duyduğumuz veya kendimizin ürettiği bir problemi de çözebiliriz. Ve hatta çözmeliyiz, tek kaynakla yetinmemeliyiz. Ben ise bu bir yazı serisi olacağı için sadece Project Eulor’daki problemleri ele alacağım. Programlama dili olarak da çoğunlukla C‘yi tercih edeceğim.
Biliyorsunuz ki bir problemin tek bir çözümü olmayabillir. Farklı çözümler görmek isteyebilirsiniz. Çözdüğünüz veya çözemediğiniz soruların cevaplarını görebileceğiniz bir kaynak hazırlayama çalışacağım. Tabi ki tüm soruları çözebilecek miyiz, zaman gösterecek.
Yazı serisine buradan ulaşabilirsiniz: https://www.keremmert.app/category/project-euler/