Temmuz 2017 Tübitak Kriptoloji Sorusu-Kelime Sıralama C#

Herkese merhabalar, bu yazımda Temmuz 2017 ‘de sorulmuş Tübitak Kriptoloji sorusunun biraz programlamaya uyarlayarak nasıl çözüleceğinden bahsedeceğim. Bu linke tıklayarak 2.soruya bakabilirsiniz.

Soruda şu söylenmektedir.Aşağıdaki terimler yukarıdan aşağıya belli bir kurala göre sıralanmışlardır. Buna göre “istatistik” terimi hangi satıra yazılmalıdır? Sorunun altında bir sürü kelime vardır. Bu kelimelerin sıralama mantığı aşağıdaki görselde olduğu gibidir.

Bu soruyu 2 farklı şekilde yapabiliriz. 1.si bütün alfabeyi tanımlayarak. 2.ise ASCI kodlarından yararlanarak. Türkçe karakterlerin ASCI kodları farklı yerlerde olduğundan dolayı sorumuzu şu şekilde değiştirerek bir çözüm arayalım. Girilen 10 tane kelimeyi aynı yukarıdaki çözüm mantığına göre sıralayalım.

Algoritma ?

Öncelikle bir yapı oluşturmamız gerekecek. Bu yapıda kelimeler ve ASCI değerleri olacak. Daha sonrasında ayrı bir fonksiyon oluşturacağız. Girilen kelimeleri yapının kelimeler bölümüne aktardıktan sonra kelimeleri de o fonksiyona göndererek ASCI kodlarını hesaplatacağız. ASCI kodlarını hesaplattıktan sonra bir fonksiyon daha oluşturacağız. Bu fonksiyonda ise sıralama yapacağız. Sıralamada dikkat etmemiz gereken husus ise şudur. Sıralama yapılırken geçici bir değişken tanımlanır. Ancak bizim 2 tane değişken tanımlamamız gerekecektir. Çünkü biri kelimeleri tutan string değişkeni, diğeri ise int türünü tutan ASCI değerleri olacaktır. Sıralamayı yaptıktan sonra struct ‘ın kelimeler bölümünü bir diziye aktararak fonksiyonda o diziyi return edeceğiz. Daha sonrasında ise o sıra o diziyi yazdırmaya geliyor.

Özellikle belirtmek isterim ki sorunun çözümünde alfabe sırası alınmıştır. Biz ASCI kodlarına göre hesaplama yapacağımızdan sıralama farklı çıkacaktır. Sıralama denenmiştir.

Öncelikle ASCI kodlarını hesaplayan fonksiyona bakalım;

Şimdi Struct yapısına bakalım.

Şimdi Sıralama kısmının olduğu fonksiyona bakalım;

Ana Fonksiyonumuz ise şu şekilde olacaktır;

Tüm kodlar;

Programımızı çalıştırıp şu kelimeleri deneyelim.

Yukarıda da söylediğim gibi sıralamanın farklı çıkması alfabe değerleri ile ASCI değerlerinin uyuşmamasından kaynaklanmaktadır. Aynı sıralama değerlerine göre çalışmak istiyorsanız yeni bir alfabe ve alfabe değerleri tanımlayıp işlemlerinizi ona göre yapabilirsiniz. Bir sonraki yazımda görüşmek dileğiyle esen kalın.

Facebook Sayfamizdan Bizleri Takip Edebilirsiniz
Ali Demirkaya

Balıkesir Üniversitesi Endüstri Mühendisliği Öğrencisiyim

http://alidemirkaya.net