SonsuzUs Programlama

SonsuzUs programlama sitemiz SonsuzUs Github üzerinden yayın yapmaktadır. Sitemizde python, c, c++ gibi popüler dillerin yanı sıra hiç bilinmeyen diller de vardır. Geneli algoritma ve programlama teknikleri olan sitemizde örneğin python karışık listeleri tek düz liste yapma gibi teknik konular da içermektedir.

Ayrıca github hesabına sahipseniz her yazı ile etkileşim içinde olabilir ve yorum yazabilirsiniz.

52 Kartlık Deste Soruları

1-52 arası numaraların olduğu bir deste kart var. Deste rastgele karıştırılıyor. Sonra birinci kart açılıyor. İlk açılan kart icin 1 puan her zaman alınıyor. Ondan sonra her açılan kartın numarası o ana kadar açılan en yüksek numaradan fazla ise 1 puan, değilse 0 puan alınıyor. Bu oyun oynanırsa oyundan alınması beklenen puan ne kadardır?

52 adet kart 1 den 52 ye kadar numaralandırılıp güzelce karıştırılıyor. Rastgele 3 kart çekiliyor ve masaya soldan sağa açılıyor. Masada açılan kartların küçükten büyüğe sıralanma olasılığı nedir? (Örneğin 8, 27, 36)

Python programlama ile para sorusu

Sorumuz şu: Bir adam elindeki çeki bozdurmak için bankaya gitti. Fakat veznedar bir yanlışlık yaptı ve çekin üzerinde yazılı liralar yerine kuruş ve kuruşlar yerine de lira vererek çeki ödedi. Adam da dikkat etmeden paraları cebine koydu. Eve giderken paranın 5 kuruşunu düşürdü. Bu vesile ile parasını saydı ve cebinde çekin değerinin tam iki katı parası olduğunun farkına vardı. Çekin üzerinde yazılı olan miktar ne kadardı? *

Programımız oldukça basit, lira ve kuruşu 100 lük döngülere sokuyoruz ve formülü deniyoruz.

for lira in range(100):
    for kurus in range(100):
        if lira + kurus / 100 == 0:  continue
        if (kurus + (lira - 5) / 100) / (lira + kurus / 100) == 2:
            print(f"Çekin üzerinde yazan miktar: {lira}.{kurus}")
            break

continue kullanmamızın sebebi sıfıra bölünme hatasından kaçmak içindir.

Bir diğer çözüm de şu olabilir

for lira in  range(0,55):
    for kurus in range(lira+5,105):
            if 2*(float(lira)+float(kurus)/100)==float(kurus)+float(lira-5)/100:
                print(str(lira)+"."+str(kurus)+"₺")

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)

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)