Bir bulmaca
Geleceğin zehir programcılarından öğrencim Bade Özgüle bana bir matematiksel oyun gösterdi, programını nasıl yazabileceğini sordu. Matematik bulmacalarını hiç beceremem, ama sonunda işbirliğiyle hallettik.
Karşınızdaki kafasından 1 ile 31 arasında bir sayı tutsun. Sonra kartları gösterin ve tuttuğu sayının hangi kartlarda mevcut olduğunu göstermesini isteyin. Tutulan sayı, seçilen kartlardaki en küçük sayıların toplamıdır. Sözgelişi, birinci, üçüncü, ve dördüncü kartları gösterdiyse, tutulan sayı 1+4+8=13’dür.
Yöntem nasıl çalışıyor? Kartları üretirken, hangi kartın üzerinde hangi sayıların bulunacağına nasıl karar veriyoruz? 31’e kadar değil, daha yüksek bir sayıya kadar çıkmak istesek kaç kart kullanmamız gerekir? Bu kartları üretecek bir program nasıl yazarız?
Cevabı haftaya. İpucu: İkili tabanda düşünün.
Ek: Çözümü aşağıya yorum olarak ekledim.