Bu sayfadaki yazılar
Sayfanın metni
Sayfa 50
Sami Samimi atlas hazırlamaktadır. Atlasın bir sayfasında en fazla 10 ülke görülmektedir. Sami Samimi, Commodore'unu kullanarak bu ülkeleri renklerle ayırmak istemekte. Öyle ki komşu iki ülke ayrı renkte olmasın. Sami Samimi'nin matbaasında sadece 4 renk mevcut. Bu renkler kırmızı (K), sarı (S), yeşil (Y) ve mor (M). (Bunun geçen sayıda verilen psikotest renkleriyle hiçbir ilgisi yoktu.). Sizden istediğimiz bu programı Sami Samimi için hazırlamanız. Aşağıda size yol gösterecek birkaç ipucu veriyoruz: Ülkeleri 0'dan 9'a numaralandırıp komşuluk durumunu 9x9'luk bir matrise yerleştirin. Yandaki matrise göre 0 nolu ülke 2 ve 3 nolu ülkelerle komşu, 1 nolu ülke 3 ve 9 nolu ülkelerle komşu, 3 nolu ülke 0, 1, 2 ve 9 nolu ülkelerle komşu vb.
o İn
Xx
© o o
Bir harita aşağıdaki gibi olabilir. Yapacağınız programı yandaki harita ile test edin. Program doğru çalışacak olursa kendinizin hazırlayacağı birkaç kombinasyon ile deneyerek emin olduktan sonra programınızı yandaki harita için elde ettiğiniz sonuçla birlikte bize gönderin.
Bu yarışmamızı çözenler arasında yapacağımız çekilişte kazanan üç kişiye birer Basic kartuşu vereceğiz. 15 Ağustos tarihine kadar hiç yanıt gelmediği takdirde süreyi bir ay uzatacağız. Haydi klavye başına.
Cevapları
Sayın Commodore Dergisi Yetkilisi, Derginizin 5. sayısında yayınlanan yarışma sorusunu çözdüğüme inanıyorum. Soruda, “A noktasından B noktasına en kısa yoldan gitmek için X'in konumu ne olmalıdır?” deniliyor. Herhalde asıl sorulmak istenen “A'dan B'ye en kısa sürede nasıl gidilir?” Aksi takdirde elbette ki A ile B arasındaki en kısa yol düz bir çizgidir. Çözümü bulan iki ayrı program yazdım:
PROGRAM 1:
Yol Zaman = Hız olduğuna göre A'dan B'ye gitmek için her zaman X'in fonksiyonu olarak şu şekilde ifade edilebilir:
Zaman(X)- V 400? 4x2 x )? 5000
Bilindiği gibi bu fonksiyonun türevini alırsak ve sıfıra eşitlersek zaman minimum değeri için X'in olması gereken değeri buluruz. Ben de 1. programda bu yolu izledim. Programın başında zaman ve türev fonksiyonları tanımlandıktan sonra 10. satırdan itibaren türevi sıfıra eşitleyen X değeri aranıyor. Bu işlemler 0-400 m. aralığı içinde yapılıyor. Akıl yürütme ile X'in bu aralıkta bulunması gerektiği anlaşılır. Ayrıca türev fonksiyonu sınırlardan birinde negatif değerinde ise pozitiftir. Zorunlu olarak bu aralıkta bir köke sahip olacaktır. Basit bir mantıkla aralık devamlı 2'ye bölünmekte ve 0,001 değerinden daha küçük olunduğunda X değeri ve bu durumda harcanacak olan zaman dakika olarak yazdırılmakta. Burada X değeri X noktasının sol kenara olan uzaklığının metre cinsinden ifadesidir. Program çalıştığında X = 216,66 m. Zaman = 20,9389
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 51
PROGRAM 2:
Bu programı “türev almak mümkün değil” düşüncesiyle yazdım.
PRİNT 147)
1
Ancak hem kesinliği az, hem de harcadığı zaman fazla. Yapılan iş şöyle: 0-400 aralığı önce 2 m'lik adımlarla taranıyor. Zaman fonksiyonunda bir artış olduğu zaman son adım 0,2 m'lik adımlarla taramaya başlanıyor. Adımlar devamlı 1/10 oranında küçültülerek işlem tekrarlanıyor. Adım 0,0002 m. olduğunda işleme son veriliyor ve X değeri yazdırılıyor.
X-216,7 m.
Programı size ilişikte sunuyorum. Son olarak, bu yarışmaları hazırladığınız için size çok teşekkür ederim. Saygılarımla, Feza Buzluca
ADRES: Feza Buzluca KARTALTEPE PETROL SİT. BLOK 23-4 34730 BAKIRKÖY İSTANBUL
SONA
LL
Program minimum X değerini binary search (ikili araştırma) ile buluyor. B, alınan aralığın başlangıcı, S ise sonudur. X, bu aralığın tam orta noktasıdır. Değişkenlerin ilk değerleri aşağıdaki gibidir:
B = 0, S = 500, X = 250, 0 <= X <= 1000. X'in bir eksik değeri için Y1, bir fazla değeri için Y2 hesaplanır. Burada Y değerleri yolculuğu tamamlamak için gereken sürenin saat cinsinden 1000 katını tutar. (Çünkü hız km/saat'ten m/saat'e çevrilmemiştir, bölünmüş olacaktır ki, bu da kıyaslamayı etkilemez.)
OX bir önceki X değerini tutar. Eğer yeni hesaplanmış olan X değeri bir önceki değerine eşit oluyorsa bilgisayarın hassasiyet sınırına ulaştığından döngü biter ve en son X değerinde hesaplanarak print edilir. I iterasyon sayısını tutar ve kullanıcıya bir fikir vermek amacıyla print edilir. Program çalışmaya aşağıdaki basamaklarla devam eder:
pe o 500 41000 0X-0