Arkadaş sayılar, Python Programlama

İki sayı birbirinin kendisi hariç bölenleri toplamına eşitse bu sayılara arkadaş sayılar denir. (1 dahil)

En küçük arkadaş sayılar 220 ve 284 tür. Neden? Çünkü 220’nin bölenleri olan 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 ve 110 u topladığımızda 284 elde ederiz. 284’ün bölenlerini topladığımızda ise -evet, doğru tahmin ettiniz- 220 elde ederiz. İşte gerçek arkadaşlık.

Python programlama ile 10.000 e kadar olan arkadaş sayıları bulalım. (Bu sayıyı değiştirebilirsiniz.)

def bolenler(n):
  return sum([i for i in range(1,n//2+1) if n%i==0])

arkadas = dict()
for sayi in range(1,10000):
  bt = bolenler(sayi)
  if sayi==bolenler(bt) and sayi<bt:
    arkadas[sayi]=bt
print(arkadas)
Yorum Durumu: Yorum yok --- Kategori: Bilişim --- Etiketler: , , , ---

En küçük zengin tek sayı, Python programlama

Eğer bir sayının kendisi hariç tam bölenleri toplamı sayıdan büyükse o sayıya zengin sayı diyoruz. Örneğin 12 nin bölenleri 1,2,3,4,6 nın toplamı 16>12 olduğu için zengin sayıdır. En küçük tek zengin sayı nedir?

Basit bir programla bunu bulabiliriz,

def bolenler(n):
  return sum([i for i in range(1,n//2+1) if n%i==0])

sayi = 1
while sayi>bolenler(sayi):
  sayi+=2
print(sayi)
Yorum Durumu: Yorum yok --- Kategori: Bilişim, Zeka Soruları --- Etiketler: , , ---

Palindrom dizi, python programlama çözümü

Uzunluğu 2 veya daha büyük olan ve aynı zamanda tersten ve düzden yazılışları aynı olan karakter dizilerine palindrom denilmektedir. Örneğin “aaa”, “aba”, “cc” birer palindrom iken, “acaba”, “abc”, “a” birer palindrom değildir. Bir karakter dizisinin içerisinden ardışık olarak seçilen herhangi bir parçaya ardışık alt dizi denilmektedir. Örneğin “acaba” dizisi için “aca”, “ab” birer ardışık alt dizi iken, “cb”, “aaa” ardışık alt dizi değildir. 4 karakter uzunluğunda, ardışık alt dizilerinin hiçbiri palindrom olmayan kaç farklı karakter dizisi vardır? [Alfabede 29 karakter vardır]

Sorumuz bu. Elbette çözmek için başka yöntemler var ama estetik bir program parçasını da eklemek istedim.

sonuc = 0
for a in range(29):
    for b in range(29):
        for c in range(29):
            for d in range(29):
                if c != d and b != c and a != b and b != d and a != d:
                    sonuc += 1

print(sonuc)
Yorum Durumu: Yorum yok --- Kategori: Bilişim, Zeka Soruları --- Etiketler: , , ---

Python Programlama ile zeka soruları

Sorumuz şu: Okunuşunda ki harfleri birbirinden farklı en büyük üç haneli sayı nedir?

Elbette bu soruyu elle de çözmek mümkün ama epey deneme yanılma yapmak gerekir. Örneğin yüzbir, okunuşunda harfler farklı, yüzdört yine okunuşunda ki harfleri farklı daha büyük bir sayı.

Gelin bu sorumuzu pyhton ile çözdürelim.

def yaziyap(sayi):
    birler = ["","bir","iki","üç","dört","beş","altı","yedi","sekiz","dokuz"]
    onlar = ["","on","yirmi","otuz","kırk","elli","altmış","yetmiş","seksen","doksan"]
    sayi=str(sayi)
    if sayi[0]=="1":
        return "yüz"+onlar[int(sayi[1])] + birler[int(sayi[2])]
    else:
        return birler[int(sayi[0])]+"yüz" + onlar[int(sayi[1])] + birler[int(sayi[2])]

for n in reversed(range(999)):
    if len(yaziyap(n)) == len(set(yaziyap(n))):
        print(yaziyap(n))
        break

def kısmı bir fonksiyondur, gelen sayının okunuşunu döndürür geriye. Diğer önemli kısım ise gelen string bilginin işlenişidir. if kısmında yaptığımız gelen kelimenin harflerini sayıyoruz, bir de küme yapıp sayıyoruz. Kümelerin şöyle bir güzelliği var ki aynı elemandan birden fazla kabul etmiyor.

Yorum Durumu: Yorum yok --- Kategori: Bilişim, Zeka Soruları --- Etiketler: , , , , ---

Python Programlama Örnekleri

C/C++ , C#, PHP, Small Basic, Java, Delphi sonrasında Python programlama diline de merak saldım ve epey esnek, programcı dostu metotları ve yazım şekli ile iyi ki de öğrenmişim diyorum. Bir kaç dilden benzerlikler var hepsinin en iyi yönleri alınarak yapılmış gibi sanki. Ve özellikle yine meraklı olduğum zeka sorularını çözmekte çok daha iyi.

Bellek kullanımı ve hız konusunda C++ kadar hızlı olmasa da yazım kolaylığı ve daha kısa kodlar yazma konusunda oldukça iyi. Öncelikle girintili yazım kurallarına göre yapılandırıldığı için otomatik olarak okunurluğu ve geliştirilebilirliği arttırıyor, ekip çalışmasına yatkın hale geliyor. Metotlar konusunda ise oldukça zengin ve programcının ihtiyaç duyduğu metotların neredeyse hepsi mevcut.

Bu yazımda bir kaç zeka sorusunun çözümünü programlama ile yapacağım. Zamanla da yorumlara eklerim veya sizin sormak istediğiniz sorular olursa beraber çözmeye çalışırız.

Devamını oku
Yorum Durumu: Yorum yok --- Kategori: Bilişim --- Etiketler: , , , ---

Olasılık Rastlantı Problemi

Bilgisayarla olasılık sorularını çözmek için bildiğiniz gibi olay simule edilir ve çok sayıda tekrarlanır. İstenilen koşul sayılır, olay sayısına oranı olasılığı verir.

Fakat bazı problemler vardır ki çıkan sonuç ile olması gerektiğini düşündüğünüz değer farklıdır. Bugün öyle bir soru soracağım. Program kodunuzu ve sonuçlarını yorum olarak eklerseniz üstüne tartışabiliriz.

Soru şu: İki çocuklu bir ailede çocuklardan birisi Çarşamba günü doğduysa, diğerinin kız olma olasılığı nedir?

Yorum Durumu: 5 yorum --- Kategori: Kısa Devre, Zeka Soruları --- Etiketler: , , , , ---