Değişik sınavlar

Öğrenim hayatımda normal sınav kategorisine koyamayacağım sınavlar da oldu. Bu sınavlarda hep beklenmedik bir şey, yer yer çaresizlik olur. Bazen bu çaresizlikten bir şekilde çıkmanın yolları bulunur. Asıl sınav da budur zaten.

Bir haberleşme dersi sınavında yirmi tane kadar soru vardı. Kısa kısa sorular ama çoğunda istenen şeyin ne olduğunu bile anlayamamıştım. Sonraki derste hoca soruların nasıl çözüleceğini anlatmıştı. Çözümler neredeyse sorulardan daha kısaydı ama bir tanesinin çözümüne Heisenberg’in belirsizlik ilkesine göre diye başlayınca o dersi bırakmaya karar vermiştim.

Sınav sırasında hocayla değişik bir iletişimde olduğum sınavlar da benim için ilginç örneklerdir. Örneğin Hakan hocanın yaptığı sınavlar. Hakan hoca bölüme benden sonra katıldı ama benden önce profesör oldu. Ben mi? Dalga mı geçiyorsunuz, tabii ki olmadım. Sınavları hep aynı şekilde olurdu. Dört soru bir saat. Soruları dağıtır ve sınıftan çıkardı. Bir saat sonra gelir ve sınavın nasıl gittiğini sorardı. Biz de tabii ki kötü derdik. Genelde sadece iki soruyu yapabilirdik. Bunun üzerine peki biraz daha uğraşın der ve yine çıkardı. Bir saat daha uğraşırdık ama bir ilerleme olmazdı. Sonra yine gelir ve bu sefer bizi kantine kahve içmeye gönderirdi. Okulda bize yardım edebilecek kimsenin olmadığından o kadar emindi. Kantinde sırada beklerken herkesin aynı soruları yapabildiğini ve diğer sorular için de kimsenin bir fikrinin olmadığını öğrenirdik.

Çözümlerde de doğru ya da yanlış cevabı bulmaktan çok ne yaptığının farkında olmak önemliydi. Bir keresinde bir sistem tasarımı sorusunda hata oranını yüzde yetmiş hesaplayan bir çocuğu sınıfın ortasında “Bulduğun sonucun farkında mısın? Yazı tura atsan daha iyi bir sistem olurdu.” diye azarlamıştı. Bunun üzerinde bir başka sınavda bir soruyu yanlış çözdüğümden emin olduğumda ek olarak açıklama yazmıştım: “Hoca bu bulduğum sayıların doğru olamayacak kadar büyük olduğunun farkındayım, kesin bir yerde bir işlem hatası yaptım ama fonksiyonun şeklinden eminim. İşlemleri tekrar yapacak zamanım da yok böyle bırakıyorum.” O sorudan iyi bir puan almış olmalıyım, en azından sınıfın ortasında fırça yememiştim.

Bir başka sınavında basit bir integral sorusu vardı. İntegral bir çok insan için çok zor bir konu olsa da okuduğum bölüm için toplama çıkarma gibi en temel işlemlerden biriydi. Soru dediğim gibi kolaydı, tek sorun çok uzun sürüyordu. Yine dört soru vardı ve ilk saat biterken integralin daha yarısını bitirebilmiştim. Bir başka arkadaş da hocaya gidip bu integrali mathematica’da çözdürüp çözdüremeyeceğini sormuştu. Hoca da o zaman herkese izin vermem gerekir diyip kabul etmemişti. Ben de çözdüğüm kısmın altına “Hocam gördüğünüz gibi bu integrali nasıl çözeceğimi biliyorum sadece bu hızla cevabı bulmam bir saat daha sürecek, ben diğer sorulara geçiyorum” yazdım.

