Bilgi İşlemsel Düşünme, Kaprekar ve 6174

Bilgi işlemsel düşünme genel olarak bilgisayar bilimlerinden yararlanılarak problem çözebilme ya da bir sistematiği kodlar aracılığı ile açıklamak olarak tanımlanmıştır. ISTE (International Society for Technology in Education) ve CSTA (Computer Science Teacher Association) bile aslında bilgi işlemsel düşünmeyi bir bakıma problem çözmenin bir biçimi olarak tanımlarken, problem çözmeyi toplam altı basamakta vermişlerdir. Bu basamaklardan birisi de en başta verdiğimiz bilgi işlemsel düşünmenin tanımı ile örtüşmektedir.

Bilgi işlemsel düşünce biçiminin öğrencilere kazandırılacağı ilk disiplin kodlama olsa bile sadece kodlama öğrenmek öğrencilerin sadece belli komutları ezberlemesinden öteye geçemeyecektir. Öğrencilerin disiplinler arası bağ kurmaları ve geçmiş yaşantıları ve bilgilerini kullanmaları bilgi işlemsel düşünme biçiminin kazandırılmasında yani algoritma oluşturma becerisinin kazandırılmasında önemli bir yer tutmaktadır.

Bu yazımızda kodlama ve matematik (oldukça temel seviyede) disiplinleri arasında nasıl bir bağ kurulabileceğini bir problemin çözümünü ve analizini kodlar aracılığı ile yaparak göstereceğiz.

Her ne kadar benim kişisel keşfim Facebook üzerinde problemi görmemle başlamış olsa da aslında Kaprekar indirgemesi yöntemi 1949 yılında Dattathreya Ramchandra Kaprekar isimli Hintli matematikçi tarafından keşfedilmiştir. Öyle ki, seçilen herhangi bir dört basamaklı ve tüm basamakları aynı olmayan (yani 1111, 2222 gibi sayılar olmayacak) bir sayı için Kaprekar kuralı sonlu sayıda işlem uygulandığında her zaman 6174 sayısına ulaşılabileceğini iddia edilmektedir.

Muhtemelen Matematik Dünyası dergisinin oldukça eski bir sayısından alınmış olan sorunun aslı

Şekil 1. Muhtemelen Matematik Dünyası dergisinin oldukça eski bir sayısından alınmış olan sorunun aslı

Sorunun çözümünü aslında basamaklar halinde vereceğiz.

  • Soruda verilen tüm tanımları anlama.
  • Sorunun matematiksel analizini yapma (çoğu kere ispatını).
  • Matematiksel analizi genelleştirme.
  • Genelleştirmeyi bir algoritmaya dönüştürme.
  • Algoritmayı farklı girdiler için sınama.
  • Algoritmayı farklı sonuçlar için biçimlendirme.

Kaprekar kuralı aslında uygulaması oldukça basit bir kuraldır, alınan sayının basamaklarını oluşturan rakamlarla yazılabilecek en büyük ve en küçük sayıların farkları alınıyor ve aynı kural tekrar uygulanıyor. Örneğin sayımız içinde de olduğumuz 2017 olsun buna göre basamaklarımız:
7210 – 0127 = 7083
8730 – 0378 = 8352
8532 – 2358 = 6174
7641 – 1467 = 6174.

6174 sayına ulaşıldığı zaman sayı aynı kurallar altında tekrar kendine dönmektedir. Bu sebepten biz burada 6174 sayına “çekirdek” diyelim. Örneğin aynı algoritmayı 1789 sayına uyguladığımız da:
9871 – 1789 = 8082
8820 – 0288 = 8532
8532 – 2358 = 6174.

Bu sayıda da farklı bir noktaya ulaşmadık. Varılan nokta yine 6174. Şimdi neden sürekli olarak seçilen dört basamaklı sayılarda varılan noktanın aynı olduğunu araştıralım.

Varsayalım a,b,c,d birer doğal sayı olmak üzere aşağıdaki sıralama olsun. 9 ≥ a ≥ b ≥ c ≥ d ≥ 0

Buna göre bu sayılarla yazılabilecek en büyük (abcd) ve en küçük (dcba) sayılarını seçelim.

Eğer bu sayıların farkını alırsak abcd-dcba= ABCD olacaktır. Buna göre: 

ABCD=999a+90b-90c-999d olacaktır yani,       

D = 10 + d – a ( a > d bu nedenle onlar basamağından 10 aldık)
C = 10 + c – 1 – b = 9 + c – b ( b > c – 1)
B = b – 1 – c ( b > c)
A = a – d olur.

ABCD sayısı oluşturulan {abcd, dbca, cabd, …} kombinasyonlarından biri olmak zorundadır. Oluşan kombinasyonların sayısı ise 4!=24 dir. Bu kombinasyonlardan sadece birinin 9 ≥ a ≥ b ≥ c ≥ d ≥ 0’ı karşılayan tamsayı çözümleri olduğu görülür. Bu kombinasyon ABCD = bdac eşit olması durumundadır. Üstteki denklemde yerine yazılırsa:

c= 10 + d – a
a=  9 + c – b
d= b – 1 – c
b = a – d olur.

Buna göre denklem sistemleri düzenlenip çözülürse a = 7, b = 6, c = 4 ve d = 1. bulunur

Yani ABCD = 6174 olur

Aslında bu sayıları üzerine olan araştırmamızı bir yazılım dili aracılığı ile de destekleyebiliriz. Bu aşamada Python 3 (Anaconda) yazılım dilini ve IDLE olarak da Spyder kullanacağız. Aşağıdaki kod bloğunda belli aralıklar için, örneğin 1000-1200 arasındaki sayıların kaç yinelemede Kaprekar sayısına ulaştığını hesaplayan ve bu durumun grafiğini çizen bir Python kodu aşağıdaki gibi olacaktır.

