Yanda görmekte olduğunuz piramit, 2007 ALES Bahar sınavı Sayısal 2 kitapçığı 18 – 21. sorunlarına eşlik eden tekil sayılar piramitidir. Sınavdayken biraz kasılarak çözdüğüm soruydu ancak düşününce LES – ALES sınavlarındaki algoritma sorularına güzel bir örnek olacağını düşünüp tekrar bir gözden geçireyim dedim. Neyse sınavda çözemediğim 6 tane daha benzer soru, yavaş yavaş el atarım zaman içerisinde. Tabi soruya başlamadan önce sorunun yayın hakkı ÖSYM ye aittir belirteyim. Piramidin altında şunlar yazmaktaydı;
İlk altı basamağı yukarıda verilen sayı piramidiyle ilgili aşağıdakiler bilinmektedir:
• Piramitteki sayıların tümü tek sayıdır.
• Sayılar, 1 den başlayarak sırayla, soldan sağa ve yukarıdan aşağıya doğru artmaktadır.
• Piramidin n. basamağında n tane sayı var-dır. Örneğin 3. basamağında üç tane sayı, 8. basamağında sekiz tane sayı vardır.
Ne yapacağım; b (basamak) ve s (sıra) olarak 2 parametresi olan ve sonuç olarak bize o basamak ve sıraya denk gelen sayıyı verecek fonksiyonu, daha sonra da bir sayı verdiğimizde onun hangi basamak hangi sırada olduğunu veren 2 adet fonksiyon algoritması yazacağım.
Şimdi; açıklamalardan sonuncusu sorunun çözüm metodunun başlangıcı aslında, şöyleki her basamakta (b) kadar sayı var ve bunlar tek sayılar. b sayısına kadar olan sayıların (b * (b + 1)) / 2 olduğuna göre b basamağının son rakamı [(b * (b+1)) /2] inci tek sayı 1 den başlayarak. Mesela resimdek, 41 6. basamağın son sayısı olduğuna göre; [(6 * (6+1))/2] = 21 => 1 den başlayarak sayılar içerisinde bulunan 21. tekil sayı. 21. tekil sayıyı bulmak içinse (t * 2) -1 kullanabiliriz. Çünkü tekil sayılarda 2 şer 2 şer büyürler sonuçta. Bu iki formülü birleştirirsek ([(b * (b+1)) /2] * 2) -1 biraz işlemle => b^2 + b -1 bulunuyor. Yeniden 6. basamağı denersek 36 + 6 -1 = 41 eder.
Sıra sonunu bulan formülü bulduk. Peki faydası ne olacak bunun bize, bakarsanız piramite her b basamağında son rakamdan (b-1) * 2 çıkartılınca satır başı rakamı elde ediliyor. Bunu formüle eklersek [b^2 + b -1] – [(b-1) * 2] buradan sonuç b2 – b +1 oluyor. (Bu sonuca b-1 inci basamağın son rakamına 2 ekleyerekte ulaşabilirdik)
Son bir adım kaldı: s parametresini dahil etmek. Bunun içinde başlangıç sayısına (s -1) * 2 eklersek bize sonucu verir. o zaman final fonksiyonumuz x=b^2 – b + (2 * s) – 1 olarak oluştu. Piramitten bir noktayı doğrulayalım. Mesela 6. basamağın 5. sırasındaki sayı kaçtır denirse => 36 – 6 + 10 -1 = 39 sonucunu buluruz.
Burada yazdığım fonksiyonun yazarken oluşturduğum çözüm yolum ya da algoritmam ise söyle oluyor o zaman: b basamağının son rakamını bul > b basamağının ilk rakamını bul > b basamağının ilk rakamından sonraki s sırasındaki rakamı bul.
Bu cevabı veren türlü türlü algoritmalarla çözüme ulaşılabilir tabi, sınavda soruya verilen sürenin tam bir dakika olduğunu düşünürseniz biraz hızlı düşünmek faydalı olacaktır tabi ki.

Post a Comment