Soru: Palindrom sayılar her iki yönden de aynı okunan sayılardır. İki basamaklı iki sayının çarpımıyla oluşturulabilen en büyük palindrom 91*99=9009’dur.
Üç basamaklı iki sayının çarpımı olarak yazılabilen en büyük palindromu bulunuz.
Bu soruda yapmamız gereken iki temel işlem var: Sayının palindrom olup olmadığını test etmek ve en büyük palindromu bulmak.
Palindrom Testi
Aslında sorunun amacı her ne kadar palindrom olup olmadığının testiyle uğraştırmaya çalışsa da bunu elimizdeki metotlar ile kolayca yapabiliyoruz. Fakat yine de mantığını anlamakta fayda var. Elimizdeki sayıyı önce metine çevirip, ardından karakterlere ayırmalıyız. Sonra bu karakterleri ters sırayla başka bir metin olarak kaydedip, ilk metin ile aynı olup olmadığını kontrol etmeliyiz. Bunu aşağıdaki kod parçacığı ile kolaylıkla yapabiliyoruz.
En Büyük Palindrom
Üç basamaklı iki sayının çarpımları arasından en büyük palindromu bulmak biraz yorucu bir işlem. 100 ile 999 arasından bir sayı seçip, yine 100 ile 999 arasından seçilen bir sayı ile çarpmamız gerekiyor. Yani 900*900=810000 seçenek demek. Her birini tek tek değerlendirirken de ayrıca işlem yapıyoruz. Bu durum fazlasıyla gereksiz işlem barındırıyor. Basit bir yaklaşımla en büyük palindromun 900’ün üzerindeki iki sayının çarpımı olarak ifade edilebileceğini düşünebiliriz. Böylelikle sadece 100*100=10000 seçenek kalır. Böyle bir varsayımda bulunarak 81 kat daha az işlem yapmış oluyoruz. Yani problemi çözme süremiz neredeyse yüzde birine iniyor.[snippet id=”271″]
Böylelikle sonuç: 913*993 = 906609 olarak bulunur.
Ögetay Kayalı