Yukarıdaki tablodan da görüleceği üzere 1000-1200 arasındaki doğal sayılar için oluşan grafikten herhangi bir sayının en fazla 7 adımda Kaprekar sayısı olan 6174 sayısına ulaştığını görebiliyoruz. Farklı algoritmalar sizde yazabilirsiniz ancak dikkatli olun çünkü eğer 7 den fazla bir değer bulmanız halinde algoritmanız yanlış çalışıyor olacaktır.
Peki, oluşan bu sayılar, yineleme ve frekans açısından incelenseydi nasıl bir veri elde ederdik. Aslında aynı uzunlukta yineleme ile çekirdek sayıya yani Kaprekar sayısına ulaşan birden fazla sayıda sayı olabileceğini tahmin etmek güç değildir. Ama yukarıda verdiğimiz kod onu da hesaplayabilir bizim için.

İşin güzel tarafı ise bu hesaplamanın yalnızca 0.7 saniye gibi bir zaman almasıdır. Eğer aralığımızı 103-104 olarak alırsak yeni grafiğimiz ve tablomuz aşağıdaki gibi olacaktır.

Dört basamaklı sayılar için yaptık peki daha az ya da fazla basamak sayısına sahip sayılarda “çekirdek sayı” var mıdır? sorusu da bu aşamada sorulabilir. Cevabı hem evet, hem de hayır. Örneğin eğer sayılarımız iki basamaklı olsaydı, varsayalım 28 olsun:

82 – 28 = 54

54 – 45 = 9

90 – 09 = 81

81 – 18 = 63

63 – 36 = 27

72 – 27 = 45

54 – 45 = 9.

Bu durumda aslında tek bir çekirdek sayı olmadığını da görebiliriz. Aslında bu konu ile alakalı yazılmış ve bu yazı hazırlanırken kullanılan makaleleri inceleyerek daha geniş bilgi sahibi olabilirsiniz.

Son olarak Kaprekar hakkında ilginç bir bilgi vererek yazımızı sonlandıralım. Kaprekar; Hashad, Self Numbers ve son olarak Kaprekar Sabiti değerlerini sayılar teorisine kazandırmış olmasına rağmen kendisinin formal bir matematik eğitimi yoktu. Bir matematik öğretmeni ya da matematik çalışmaları yapan birisi de değildi. Sanırız o sadece sayılarla oynamayı seven oldukça zeki bir dünya vatandaşıydı.

Yazar: Fatih Kürşat Cansu

Lisans Eğitimini matematik üzerine yapan CANSU, yüksek lisanlarını Matematik (Symbolic Mathematics Applications With Python), Eğitim Bilimleri (The Study And Reserach Of Istanbul Bahçeşehir High School Of Science And Technology Based On The Criteria Of Effectıve Schooling) ve Matematik Öğretmenliği üzerine yapmıştır. Halen doktorasına Bahçeşehir Üniversitesi Bilgisayar Öğretim Teknolojileri bölümünde devam eden CANSU’nun yayınlanmış 3 kitabı (Diofant Denklem Sistemlerinin Elementer Çözümleri, Ulusal Bilgisayar Olimpiyatları Soru ve Çözümleri, Rus Matematik Olimpiyatları Soru ve Çözümleri) bulunmaktadır. TÜBİTAK Matematik ve Bilgisayar alanında proje danışmanlığı yapan CANSU halen Bahçeşehir Fen ve Teknoloji Lisesi ve Alman Kültür Eğitim Vakfı Okulları’nda Programlama ve Proje eğitimi vermektedir.

Kaynaklar

CSTA & ISTE, Computational Thinking in K–12 Education leadership toolkit. http://csta. acm.org/Curriculum/sub/CurrFiles/471.11CTLeadershiptToolkit-SP-vF.pdf, (2011)

Gardner, M. , “The Magic Numbers of Doctor Matrix”, Japanese version, Tokyo: Kinokuniya, (1978)

Kaprekar, D. R., “Another Solitaire Game”, Scripta Mathematica, vol 15, pp 244-245, (1949)

Lines, M. E., A number for your thoughts: facts and speculations about numbers…, Bristol: Hilger (1986)

Nishiyama, Y., Kurashi No Algorithm, Kyoto: Nakanishiya, (1993).

Wing, J. Computational Thinking. Communications of the ACM, 49(3), 33-35,(2006).

Matematiksel

 

Yazıyı Hazırlayan: Matematiksel

Bu yazı gönüllü yazarlarımız tarafından hazırlanmış veya sitemiz editörleri tarafından belirtilen kaynaktan aslına uygun kalınarak eklenmiştir.

Bunlara da Göz Atın

Sırt Çantası Problemi

Bilgisayar bilimlerinde optimizasyon algoritmalarıyla ilgilenmeye başladığınızda ilk karşınıza çıkacak olarak problemlerden biri olan sırt çantası …

2 Yorumlar

  1. B = b – 1 – c ( b > c)

    bu kısımda hata var. soruya göre b c’den büyük olmak zorunda değil, eşit olabilir. b c’ye eşit olursa B sayısı -1 çııkar. abcd sayısını kural gereği 1000 alabiliriz(neticde rakamlarının hepsi aynı değil).

    abcd sayısı için yazabileceğimiz en büyük sayı : 1000
    abcd sayısı için yazabileceğimiz en küçük sayı : 0001

    1000 – 0001 = 999

    999 – 999 = 0 çıkarır. önerme de çözüm de hatalı görünüyor.

  2. 4 basamaklı sayılar için 6174
    3 basamaklı sayılar için 495
    2 basamaklı sayılar için 9

    çıkıyor sürekli

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

ga('send', 'pageview');