Bir başka sınav türü de take home dediğimiz sınavlardı. Sorular verildikten sonra bir hafta süremiz vardı. Yani beraber de yapabilirdik ama sorun şu ki soruların hepsi çok zordu. Kitapta o soruları çözecek teknikleri bir türlü bulamıyorduk. Bunun üzerine sınavı teslim süresi dolmadan birkaç gün önce bir de kütüphaneyi denemeye karar verdik. O zamanlarda google yoktu. İnternet vardı ama. Stackoverflow ya da benzeri siteler de yoktu. Kütüphanedeki bütün makaleleri araştırmaya başladık. Birimiz bilgisayarda olası makalelerin hangi ciltlerde olduğunu bulmaya çalışıyordu, bir diğerimiz raflarda alakalı ciltleri tek tek karıştırıyordu. Diğerleri de o zamana kadar bulduğumuz makaleleri çözmeye çalışıyordu. Sanırım birebir çözümlerin olduğu makaleler yoktu ama benzer şeyler bulabilmiştik. Oldukça güzel bir grup araştırması yapmış olduk ama keşke daha önce başlamış olsaydık.

Bu sınavlarla normal sınavlar arasında bazılarımız için küçük benim için büyük farklar vardı. Bence bu farklı sınavlarda hocalar sıradan olmayan şeyleri ölçmek istediklerini açıkça söylemeye çalışıyorlar. Ölçmek işin nispeten kolay kısmı ama, önemli olan öğrencilerin bu ölçülen özellikleri geliştirebilmelerine yardımcı olabilmek.

Hz. Sybylla

Sybylla bilinen kadın peygamberlerin sonuncusudur. Rivayete göre kendisine peygamberlik bildirilirken şöyle bir sahne gerçekleşmiştir:

Melek: Eyyy Sybylla

Sybylla: Sen de kimsin? Nereden geldin buraya. Kesin meleksindir şimdi. Başka kim gelir ki bu saatte?

Melek: Eeee, evet. Sana …

Sybylla: Peygamberlik getirdim de de şu tableti kafana geçireyim. Çekil kenara, ışığı engelliyorsun.

Melek: Aslında gerçekten de … eeee.

Sybylla: Eeee, meeee, yeter ama. Şimdi vahiy de getirmişsindir sen.

Melek: Tabii. Ehhhm. Şüphesiz ki o her şeyi …

Sybylla: … bilir ve gözetir. Onun haberi olmadan bir tardigrada bile …

Melek: Tardigrada?

Sybylla: Hem de en cahilini göndermiş ya. Hadi, hadi, işimden alıkoyma beni şimdi. Sonra gel.

Aynı rivayete göre melek bunun üzerine şaşkın ve sinirli bir şekilde göğe yükselmiş.

Hz Sybylla’ya daha sonra da vahiyler geldi ama hiçbir melek iki kereden fazla bu işi için görevlendirilmedi. Bazı peygamberlere gelen vahiylerden ve kendilerinin anlattığı bazı hikayelerden öğreniyoruz ki vahiyleri bildiren melekler Hz Sybylla’dan çok şikayetçiymiş. Hatta bir tanesi bizzat tanrıya “Yüce tanrım, hikmetinden sual olunmaz ama biz artık Sybylla’yı mı yoksa bizi mi sınıyorsun bilmiyoruz. Sybylla ne diyeceğimizi zaten biliyor. Vahiyleri boşuna götürüyoruz sanki.” Bunun üzerine tanrı da “Sybylla’ya vahiy götürmeye devam edeceksiniz ama her vahiyi başka bir melek götürecek. Gerisini anlamaya sizin bile gücünüz yetmez. Ama madem bu görev sizin için bu kadar zor oldu, bir daha başka bir kadın peygamber göndermeyeceğim.” demiş.

Hz Sybylla’nın ne kadar yaşadığı ve nasıl öldüğü bilinmiyor.

Sınavlar

Aslında sınavları sevmem. Boşuna stres bence. Ölçme yöntemi olarak da herkesin aynı sınavdan geçmesinin iyi bir yöntem olduğuna inanmıyorum. Öncelikle neyi ölçüyoruz? Ne kadar öğrenildiğini mi? Ne kadar ilerleme kaydedildiğini mi? O an ne kadar formda olunduğunu mu? İlerideki derslere ya da geleceğe hazır olunup olunmadığını mı? Öğrencilik hayatımın en azından büyük çoğunluğunda bunların cevabını hiç bilmedim. Buna rağmen genelde sınavlarda başarılı oldum.

