Bilmece Sorduralım

Cenker Sisman tarafından tarihinde yayınlandı

Tanıdıklarınıza bu yazıyı önerin

CEYD-A’nın diğer rakiplerinden farklı kılan özelliği kendi sorularınıza cevap tanımlayabilmeniz. Bu tanımlama geliştirici olmayanlar için çok basit sabit bir içerik te olabilir, kapsamlı kod parçası da. Bu örnekte sıradışı bir komut tanımlayacağız. CEYD-A ya soruyu siz değil, CEYD-A size soracak. Bir bakıma o sizi değerlendirecek ve sözlü oyunlar oynamak mümkün olacak. Örnekte siz ona BANA BİLMECE SOR diyeceksiniz ve size rastgele bir bilmece bulup soracak eğer doğru cevaplarsanız size bravo diyecek, cevabı yanlış söylerseniz doğrusunu söyleyecek.  Hatta daha da ileri gidip doğru ve yanlışların sayısını da aklında tutması mümkün. Bu şekilde size bilmecelere verdiğiniz doğru cevap performansını da söyleyebilir. İşi daha kolay bir şekilde açıklayabilmem için bunu bir sonraki yazı da anlatacağım.

Yapacağımız işin mantığı şu: Bilmecelerin listelendiği yanında cevaplarının olduğu bir sayfa okuyacağız. Bu listede kaç adet bilmece var ise aralarından rastgele birini seçeceğiz ve o satırı okuyacağız. O satırdaki soru ve cevabı CEYD-A ya öğreteceğiz. CEYD-A size bu soruyu soracak ve sizden bir cevap bekleyecek. Eğer sizin söylediğiniz cevap onun öğrendiği cevap ile aynı ise size Bravo diyecek , değilse doğru cevabı size söyleyecek.

Şimdi adım adım neler yapmamız gerektiğine bakalım:
https://tr.wikisource.org/wiki/Kocaözü_bilmeceleri sayfasında aşağıdaki gibi 61 adet bilmece var.

 

Control-U tuşlarına bastığınızda bu sayfanın kaynak kodlarını göreceksiniz. Farkedileceği gibi her satır <li> tagleri içindedir. Ayrıca bilmece cevabı ( ) parantezler içindedir.

Önce data değişkenine sayfanın kodunu atalım .

Sonra, $ignore değişkenine <div> altındaki, <ul> altındaki, tüm <li> satırlarını atıyoruz. Bunu yapmamızın asıl amacı bu işlemde kaç satır var ise fetchtagsize değişkenine o sayının atılmasıdır. Yani fetchtagsize değişkeni 61 değerini alacaktır

 

CEYD-A 0-61 arasında rastgele bir sayı tutsun. $rand değişkenine bu tuttuğu sayıyı atasın.

Önce satırı :nth-child({!GET $rand!} kullanarak bulalım, sonra içindeki ( ) işaretleri regex işlemlerinde farklı amaçla kullanıldığı için satırdaki ( ve ) işaretlerini ; olarak değiştirelim.

Örnek olarak satırımız olan $satır değişkeni  Ben giderim o gider, yanımda tintin eder. (Gölge) ise, yerine Ben giderim o gider, yanımda tintin eder. ;Gölge; olarak atanacaktır.

Aşağıdaki RegEx ifadesi ; ile ayrılmış 2 grubu ifade eder satırın sonunda ayrıca ek bir ; işareti daha vardır. ; işaretinden önceki söz dizimi soru, ; işaretinden sonraki söz dizimi ise cevaptır.

O halde $soru ve $cevap değişkenleri şu şekilde gösterilecek:

RET inputbox <CEYD-A nın söyleyeceği cümle> komutu ile CEYD-A bize soru cümlesini okuyacak ve bizden cevap bekleyecek. $soylenen değişkeni bizim cevabımızı olarak atanacak.

Son olarak soylediğimiz ile doğru cevap kontrol edilecek, eğer aynı ise bize bravo diyecek, değil ise yanlış deyip cevabı söylecek.

En alt kısma da bilgi olarak kaç adet bilmece arasından sorunun sorulduğu bilgisi gösterilecek. <mute> arasında olduğu için sessiz olarak ekranda görünecek.

Komutumuzun CEVAP alanının son hali aşağıdaki gibidir. Buna benzeyen farklı  komut ve cevapları  http://ceyd-a.net/komutekle sayfasından girebilirsiniz.

 


Cenker Sisman

1971 yılında doğan Cenker Sisman, Saint-Joseph lisesini bitirdi. Yıldız Teknik Üniversitesi’nde Bilgisayar Mühendisliği ve İstanbul Teknik Üniversitesi’nde aynı bölümün yüksek lisans eğitimlerini tamamladı. Savaş Köse ile beraber yazdığı ‘Parallel Implementation of The Hough Transformation’ çalışması SCI’99/ISAS’99 da yayınlandı. Yazdığı uzaktan bilgisayar kontrol uygulaması ‘Panda Future Connection’ Bimeks 1998 En İyi Yazılım – Mansiyon ödülünü aldı. Diğer programları olan WinPerfect, CleanDisk, VideoCapture, FTPExplorer, CardReader ve Multi-Email Sender uygulamaları zaman zaman yurtdışındaki medyalarda yayınlandı ve çeşitli otoriteler tarafından ödüller aldı.

Bir Cevap Yazın

This site uses Akismet to reduce spam. Learn how your comment data is processed.