Üzerinde birden onikiye kadar sayıları yazılı olduğu oniki tane kartımız var. Bu kartla Anaximander, Boethius, Confucius ve Diogenes arasında eşit olarak paylaştırılıyor, yani her biri üç tane kart alıyor. Sonra sırayla aralarında şöyle bir konuşma geçiyor.
Anaximander: Benim kartların birinde 8 var.
Beothius: Kartlarımın hepsinde asal sayılar var.
Confucius: Benim sayılarımın hiçbiri asal değil. Ayrıca üçünün de ortak bir asal çarpanı var.
Diogenes: O zaman her birinizin hangi kartlara sahip olduğunu biliyorum.
Herkes doğruyu söylemişse Anaximander’in kartlarında hangi sayılar vardır?
Çözüm
Anaximander’in kartlarından birinde 8 sayısı var.
Boethius’un kartlarında sadece asal sayılar varmış. Yani 2, 3, 5, 7, 11.
Confucius’un kartlarında da asal olmayan ve ortak bir asal çarpanı olan üç sayı varmış. Bunlar da 4, 6, 9, 10 ve 12 olabilir. 1’in asal çarpanı olmadığı için listede yok. 8 sayısı Anaximander’in kartlarında ve 2 sayısı da asal olduğundan Confucius’un kartlarında olamaz.
Bu bilgilere bakan Diogenes kimde hangi sayıların olduğunu bulabiliyor.
Şimdi bu bilgilere biraz daha bakalım. Boethius’un kartlarında üç tane asal olduğuna göre kalan iki asal Anaximander’de ve Diogenes’te olmalı, çünkü Confucius’ta hiç asal yok. Peki bu asalların dağılımı nasıl olmalı ki Diogenes kendi kartlarına baktığında kimde hangi sayıların olduğunu görebiliyor?
Dikkat edersek asallarla ilgili Boethius’tan başka bilgi veren yok. Yani eğer Anaximander’de asal sayı varsa, Diogenes hangi asal sayıların Boethius’ta hangi asal sayının veya asal sayıların Anaximander’de olduğunu bilemez. O zaman kalan iki asal sayı da Diogenes de olmalı. Bu şekilde Diogenes Boethius’un üç sayısını da bilebilir.
Şimdi kalan sayılara bakalım. 8 sayısı Anaximander’deydi. O zaman 1, 4, 6, 9, 10, 12 sayıları kaldı. 1 sayısı kimde olmalı?
1 sayısı eğer Diogenes’te olsa, o zaman Diogenes 4, 6, 9, 10 ve 12 sayılarının hangi üçünün Confucius’ta, hangi ikisinin de Anaximander’de olduğunu bulamaz. Olasılıklara bakalım:
Anaximander: 4, 10 Confucius: 6, 9, 12 (ortak asal çarpan 3)
Anaximander: 9, 12 Confucius: 4, 6, 10 (ortak asal çarpan 2)
ve daha başka dağılımlar da bulunabilir.
Demek ki 1 sayısı Diogenes’te olamaz. 1 sayısı Anaximander’de.
Artık dağıtmamız gereken beş sayı kaldı. 4, 6, 9, 10, 12. Bu sayıların biri Anaximander’de, üçü Confucius’ta, sonuncusu da Diogenes’te. Hangi dağılımda Diogenes herkesin sayılarını bilebilir?
Bunun için şöyle bir tablo yapayım:
| |
|
|
| Anaximander |
Confucius |
Diogenes |
| 10 ya da 9 |
(6, 9, 12) ya da (6, 10, 12) |
4 |
| 9 |
4, 10, 12 |
6 |
| 12, 6, 4 ya da 10 |
(4, 6, 10) ya da (4, 10, 12) ya da (6, 10, 12) ya da (4, 6, 12) |
9 |
| 4 ya da 9 |
(6, 9, 12) ya da ((4, 6, 12) |
10 |
| 9 |
(4, 6, 10) |
12 |
Bu tabloyu Diogenes sütunundan okumaya başlayalım. Eğer Diogenes’te 4, 9 ya da 10 sayılarından biri varsa kalan sayıların dağılımı birden fazla şekilde yapılabiliyor. Bu durumda Diogenes diğerlerinin sayılarını bilemez. Buna karşın Diogenes’in sayıları 6 ya da 12 ise kalan sayıların dağılımı tek şekilde yapılabiliyor. Bu dağılımların ikisinde de Anaximander 9 sayısına sahip oluyor.
Sonuçta Diogenes herkesin sayılarını biliyor ama biz problemi çözünce Diogenes’in hiçbir sayısını bilemiyoruz. Elindeki sayıları bilebileceğimiz tek kişi de Anaximander ve soruda da onun sayıları sorulmuş. 1, 8, 9.
Anaximander de diğerlerinin sayılarını bilemez, ne asal sayıların ne de asal olmayan sayıların dağılımı hakkında bir bilgiye sahip değil.
Boethius kalan iki asal sayının Diogenes’te olduğunu bulabilir ama Diogenes’in son sayısını bulamaz.
Aynı şekilde Confucius da Diogenes’in asal olmayan sayısını bilir ama asalların nasıl dağıldığını bulamaz.
Bu oyun iki kişi arasında ve yanyana dizili 13 taşla oynanıyor. İki oyuncu da sırayla aşağıdaki hamlelerden birini yapıyor:
- Herhangi bir taşı almak.
- Aralarında boşluk olmayacak şekilde duran iki taşı almak.
Bir ya da iki taş alındıktan sonra kalan taşlar birbirlerine yaklaştırılmayacak, yani aralarda boşluklar oluşabilecek.
Son taşı ya da taşları alan oyunu kazanır.
Oyunu kazanmak için bir strateji bulun.
Üç mantıkçı yanyana hücrelerde idam vaktini bekliyorlar. Bu sırada kral bunlara bir şans daha vermek için baş danışmanını gönderiyor ve danışman her bir hücreye en az bir en fazla da dokuz tane olacak şekilde farklı sayıda elma bırakıyor. Mantıkçılar sadece kendi hücrelerindeki elmaları görebiliyor, diğer hücrelerde yine aynı kurala göre elmalar bırakıldığını biliyorlar ama sayılarını bilmiyorlar. Sırayla her biri danışmana cevabı evet ya da hayır olan bir soru sorabilecek. Danışman da bu soruyu doğru cevaplayacak. Herkes soruları ve cevapları duyabilecek. Eğer bu sorular sonunda mantıkçılardan biri üç hücredeki toplam elma sayısını söyleyebilirse hepsi serbest kalacak.
1. Mantıkçı: Toplam elma sayısı çift sayı mı?
Danışman: Hayır.
2. Mantıkçı: Toplam elma sayısı bir asal sayı mı?
Danışman: Hayır.
Üçüncü mantıkçının hücresinde beş elma var. Acaba hangi soruyu sormalı ki kurtulabilsinler?
Verilen iki string s ve t için, t’nin s’nin bir anagramı ise true değeri döndürür değilse false değeri döndürün.
Bir anagram genellikle tüm orjinal harfleri yalnızda bir kez kullanarak farklı bir kelime veya kelime grubunun harflerini yeniden düzenleyerek oluşturulan bir kelime veya ifadedir.
Örnek 1:
Girdi: s=”anagram”, t=”nagaram”
Çıktı: True
Örnek 2:
Girdi: s=”rat”, t=”car”
Çıktı: False
BSM (Bilgi Sentez Motoru) olarak bilgiyi alıp sentezleyen daha sonra da yine kullanıcılara sunan bir çeşit yapay zeka sohbet botudur. Şimdilik sadece telegram üzerinden yayın yapmaktadır. Zamanla başka kanallarda da yayın yapmaya başlayacaktır.
BSM geliştiricisi olabilir miyim?
Evet olabilirsiniz. Bunun için yapmanız gereken telegram üzerinden bsm i açarak sohbet etmeniz ve cevap veremediği noktalarda ona yardımcı olmanız. Yardımcı olmak için önce kendi sorduğunuz cümleyi sonra arasında üç nokta … ile onun cevap vermesini istediğiniz cümleyi yazarak bir sonraki adımda aynı soru sorulduğunda ona vereceği cevabı öğretmiş olacaksınız.
Geçen bölümde bir yandan Python’ın etkileşimli kabuğunu yakından tanıyıp bu
vesileyle bazı önemli fonksiyon ve araçları öğrenirken, öbür yandan bu
öğrendiklerimizi kullanarak örnek programlar yazdık. Gördüğünüz gibi, azıcık bir
bilgiyle dahi az çok işe yarar programlar yazmak mümkün olabiliyor. Daha yararlı
programlar yazabilmek için henüz öğrenmemiz gereken pek çok şey var. İşte bu
bölümde, ‘daha yararlı programlar yazmamızı’ sağlayacak çok önemli bir araçtan
söz edeceğiz. Öneminden dolayı ayrıntılı bir şekilde anlatacağımız bu aracın adı
Devamı...
Bilgisayar Programlaması, programlama dilleri kullanılarak, bilgisayar yazılımlarının oluşturulması
süreci olarak tanımlanır. Tıpkı bizim İngilizce’yi, İspanyolca’yı veya Fransızca’yı konuşup anlamamız
gibi, bilgisayarlar da belirli dillerde yazılmış programları anlayabilirler. Bunlar programlama dilleri
olarak adlandırılır. Başlangıçta, yalnızca birkaç tane programlama dili vardı ve bunların öğrenilmesi
ve kavranması oldukça kolaydı. Ancak, bilgisayarlar ve yazılımlar giderek sofistike hale geldikçe,
programlama dilleri de hızla gelişti ve daha karmaşık kavramları içerir hale geldi. Bunun sonucu olarak,
şu anda çoğu programlama dilinin ve kavramlarının kavranması yeni başlayan birisi için oldukça zorlayıcı
durumdadır. Bu da, insanların bilgisayar programlamasını öğrenme veya gerçekleştirmeye yönelik
girişimlerinde cesaretlerini kırmaya başladı.
Small Basic, programlamayı yeni başlayanlar için son derece kolay, anlaşılır ve eğlenceli hale getirmek
üzere tasarlanmış olan bir programlama dilidir. Small Basic’in amacı, engeli aşağıya çekmek ve şaşırtıcı
bilgisayar programlaması dünyasına bir atlama taşı olarak görev yapmaktır.
İlk Programımız
Artık Small Basic Ortamı ile tanıştığınıza göre, onu kullanarak programlama yapmaya başlayacağız.
Yukarıda söz ettiğimiz gibi, düzenleyici programlarımızı yazdığımız yerdir. Bunu yapmak için, önce
aşağıdaki satırı düzenleyiciye yazın.
Devamı...