Bugün bana göre pek iyi hazırlanmamış sınavlara bazı örnekler vermek istiyorum. İlginç bulduğum sınavları ve başka sınav maceralarımı daha sonraki yazılarımda anlatacağım.

İlk örneğimin teması belirsiz varsayımlar. Üniversitede temel fizik derslerinden birinin vizesinde ya da finalinde başıma geldi. Hayatımda ilk kez fizikten AA almayı bekliyordum ki bir puanımın kırıldığını gördüm. AA kaçmıştı. Kağıdımı görmek istedim. Baktım, gerçekten de soruyu doğru yapmıştım. Hocaya puanımı neden kırdığını sordum. Çözüme başlarken kullandığım eşitliği nereden çıkardığımı sordu. Bu konuyu işlerken (örnek çözerken değil, yani ana konunun bir parçasıydı, özel bir durum değil) derste ara kademelerden birinde bunu çıkardığımızı ve sonra bundan daha başka sonuçlar da ürettiğimizi anlattım. Hoca bunun üzerine ben oradan başlamanızı istemiyordum ama dedi. Ben de hiçbir uyarı olmadan bunu nasıl bilebiliriz ki diye sordum ama o bir puanı yine de kurtaramadım.

İkinci örneğimin teması ne sorduğunu bilmek. Bu da başıma yine üniversitede dijital tasarım sınavlarının birinde geldi. Soruda dijital bir sistem verilmişti ve bu sistem kararlı mıdır karasız mıdır diye sorulmuştu. Biraz teknik bir konu ama şu kadar bir açıklama yapayım: Bir sistem eğer tüm durumlarda kararlıysa kararlıdır, aksi taktirde kararsızdır. Ben de soruyu çözmeye başladım. Olası durumlardan birini seçtim ve bu durumu test ettim. Sistem bu durumda kararsız çıktı. Tanıma göre bütün sistem kararsızdı yani. Bunları yazdım ve bir sonraki soruya geçtim. Sınav sonuçları açıklandığında notum beklediğimden düşük geldi. Yine hocaya gittim ve bu kadar puanı nerede kaybettiğimi öğrenmek istedim. Bu soruda kaybetmişim. Hatamın nerede olduğunu sordum. Bana diğer durumları incelememişsin dedi. “Neden inceleyeyim ki? Soruda kararlı mı karasız mı diye sormuşsunuz. Diğer bütün durumlar kararlı çıksa bile bu sistem yazdığım durum nedeniyle kararsız olacak. Soruda sorulan da bu zaten” dedim ve “ama ben bunu istemedim” cevabını aldım.

Sonuncu örneğim de yine üniversitede veri sıkıştırma dersi sınavında meydana geldi. Sınav her türlü notun, kitabın açık olduğu bir sınavdı. Bu diğerlerine göre daha affedilir ama sınav ortamında büyük sorun yaratan bir hataydi. Soru kabaca şunun şöyle olduğunu gösterin tipi bir soruydu. Sorudaki hata ise şunun şöyle olmamasıydı. Gerçekten de bir önceki dönem başka bir derste aksi durumun doğru olduğunu ispatlamıştık. Ben o soruya geldiğimde bu hatayı gördüm ve sınav gözetmeni olan arkadaşı çağırıp bunu anlattım. Tesadüf şu ki, o arkadaş da geçen dönem aynı derste bizimle beraberdi. Sorunu hemen anladı ve durumu hocaya iletti ve hata düzeltildi. Bu hatanın etkisi ise şu: Bu soruda istenen şeyin gösterimi o sınavda yanımda getirdiğim kitapların birinde vardı ve arka arkaya kullanılan dört beş teknikten ibaret olan yaklaşık üç sayfalık bir ispata sahip. Yani o dersi daha önce almamış ve tesadüfen o sorudan başlayan birisi bu yanlış iddiayı ispatlamak için epey zaman kaybedecek. Ne de olsa öğrencide her zaman sorunun doğru olduğu beklentisi var. Uğraşmasına rağmen soruda istenen sonuca ulaşamadıkça kendi yolundan şüphelenecektir.

