Bulmaca

Program dökümü: BULMACA

Bu program çeşitli dergilerde yayınlanan kelime veya sayı doldurma bulmacalarını çözmek için yapılmıştır.

Sanırım bunları daha önce görmüşsünüzdür. Küçük bir örnek vereyim:

Burada yapılması istenen karışık şekildeki kelimeleri bu kutulara yerleştirmeniz.

Bu sene okulumuzda düzenlenen bilgisayar programlama yarışmasında buna benzer bir soru sorulmuştu. Bunda sadece belirli bir tip sözkonusuydu. Bu program için uğraşırken bunu genelleştirebileceğimi farkederek bu programı yaptım.

Program aslında yaptığı işe göre kısa sayılır ve eğer veriler doğru verilmişse uygun cevabı bulur.

Programın dergilerde yayınlanan bulmacalara bir üstünlüğü var. O da boş kutulara daha önce hiçbir kelimenin yazılmış olmasını istememesi. Özellikle bu bulmacalarda bir kelime yerine daha önce yerleştirilmiş oluyor.

Gelelim programın kullanılmasına. Program kasette veya diskette saklanabilir. Normal yükleme işlemleri yapılır.

Program çalıştığında size çözmek istediğiniz bulmacanın verilerini data'lara yazıp yazmadığınızı sorar. Data'lar listenin sonundadır.

Bir bulmacayı çözebilmek için programa 4 tip veri verilmesi gerekiyor.

Yapmanız gereken ilk şey o bulmacaya kaç tane kelime yazılması gerektiğini saymak ve bunları her birine 1'den başlayarak birer birer numaralamak.

Bunu yaparken yan yana olan yatay kutu dizilerini ve alt alta olan dikey kutu dizilerini saymalısınız.

Daha sonra her kelimenin kaç harf uzunlukta olması gerektiğini saymalı ve bunları her satıra 1.'den başlayarak sırayla "," ile ayırarak yazmalısınız.

Buraya kadar yapılması gerekenlere kısa bir örnek:

Şimdi saptanması gereken şey, işin en önemli kısmını oluşturuyor. Ben buna "akrabalık ilişkileri" diyorum.

Şekile baktığınızda 1. kelime olması gereken 10 harfli kelimenin 1. harfi, 2. kelime olması gereken 5 harfli kelimenin 1. harfi oluyor.

İşte bu durum bir çakışma (akrabalık)tır ve data'larda şu şekilde gösterilir:

Başka bir örnek:

Yeni ilk iki rakam akraba olan kelimeleri, diğer ikisi koordinatları gösteriyor.

Bu bulmacadaki tüm akrabalıklar: 1,2,1,1, 1,3,4,1, 1,4,6,1, -1 Sondaki 1'i sakın unutmayın, bu akrabalıkların sona erdiğini bildiriyor.

Son aşamada ise data'lara bulmacanın kelimeleri yazılıyor ve en sona da bir "SON" kelimesi ekleniyor. Bunları da LIST'de görelim:

Şimdi programı çalıştırın ve ekranda gözüken verilerle sizinkileri karşılaştırın.

Programın çalışması hakkında kısa bir fikir vereyim: Çalışırken göreceğiniz gibi program kelime uzunluklarından faydalanarak verilen kelimeler arasında 1., 2., 3., vs. kelimelerin hangileri olabileceğini saptar ve diziler oluşturur. Bundan sonra verilen akrabalık ilişkilerinin hepsini sağlayan kelimeleri bu dizilerde arar.

Bu aşamada program size 1., 2., 3. vs. kelimelerin hangileri olduğunu söyler.

Bunlara daha önce belirlediğiniz yerlere yazdığınızda bulmacanız çözülmüş olacak.

Fakat program bu kadarla yetinmeyip bulmacanızı eğer sığarsa ekrana yazacaktır. Bunun için sizden bir satır sütun vermenizi ister. Eğer bu sırada bulmaca ekran dışına taşarsa "K" tuşuna basıp yeniden koordinat verebilirsiniz.

Programı ilk çalıştırdığınızda büyük ihtimalle hatalar yapmış olacağınızdan istediğiniz sonucu alamayabilirsiniz. Fakat önce küçük örneklerle programa alışmayı denerseniz büyük bulmacalarda başarılı olabilirsiniz.

Eğer program verilerde bir hata olduğunu söylerse büyük bir dikkatle her şeyi en baştan kontrol edin. Zafer sizin olacaktır.

Bol şanslar...

Bu yazıdaki programlar

Dergideki dökümlerden çıkarıldı; satırlar derginin kontrol toplamlarıyla doğrulandı ve programlar VICE emülatöründe denendi. Tarayıcıdaki C64'te çalıştırabilir, indirip bir emülatöre sürükleyip bırakabilir ya da gerçek bir C64'te LOAD "AD",8,1 ile yükleyebilirsiniz. "Sorun bulundu" yazanlarda bazı satırlar okunamadı ya da tutmadı; düzeltilmiş bir sürümünüz varsa contact@coze.org adresine gönderin.