Ne?
Liste olarak verilen herhangi iki sayiyi (mesela "1234"
ve "99"
) toplayan ("1333"
) ve carpan ("122166"
) kod. Bu islemleri yaparken Python’in aritmetik operatorlerini (*
, +
) belirli bir sabitten buyuk sayilarla kullanmamali. Hatta istersen bu operatorler yerine su fonksiyonlari kullanma zorunlulugu koyalim:
def topla(a, b):
assert 0 <= a <= 9
assert 0 <= b <= 9
return a + b
def carp(a, b):
assert 0 <= a <= 9
assert 0 <= b <= 9
return a * b
Girilen sayilarin uzunlugunu da 9 haneye limitlemis olduk, ama istersen listelerle ugrasan kodda bu kisitlamayi kaldirabilirsin. Onemli olan, sinirli islem kapasitesi olan bir dili kullanarak sinirsiz kapasitede islem yapabilmek.
Nasil?
Sen 17 haneli iki sayiyi toplayabiliyor musun? Nasil? Kagit kalem mi lazim? 2 GiB RAM versem?
Sadece 9’a kadar (hatta bazen 8, 7 :) olan carpimlari bildigin halde 5 haneli iki sayiyi nasil carpiyorsun?
Neden?
- Herkes tarafindan cok iyi bilinen (ilkokulda ogrenilen) bir algoritmayi koda dokmus oluyorsun.
- Bu herkese sen de dahil oldugun icin “ulan bu algoritma nasildi” diye arastirmana gerek yok.
- Yazdigin kodun yapmasi gerekenle senin eline kagit-kalem aldiginda yaptigin feci benzer seyler.
- Algoritmayi test etmesi kolay (yazdigin dil veya herhangi bir hesap makinesi yeter)
- Carpim tablosunu niye ezberledigimizi ogrenmis oluyorsun!
Ben buyuk sayilari toplamayi/carpmayi bilmiyorum?
Programcilikla isin ne? Git ilkokul matematigi ogren!*
*: Sonra geri gelebilirsin tabi, kimseyi dislamiyoruz.