Bu örnekler bütün öğrenim hayatım boyunca girdiğim sınavların çok küçük bir bölümünü meydana getirmekte. Şu an, yani bu olayların üzerinden çeyrek asırdan fazla zaman geçtikten sonra, bu hataların hayatımı çok da etkilemediklerini söyleyebilirim. Çeyrek asır önce bunu söyleyemezdim ama.

İlk dersler

Lisedeki derslerin çoğunu hatırlamıyorum. Tabii ki hangi konuları öğrendiğimizi kabaca biliyorum ama o konuları ne zaman gördüğümüzü en iyi ihtimalle bir yıla eşleyebilirim, hangi dönem olduğunu bile çıkaramam. Bazı derslerde sınav olup olmadığımızı bile hatırlamıyorum. Bir taraftan o dersten geçtiğime göre bir şekilde en azından geçer not almış olmalıyım diye düşünürken diğer taraftan o geçer notu ne şekilde almış olduğumu hatırlayamamak çok garip bir his. Örneğin din dersinde yazılı sınav olduğumuzu hatırlıyorum, çünkü kopya çekmeye çalıştığım bir sahne var kafamda. Ön sıradaki arkadaştan sıranın altındaki kitabı bana uzatmasını istiyorum. Kitabı veriyor mu vermiyor mu seçemiyorum ama. Orada görüntü iyice bulanıklaşıyor. Coğrafya dersinde sözlüye kalktığımı ve hatta bu sözlüde iyice çuvalladığımı hatırlıyorum. Öyle kötüydüm ki hoca bana soru soracak birisi var mı diye sınıfa sormuştu ve Hale de okyanusları saymamı istemişti. Saymıştım ama hocanın emin misin sorusuna pek de emin olmayan bir evet cevabı verdiğimi hatırlıyorum. Bu sözlü notuyla geçmiş olamam ama yazılı sınav hiç hatırlamıyorum. Tarih dersinde yazılı sınav olmuştuk. Bunu hatırlıyorum, hatta bu sınav o kadar kötü geçiyordu ki hoca sınavın sonuna doğru kendisinden kopya çekeyim diye tarihi iyi olan birini yanıma oturtmuştu. Tabii bu benim varsayımım ama açıkçası aklıma daha mantıklı bir açıklama gelmiyor.

İki dersin ilk dersini ise hatırlıyorum. Daha doğrusu biri ilk ders, diğeri de ilk konu olmalı. İlk hafta üst sınıflar bize bu yılın en zor dersinin kimya olacağını söylemişlerdi. Zor deneyler, anlaşılmaz kavramlar falan filan. Bu sorunları o kadar kafama takmamıştım, çünkü ortaokulda da kimya bana zor gelmişti. Özellikle bütün formüllerin verilmesine rağmen bir elektrokimya deneyinin protokolünü hazırlamayı hiç becerememiştim. Şimdi ne kadar daha zorlanabilirdim ki? İlk erste hoca sınıfa çok basit bir şey sormuştu. Yüz mililitrelik bir çözelti nasıl yapılır? Soru çok basit ama bu şekilde sorulunca oldukça soyut bir soru. Hiçbirimizin deney tüpü, kimyasal madde tecrübesi yok. Herkes deney tüpüne yüz mililitre su koyarız, üzerine kimyasal maddeyi ekleriz diyordu. Hoca da hayır diyordu. Dersin sonuna doğru parmak kaldırıp, ki bu benim o yıllarda hiç yapacağım bir şey değildi, önce tüpe kimyasal maddeyi koyarız sonra yüz mililitre olacak şekilde su ekleriz dedim. Hoca doğru sayılır, daha iyi bir yolu var ama dedi. Önce kimyasal maddeyi koyarız, sonra biraz su ekleyip maddeyi çözeriz ve daha sonra yüz mililitreye tamamlayacak şekilde su koyarız. Eğer bu soruyu laboratuvarda deney tüpü ve kimyasal maddeyle sorsaydı eminim herkes en fazla bir denemeden sonra doğru çözümü bulabilirdi ama kafada, deneyden önce bu sonuca ulaşmak hiç kolay değil. Deneme kolay, yanılma yok. Sadece başka bir beyinden yanlış diye bir cevap geliyor. Tek geri besleme bu. Neyin neden yanlış olduğu bilinmiyor. O zaman bir sonraki hayali deney de aynı şekilde yapılıyor. O günden sonra kimya sevdiğim bir ders oldu.

Diğer hatırladığım ilk konu da matematik dersindeki önermeler mantığı konusuydu. O dersi nasıl işlediğimizi hatırlamıyorum ama önermeler mantığını bir daha unutmadım. Neden unutmadığımı bilmiyorum ama. Lise sırasında çok kullandığımı sanmıyorum ama daha sonra ne zaman ihtiyacım olduysa hemen elimin altındaymış gibi kullanabildim. Belki de çok basit olduğundan ya da bana öyle geldiğinden. Matematik de okulda becerebildiğim ve daha sonra büyüsünden kurtulamadığım bir alan oldu. Hiçbir işime yaramayacak olsa bile anlamak istediğim bazı alanları var ve yavaş yavaş bunları öğreniyorum.

Lego EV3 ve Micropython

Çocuklara yıllar önce aldığım lego robotla neler yapabilirim diye düşünürken internette yaptığım bir arama sonucunda Micropython diye bir programlama yüntemi olduğunu gördüm. Evde Linux bilgisayar kullandığımdan orijinal programlama ortamını kullanmayı düşünmüyordum ama bu ilginç geldi. Ayrıca Lego’nun sayfasında da bu programın desteklendiğini okudum ve hemen denemeye karar verdim.

İlk önce tabii ki eski pilleri kontrol ettim. Eneloop pro piller kontrol biriminin içinde duruyordu ama şarj aletini evde bulamadım. Belki de bodrumdaydı ama aramaya da üşendim ve yenisini sipariş ettim. Şarj aleti gelene kadar da micropython için gereken SD kartı bu sayfada anlatıldığı gibi hazırladım. Pilleri şarj ettikten sonra bu sayfadaki örnek programları yapıp denemelere başladım. Visual Studio Code eklentisi oldukça iyi çalıştı. Tek sorun USB bağlantısının kısa süre sonra kendiliğinden kopması. Yine de python ile programlamanın bloklarla çalışmaktan çok daha kolay olacağına inanıyorum.

Bu yılın denemeleri

Bu sene ektiğim bazı çiçekleri bahçeye çıkardım sonunda. Burada havalar hala soğuk ama iyi uyum sağladılar gibi görünüyor. Soğuk havanın yanındaki diğer tehlike de sümüklü böcekler. Genelde ektiğim çiçekleri yemeyi çok seviyorlar. Geçen seneden kalan bir çiçeğimi neredeyse komple yediler. Yeni ektiğim çiçeklerle pek ilgilenmediler ama.

Kudret narı

Kudret narının iki tohumunu içerde, diğerlerini de dışarıda. İçeridekilein ikisi de çimlendi ve birini bahçeye aktardım. Şimdilik orada iyi idare ediyor gibi görünüyor. İçerdekini de ne olur ne olmaz diye bekletiyorum hala.

Cosmos bipinnatus

Bunlar da çabucak çimlendi ve ilk parti bahçeye uyum sağladı gibi gözüküyor.

Bahçede de hafif hafif çimlenme başladı ama çok fazla ve işaretlemeden tohum ektiğim için neyin ne olduğunu henüz bilmiyorum.

MongoDB Compass

Uzun zamandır ilişkisel veritabanlarını (RDBMS) programladığım sistemlerde kullanıyorum. Bu sırada tabii ki başka türlü veritabanları da yaygınlaşmaya başladı. Şirketteki işlerim biraz azalır gibi olduğunda NoSQL tipi bir veritabanını öğreneyim dedim. Bilgisayarıma hemen MongoDB sunucusunu kurdum ve çeşitli kaynaklardan bu veritabanını nasıl kullanacağımı öğrenmeye başladım. İşlerimi Linux altında konsolda yapıyordum ve bu sırada MongoDB Compass diye bir programdan haberdar oldum. Onu da kurdum ve kullanmaya başladım. Verileri görme, bazı sorguları çok daha kolay bir şekilde yazma ve komutları otomatik tamamlama özellikleri öok hoşuma gitti ama her türlü sorguyu kullanmak mümkün değildi. Yani hala arada konsolu kullanmam gerekiyordu. Bu sırada programın alt tarafında _MONGOSH beta gibi bir yazı gördüm. Belki shell kısmı buradadır diye bastım ve gerçekten de konsol gibi bir şey açıldı ama yazdığım her komut hata veriyordu.

MongoError: No AuthProvider for DEFAULT defined.

Internette bu hata mesajını yazıp yaptığım aramalarda bir sonuca ulaşamadım ama bağlantı tanımlama penceresinde zaten bir miktar ipucu varmış.

Ben connection string kısmına sadece aşağıdaki komutu yazmıştım.

mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb

Bunu yazınca mongodb compass compressor tanımı için bir uyarı vermişti ama. Bunun üzerine komutu şöyle değiştirmiştim.

mongodb://127.0.0.1:27017/?compressors=zlib&gssapiServiceName=mongodb

Anlaşılan username ve password de tanımlamam gerekiyordu.

Önce bu sayfada anlatıldığı şekilde konsolu kullanarak bir kullanıcı admini ekledim.

use admin
db.createUser(
  {
    user: "myUserAdmin",
    pwd: passwordPrompt(), // or cleartext password
    roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
  }
)

Bu komuttan sonra mongodb bu kullanıcı için şifreyi soruyor. Ardından kullanıcı tanımlanmış oluyor. Bundan sonra bağlantı komutunu şifre kısmına yukarıdaki komutla beraber tanımladığım şifreyi kullanarak yazdım.

mongodb://myUserAdmin:ş[email protected]:27017/?compressors=zlib&gssapiServiceName=mongodb

Bundan sonra programın altındaki _MONGOSH BETA kısmını da konsol olarak kullanabildim.

Evet, hayır, bilmiyorum (Çözüm)

Soru

Cevabı evet ya da hayır olan sorularla sayıyı aradığımız bölgeyi her zaman ikiye bölebiliriz. Örneğin aralığın ortasındaki sayıyı seçip, tuttuğun sayı bu sayıdan büyük mi ya da küçük mi diye sorarsak cevaba göre aralığın bir yarısını hemen eleyebiliriz. Eüer üç cevaplı bir yöntem bulabilirsek bu aralığı eşit aralıklı üç bölgeye ayırabiliriz ve her cevapta bu üç bölgenin ikisini eleyebiliriz. Böylece aradığımız sayıyı daha çabuk, yani daha az denemede bulabiliriz.

Peki bilmiyorum cevabını nasıl elde edebiliriz? Bunu yapmanın yolu tabii ki soruyu sorarken bütün bilgileri vermemekten geçiyor. Bütün bilgileri vermeyeceğiz ama yine de elimizdeki aralığı üç eşit parçaya bölmeye çalışacağız. Soracağımız soruda bu bölmeyi bildirmemiz lazım ama bölümlerin birinin cevabı evet ya da hayır olmamalı.

Önce birle yüz arasındaki sayıları üç gruba ayıralım. Birden otuzüçe kadar, otuzdörtten altmışyediye kadar ve altmışsekizden yüze kadar diye. Şimdi bu aralıkların ortada olanını alalım, yani otuzdörtten altmışyediye kadar olanı. Bu aralık için bilmiyorum cevabını elde etmek isteyelim. Bu durumda bu aralıktan küçük aralık için evet, büyük aralık için de hayır cevabını isteyelim mesela. Bu cevaplar kolay: Örneğin tuttuğun sayı otuzdört ile altmışyedi aralığından küçük mü? Tuttuğu sayı bu aralıktan daha küçük aralıktaysa cevap evet ve daha büyük aralıkta ise cevap hayır olacak. Peki tuttuğu sayı bu aralıkta ise cevap ne olacak? Bu sorunun cevabı da bence hayır olacaktır, çünkü soruda hiçbir belirsizlik kullanmadık. O aralıktaki bir sayı da o aralıktan küçük değildir. Demek ki soruda aralıktan bir sayıya doğru gitmek daha iyi bir yöntem olabilir ama bu sayıyı soruda söylemememiz lazım.

O zaman oyunu tersine çevirelim ve şöyle bir soru soralım: Otuzdört ile altmışyedi arasında bir sayı tuttum. Senin tuttuğun sayı bu sayıdan küçük mü? Eğer tutulan sayı bu aralıktan daha küçük aralıktaysa cevap evet, daha büyük aralıktaysa da cevap hayır olacak. Eğer tutulan sayı bu aralıktaysa bu sefer otomatik bir hayır cevabı olmayacak. Evet cevabı da olmayacak. Mecburen bilmiyorum cevabı verilecek.

Buna benzer başka sorular da bulunabilir tabii ki.

Laz tamirci

Evde bir sürü jaluzi var ama bir tanesi sürekli bozuluyordu. Motorlu bir şey de değil. Bildiğimiz mekanik, elle çekilen bir halatı olan basit bir şey. Nedense hep bu bozuluyor ama. Sonunda kapının üzerindeki bölmeyi açtım ve sorun nerede diye bakayım dedim. Halat normalde sarılması gereken diskten çıkmış ve sıkışmış, böylece bütün jaluzinin hareketini de engellemiş.

Tabii ki düğümü çözmek kolay diye düşündüm ve sıkışan halatı çekiştirmeye başladım. Halatın aksın etrafında defalarca dolanmış olması işimi iyice zorlaştırıyordu. Ayrıca bütün işi tek elle yapmam gerekiyordu çünkü olay yerine sadece bir elim sığıyordu.

İlk gece aksa dolanmış düğüm sayısını dörde indirebildim. Ertesi gün, bu sefer kalanı hallederim diyordum ki düğüm sayısının yediye çıktığını gördüm. Anlaşılır gibi değildi. Öncelikle orada bir düğüm oluşmasına bile imkan veremezken düğümlerin sayısının durup dururken artması hiç de hayra alamet değildi. Ertesi gün devam ederim diye işi orada bıraktım.

Ertesi gün çocukların da yardımıyla düğüm sayısını biraz da azalttım ama halatın pozisyonu gördüğüm kadarıyla imkansız bir şekildeydi. Yanı normal sarılmış bir durumdan bu konuma nasıl gelmiş olabileceğini çözemiyordum. Bu sırada yanlı bir hareket sonucunda jaluzinin lamellerini sola doğru kaydırabildiğimi gördüm. Bu da çalışmak için daha çok alan demekti ve halatı biraz daha bollaştırdım, şimdi halatın oluşturduğu halkaları birbirlerinin içinden geçirebiliyordum ama hala bütün düğümü çözmenin yolunu bulamamıştım. Bu sırada jaluzinin aksını yine yanlışlıkla hareket ettirirken olduğu yerden çıktığını da farkettim. Bu sayede halatı dolandığı yerden komple çıkarabildim fakat aksı yerine takarken ne oldu bilmiyorum, diske giren kısım yerinden çıktı. Çıktığıyla da kalmadı kayboldu. Evet, nerede olduğunu bilmiyorum. Bir ihtimal duvardaki bir delikten aşağıya düştü.

Bütün bu yazıdan da fark edileceği üzere jaluzi ve parçaları hakkında hiçbir bilgim yok. Bu nedenle düşen parçanın adını da bilmiyorum. Bilsem internetten sipariş verebilirdim. Şimdi jaluzinin son halinin fotoğraflarını çekip dükkanları gezmekten başka pek şansım kalmadı. Parçalar pek pahalı gözükmüyor ama anladığım kadarıyla standard da değiller. En iyisi pandemi yüzünden sokağa çıkma yasakları başlamadan hemen yarın gidip şansımı deneyeyim.

Bad Character algoritması

Bu yazı ve algoritma dizisinde de metin arama algoritmalarından Boyer-Moore algoritmasını öğrenmeye çalışacağım. Diğer bazı metin arama algoritmalarında olduğu gibi bu algortimada da aranan metin her adımda tek adım kaydırılmıyor, aksine aranan metnin özelliğine göre kaydırma miktarları optimize ediliyor. Boyer-Moore algoritmasının şimdiye kadar öğrendiğim algoritmalara göre iki farklı özelliği var. Birincisi, aranan metin ve ana metin karşılaştırması sağdan sola doğru yapılıyor. İkincisi de kaydırma miktarını bulmak için iki değişik alt algoritma kullanılıyor. Bu yazıda bu iki algoritmadan biri olan Bad Character algoritmasını anlamaya çalışacağım.

Bu algoritma için aşağıdaki animasyonu programlamaya çalıştım.

Bad Character Rule

Bu animasyon başlatıldığında henüz hazırlanmamış bir tablo ve tablonun üzerinde seçilmiş bir aranan metin gösteriliyor. Tabloda normalde bir metinde olabilecek bütün karakterler olmalı (küçük harfler, büyük harfler, rakamlar vb.) ama sadece fikri gösterebilmek için tabloyu küçük tuttum. Animasyonda ana metni kullanmadım çünkü bu algoritma için ana metin değil aranan metne herhangi bir konumda uymayan bir karakter önemli. Bunu da aranan metnin üzerinde hesaplanacak konumda gösterilen bir karakterle göstermeye çalıştım.

Animasyonda aranan metin olarak

 NNAAMAN

dizisini kullandım. Her tablo seçilen aranan metne göre ayrı oluşturulması gerekiyor. Tabloyu şöyle düşünmeye çalıştım. Aranan metinde ana metni sağdan sola doğru karşılaştırdığımızda ana metindeki ilk uyumsuz karakteri en soldaki sütundan buluyoruz. Ardından bu uyumsuzluğun aranan metindeki hangi pozisyonda olduğunu da birinci satırdan okuyoruz. Algoritma bittiğinde bu tablo bize o karakter ve o konum için aranan metni sağa doğru kaç karakter kaydırabileceğimizi söyleyecek.

Bu tabloyu hazırlamak aslında çok kolay ama bu şekliyle tablo oldukça fazla yer tutmakta, çünkü olası her karakter için tabloda yer harcanıyor ama bu ilk versiyon için bu basit yöntemi anlamak yeterliydi benim için. Literatürde bu sorunla ilgili çeşitli çözümler var ve ileride onlara da bakabilirim.

Tablodan sırayla her satırdaki harf için olası her pozisyonu alıyorum ve bu harfi aranan metnin üzerinde o pozisyonda gösteriyorum. Eğer seçtiğim harfler aranan metindeki harf aynı ise tabloda bu noktaya “-” işareti koyuyorum, çünkü bu algoritma sadece uyumsuzluk varken kullanılıyor. Eğer uyumsuzluk varsa aranan metinde sola doğru harfleri tek tek kontrol ediyorum. Seçilen harfle aynı harfi ilk bulduğum konuma kadar aranan metni sağa doğru kaydırabilirim, çünkü aradaki her durumda bir uyumsuzluğun çıkacağı kesin. Eğer bir harfi uyumsuzluğun çıktığı konumdan sonra bir daha bulamazsam da aranan metni uyumsuzluktan bir sonraki konuma kadar kaydırabilirim. Bu şekilde her karakter ve konum için aranan metni ne kadar kaydırmam gerektiğini tabloya işliyorum. Bu şekilde bu basit algoritma da tabloyu oluşturmuş oluyor.