Ürolog

Yarın sabah senelik kontrollere başlamak için yine ürolog randevum var. İlk olarak PSA değerlerini kontrol etmek için kan tahlili yapılacak. Değerlerimin yine yüksek çıkacağını düşünüyorum, şimdiye kadar hiç normal çıkmadı meret. Babamda da zamanında prostat kanseri çıktığından kırkbeş yaşını geçince rutin kontrollere başlayayım demiştim. Geçen sene gittiğimde yine aynı muayeneler yapılmıştı. İtiraf edeyim en rahatsız olanı ultrasondu. Ben tabii ki en naif halimle böbreğe bakar gibi ultrasonla bakacak sanıyordum. Meğer parmak yerine ultrason kullanılıyormuş. Neyse ki çok kısa sürdüğünden o kadar da sorun olmadı.

Ardından sonuçları öğrenmeye gittiğimde tabii ki PSA değerlerimin yüksek olduğunu ve bir kere daha kan tahlili yapmak istediğini söyledi. Bunda da değerler yüksek çıktı. İşi şansa bırakmamak için biyopsi yapmayı önerdi. Babamda olduğu gibi geç yakalanmaktan korktuğumdan bu müdaheleyi tabii ki kabul ettim. Doktorum siz narkozdayken bir de mesaneye bakalım dedi. Mesaneye nasıl bakacağını tahmin ettiğimden önce bir rahatsız oldum ama sonra narkozda olacağımı ve sonra eve gideceğimi söylediği için hesaplarıma göre bu müdahele en çok korktuğum şey olmayacaktı. Belki ikinci en korktuğum şey olacaktı. Daha önce narkoz almamıştım ve boğazıma bir hortum girmesi düşüncesi hiç hoşuma gitmemişti.

Ertesi hafta anestezistle randevum vardı. Bana neler yapılacağını o anlatacaktı. Gelmeden önce kalp ve kan tahlilleri de istedi. Gittiğimde bana tahlillerin sonucunu sordu. Ben de “tahliller burada, ben sonuçlarını bilmiyorum” dedim. Ben tahlil sonuçlarımı hiç merak etmem ki. Eğer ciddi bir şey olsaydı doktor bana söylerdi heralde. Bu yüzden her yıl sonuçlarını merak edip öğrenmediğim en az bir tahlil yaptırırım.

Anestezist neşeli bir adamdı. Gülerek anestezinin nasıl işleyeceğini anlattı. Maske ile ya da hortumla yapacaklarını söyledi. Umut ışığını gördüğüm gibi aradaki farkı sordum. Maske ile yaparlarsa hortuma gerek olmayacaktı. “Tamam, maske istiyorum” dedim. Maske ile sorun olursa hortum takmak gerekebilir diye olası komplikasyonları da anlattı ama maskeden sonrasını dinlemedim açıkçası. Hem ben uyurken hortumu istediği yerden sokabilirdi. Neden bilmiyorum ama diğer türlü yaparsa hortumu ben uyanıkken sokacaklarmış gibi bir fikir vardı kafamda. Neyse işte, nasıl olsa maske ile olacak diye daha fazla üstelemedim.

Ardından o gün neler yapamayacağımı filan anlattı. Ciddi kararlar vermemem gerekiyormuş. Dosyamda yazılımcı olduğumu görünce o gün program yazmamamı da tavsiye etti. Ben de nasıl olsa maskeli narkoz olacağından narkozsuz da çok farklı program yazmadığımı söyledim. Beraber güldük. Bu anestezisti sevmiştim.

Ertesi gün biyopsi saatinde gittim. Beni bir hemşire hazırladı ve ameliyathaneye aldılar sonra. Bacaklarımı metal bir alete yerleştirdim ve maskeyi ağzıma taktılar. Kaçta geriye doğru saydırdıklarını hatırlamıyorum bile ama sadece ilk sayıyı söyleyebilmiştim sanıyorum.

İşlem bitip de uyandıktan sonra işemem gerekiyormuş. İşemeden kimseyi salmıyorlarmış. Kanlı manlı biraz da yanmayla işemeyi başardım. Sonra eve geldim ve birkaç gün dinlendim. Sonuçları kafama çok takmıyordum. Acı çekmediğim sürece diğer hobilerimle ilgilenebilecektim.

Sonuçları öğrenmek için doktora gittiğimde doktor hemen iyi haberi verdi. Kanser yok. Güzel dedim. Kanser yok ama mesanede atipik hücrelere rastlanmış. Prostatta hiçbir sorun yokmuş, sadece iltihaplanmış. Patoloji atipik hücreler için florasan madde ile daha kapsamlı örnekler alınmasını tavsiye etmiş. Bunu da orada yapamıyorlarmış. Hastaneye gitmem gerekiyormuş. Tabii ki kafamda deli sorular da belirmeye başladı ama doktorum da bu sırada anlatmaya devam ediyordu. Heralde biyopsiden daha kapsamlı bir iş yapılacak. “Hastanede üç gün kalmanız gerekecek.” Neden üç gün? Biyopside hemen çıkıp gitmiştim. Heralde florasan maddeyle ilgili bir şey. “Yüzde seksen doksan bir şey çıkmayacak ama. Büyük ihtimalle atipik hücrelerin hepsini aldım zaten.” Aman işte, üç gün de hastanede dinlensem fena olmaz aslında. “Yine de hiçbir şeyi şansa bırakmasak daha iyi olur.” Babamın prostat kanseri yüzünden geldiğim muayenenin sonunda mesane için hastaneye yatıyorum. Şans mı değil mi bilmiyorum artık. “En kötü ihtimalle bile en erken safhada yakalamış olacağız. Çok şanslısınız!” Demek şanslıyım, iyi o zaman.

Bir iki hafta sonra hastaneden randevu alabildim ve hastaneye gittim. İlk önce bir doktor beni görecekti. Bir iki saat bekledikten sonra beni oldukça genç bir Türk doktor karşıladı. Odaya girdik, bana yapılacak müdaheleyi anlatan bir broşür verdi ve anlatmaya başladı. Ben de o sırada broşüre göz attım. Renkli resimli ne yapılacağı, hangi komplikasyonların çıkabileceği bilan yazıyordu. Bu sırada müdahelenin sonuçlarına baktığımda artık çocuk yapamayacağım filan yazıyordu. İlk bakışta garip gelmişti bana. Mesaneden örnek almak nasıl bir kısırlık yapabilir anlamamıştım ama koca doktordan daha mı iyi bilecektim. Doktor da komplikasyonları anlatmaya başladığında broşüre bir baktı ve “aaaa, yanlış broşür bu” dedi. Yan taraftan mesane için olanı aldı ve bu sefer yapılacak işlemi detaylıca anlatmaya başladı. Önce florasan madde olan sıvı mesaneye sokulacak. Sonra yarım saat kadar bu maddenin hücrelere girmesi beklenecek. Ardından anestezi verilecek ve kısa sürecek operasyon başlayacak. Bu planı duyunca panikle sordum: “Sıvıyı anestezi olmadan mı verecekler?” Doktor da evet dedi, böylece daha az narkoz vererek bu işi yaoabileceklerdi. Ben de neredeyse ağlamaklı bir sesle “En çok korktuğum şey bu işlemde başıma gelecekmiş” dedim.

Daha sonra anestezistle görüştüm. Bana daha biyopside yapılan işleme çok benzer olacak dedi. Hortumla narkozu vereceğiz sonra da halledeceğiz dedi. Ben de biyopside hortumlu değil maskeli narkoz verdiler ama dedim. O da güldü ve “Tabii, tabii” dedi. Gerçekten böyle dedi. Neyse, eğer biyopsideki anestezist de beni kandırdıysa hortum o kadar da kötü bir şey değilmiş. Artık tek korkum anesteziden önceki yarım saatti.

O gece uyuyamadım tabii ki. Sabah viziteye gelen doktor işlemin o sabah yapılacağını söyledi. Hemşireler beni yine hazırladı. Sonra yatakla hastane koridorlarında yolculuğum başladı. En sonunda bir yatak daha değiştirip anestezistin yanına geldim. Bana önce bir ilaç verdi. Yapılacak işlemi anlatmamı istedi. Bunu da bilmiyorlarsa işimiz iş diye düşünmeye başladım ama heralde güvenlik önlemi olarak soruyorlardı. Bu ilaç biraz başdönmesi yapabilir diyerek infuzyona bir şey ekledi. Ben de anesteziden önceki o korkunç yarım saati düşünmemek için baş dönmesine odaklanmaya çalıştım. Kısa süre sonra baş dönmesi başladı. Bundan sonra anestezist şimdi geriye doğru saymaya başlayın dedi. O anda bir gün önceki doktoruma küfürler saydırmaya başladım. Madem planda değişiklik yaptınız neden bana haber vermediniz? Belki gece uyuyabilirdim.

Yaklaşık üç saat sonra uyandığımda odamda yataktaydım. Üzerimde acayip bir ağırlık vardı. Etrafıma baktığımda asıl en çok korktuğum şeyin başıma gelmiş olduğunu gördüm. Yanımda bir askıda asılı bir idrar torbası ve o torbadan çıkıp bana giren bir sonda. Ağrım filan yoktu ama moralim yerlerdeydi. Vücuduma yapılmış bu minimum ek beni vücuduma yabancılaştırmaya yetmişti. Evet, tuvalete gitmeye ihtiyacım yoktu ama ya sıçmam gerekirse?

İlk günü tamamen yatakta geçirdim. Vücuduma bakmak bile istemiyordum. Kafamdaki bütün o planları bu vücutla yapmak istemiyordum. Her şey geçtikten sonrasını düşünmeye başladım ama hayallerimde vücuduma yer vermiyordum. İkinci günü de yatakta geçirme planım hemşirelerden yediğim fırçalar nedeniyle suya düştü. Artık yatağa du getirmiyorlardı. Ben de kendi kendime su almaya gitmeye başladım. Bunun üzerine de hemşirelerden ikinci fırçamı yedim. Neden hala ameliyat kıyafetiyle dolaşıyor muşum? Başka şeyler giyebilirmişim. Sorunum başka şeyler giymek değildi. Üzerimi değiştirmek için yine o yabancı vücuda bakmam, dokunmam gerekecekti ve ben buna hala hazır değildim. Bu da yetmezmiş gibi artık işerken yanmalar da dayanılmaz hale gelmişti ve hala sondanın çıkarılması sorunu vardı. Fiziksel olarak çok sorun olmasa da psikolojik olarak çok kötü bir zaman geçiriyordum. Her türlü ağrı için bir ağrı kesici vardı ne de olsa ama beynimi susturacak bir şey yoktu.

Bu arada her sabah viziteye farklı farklı doktorlar geliyordu. Bir viziteden sonra bir asistan doktor odaya gelip bana benden kan alındı mı diye sordu. Her gece iğne yapılıyordu ama kan alındığını hatırlamıyordum. Alınmadı dedim. “Nasıl olur?” diye sordu. “Ameliyatta epey kan kaybetmiştiniz.” Şaşırdım kaldım. O kadar kan kaybedilecek bir müdahele gibi gelmemişti bana ve bunu neden şimdi söylüyorlardı? İşin daha da garip tarafı benden kan alınmadı ve o doktoru da bir daha görmedim.

Sanırım ameliyattan sonraki üçüncü gündü, sonunda sondayı çıkarmaya karar verdiler. Demek korkumun zirve yapma zamanı gelmişti. Çıkarmadan bir saat kadar önce doktor kuzenim beni aramıştı ve durumu sormuştu. Ona da bu sondayı çıkarmanın nasıl olduğunu sordum. O da bana “Bana da yapmışlardı. Bağırmaktan hastaneyi yıkmıştım” dedi. Ben tam içimden bağırmaya başlamıştım ki ekledi “Korkma, korkma! Hastaneye bir şey olmuyor.”

Çıkarma ritüeli başladığında bundan ne kadar korktuğumu açıkça belirten bir şekilde kafamı öbür tarafa çevirdim, gözlerimi sıkıca kapattım ve yüzümü iyice buruşturdum. Hemşire bir saniyede sondayı çıkarmıştı ama belki acıdan belki de bu kadar pozu boşuna yapmış olmamak için birkaç saniye daha acıyı hissettim. Daha sonra daha derin nefes almaya başlayınca işlemin bittiğini anladım. İyice sakinleştiğimde ilk iş olarak hemşireleri mutlu etmeye karar verdim ve bir duş alıp üzerimi değiştirdim. O akşam hemşire rutin sorularını sordu. “Ne kadar su içtiniz? Ha dün sıçmışsınız, güzel.” Buna “pardon ama hala sıçmadım” diye cevap verdim. “Bunun üzerine bir ilaç getirdi. Sihirli bir iksirdi heralde ki içtikten kısa süre sonra yapabildim. Tabii ki ilacın adını hemen sordum. Bir sonraki kabızlığımda hayatımı kurtarabilirdi.

Ertesi sabah son viziteye başhekim geldi. İyi olduğumu filan söyledim. Bütün doktorlar odadan çıkarken başhekim bana dönüp “Önümüzdeki günlerde kanama olabilir. Merak etmeyin” dedi. Ben de şaşkınlıkla “iyi de dünden beri kanama olmadı ki? Neden? Ne kadar olabilir?” diye sorularımı salladım ama doktor bu soruları sallamadı heralde ve cevap vermeden odadan çıktı.

O gün taburcu olacaktım ve genç Türk doktor bu işlemleri yapacaktı. Mesaneyi boşaltıp boşaltamadığımı kontrol etmek için ultrasonla bakmak istedi ama ultrasonu ara ki bulasın. Yaklaşık iki saat sonra “tamam buldum” diyerek yeniden çağırdı beni. Meğer yeterince boşalmıyorsa yeniden sonda takmaları gerekecekmiş. Hemen bildiğim bütün kuzey mitolojisi meslektaşlarıma dua etmeye başladım. Anlaşılan dualarımı duydular da yeni bir sonda macerasına gerek kalmadı. Taburcu olduğum sırada mesaneden aldıkları parçaların patolojik sonuçları hala gelmediğinden sonuçları mektupla doktoruma göndermelerini söyledim. Sonuçlara göre neler olabileceğini sorduğumda doktor bana eğer kötü çıkarsa üç ayda bir kontrol gerekebilir ya da bir şey olmazsa yılda bir kontrol düşünülebilir dedi. İçimden yine söylenmeye başladım. “Doktor, sen ne dediğinin farkında mısın? Bu yaptığınız müdahelelerden sonra iki ayda zar zor iyileşiyorum. Üç ayda bir kontrol demek bir daha yanma olmadan işeyemeyeceğim demek.”

Buraya kadar çok söylendim değil mi? Bana yapılan işlem oldukça hafifti ve bu kadar laf ettim yine de. Odada yalnız kalmıyordum. Solumdaki yatakta bir başka Türk yatıyordu. Türkiye’de tatilde kanamaları olmuş. Dönünce muayene etmişler ve kanser diyerek böbreğini almışlardı. Sağımdaki yatakta yatan adam bütün bu süre boyunca hep konuştu. Başhekimin söylediğine göre biraz daha geç kalınsaymış diyalize başlanması gerekecekmiş. Türk yatak komşum taburcu olunca yerine gelen adam da kanserdi. Kanser akciğerler dahil bir sürü yere sıçramıştı. Bu da yetmezmiş gibi bir gün önce düşüp kaburgalarını kırmıştı ve şimdi bu yüzden ameliyat olacaktı. Hiç konuşmuyordu, konuşacak bir şey kalmamıştı. Bu örneklere bakıp şükretmem gerekir belki ama öyle düşünmüyorum. Herkes kendi beynindeki kendi cehenneminde yaşamak zorunda. Herkes de bu cehennemden şikayet etme hakkına sahip.

Haftaya yine mesaneme bakılacak. Bu sefer anestezi de yokmuş. Yani sadece lokal anestezi. Bundan da korkuyorum. Hayalinden korkuyorum. Bu sırada bilinçli bir şekilde uyanık olmaktan korkuyorum. Tahlilden çıkacak sonuçlardan bu kadar korkmuyorum. Şimdilik.

Programlama öğrenmek

Profesyonel olarak bildiğim ve sürekli kullandığım birkaç tane programlama dili var. Şu sıralar yeni dillerden de bazılarını öğrenmek istiyorum. Neden mi? Hem biraz merak hem de mesleğimde geride kalmamak için. Sonuçta yeni nesiller daha çok yeni dilleri öğrenecektir ve gelecekteki işlerde benim de bu yeni dilleri konuşabiliyor ve yazabiliyor olmam gerekecek.

Bu hafta scala dilini kitaptan okumaya devam ettim. Kitapta anlatılan özelliklere bakılırsa ilginç bir dil. Hoşuma gitti. Yalnız, kitaptaki örnekleri programlayıp onlarla oynamak bana yeterince öğretici gelmedi. Tekrar etmek öğrenmek için gerekli bir adım ama bazı sorunları düşünüp çözmeye çalışmak daha önemli bir yöntem bence. Meslekte dil öğrenmek kolay çünkü sürekli üzerinde çalıştığımız projeler, çözmeye çalıştığımız problemler vardır.

Bunun üzerine kitaptaki programları papağan gibi tekrarlamak yerine başka bir çözüm aramaya başladım. İnternette scala egzersizleri buldum. Bu sayfada oldukça basit bazı şeyler buldum ama bence böylesi daha iyi. Kolay programlanabildiği için tekrarı da kolay oluyor böylece. Biraz önce kısaca bu şekilde Türkçe kaynak olup olmadığını arattım ve açıkçası burada verdiğim linkteki kadarını da bulamadım.

Açıortay (Geogebra)

Bu animasyonda açıortaylarla oynamaya karar verdim. Yani verilen bir EAF açısını iki eşit açıya bölen AD doğrusunu çizdirdim. Daha sonra bu açıortay üzerinde bir D noktası aldım ve bu noktadan açının kolları üzerine düşen dikey DF ve DE doğrularını çizdirdim. Ardından geogebra’ya DE ve DF doğru parçalarının uzunluğunu ölçtürdüm. Ardından da bu D noktasını bir kaydırma bileşeniyle hareket ettirdim. Her yeni D noktası için geogebra DE ve DF uzunluklarını ölçüyor ve bu uzunluklar hep birbirine eşit oluyor. Bu deneyin hedefi de bunu göstermekti.

Bunu geometrik olarak görmek de kolay. ADE ve ADF diküçgenleri birbirine eşit olduklarından bu diker doğru parçalarının da uzunlukları birbirine eşit olmalıdır.

Komşu bütünler açılar

Noel tatilinde Geogebra ile oynamaya devam ettim. Bir şeyi öğrenirken görsel ya da deneysel yaklaşım benim sıkça kullandığım bir yöntemdir. Bana uygun olması başkasına da uygun olacak demek değil ama. Bazı insanlar soyut kavramlarla çok rahat çalışırken de deneyler de çok başarısız olabiliyor. Bu yazıdaki animasyonda geometrideki çok temel bir konuyu görsel bir hale getirip bu görselliğin gerçekten işe yarayıp yaramadığına da bu deneyle bir bakmak istiyorum.

Bu basit animasyonda bütünler açılara bakacağım. Aslında geometrik bir konuyu görsel hale getirmek ne kadar gerekli ya da avantaj sağlar sorusu da sorulabilir öncelikle. Geometri zaten oldukça görsel bir alan değil mi? Elbette öyle ama geogebra ile çok kısa sürede çok fazla deney yapmak mümkün. Bu deneylerde belki dikkatimizi çekecek sonuçlar ya da davranışlar görebiliriz.

Animasyonda açı isimli kaydırma bileşenini kaydırdığımızda doğru C noktası etrafında o açı kadar döndürülüyor ve C noktası etrafında \(\alpha \) ve \(\beta \) açıları oluşuyor. Bu açıların büyüklükleri geogebra tarafından “ölçülüyor”. Aslında hesaplanıyor tabii ki ama bu animasyonda geogebranın rolü bu deneyde bizim iletki ile yapacağımız ölçüm işini yapmak olacak. Bu sayede deneyler hızlanacak.

Animasyona bir de \(\delta = \alpha + \beta \) hesaplamasini ekledim. Bu da bu deneyde aslında dikkatimizi çekmesi gereken özellik. Açı değerini değiştirdikçe bu toplamın değişmediğini görmemiz lazım. Bu özellik ayrıca bütünler açı kavramının da kendisi oluyor.

“Eğer birbirinin bütünleri olan iki açı komşu ise (yani köşeleri ve bir kolları ortak) ortak olmayan kolları bir doğrudur” (wikipedia)

Buraya kadar her şey normal gözüküyor ama ufak bir iki nokta daha var. Örneğin geogebra’nın bu açıları ölçmesine güvenebilir miyiz? Tabii ki yukarıda da dediğim gibi geogebra bu açıları ölçmüyor, hesaplıyor. Öğrenme aşamasındaki bir kişi için bu yeterince güvenilir olacak mı acaba? Peki aynı şekilde bu deneyleri kağıt, kalem ve iletkiyle yapsaydık bu sefer iletkiye güvenecek miydik? O da çok duyarlı ölçümler yapamıyor. Zaten çizdiğimiz doğrular da matematikteki doğru tanımına uyan nesneler değil.

Aslında bu soruyu soyut bir şekilde işlemek büyük ihtimalle çok daha basit bir öğrenme yöntemi ama yine de herkes aynı şekilde aynı kolaylıkla öğrenecek diye bir şart yok. Belki de bu durumda deneysel ve güven tabanlı öğrenmeyi yeğleyecek insanlar vardır. Geogebra bu tür insanlar için oldukça iyi bir araç.

Geogebra

Bu programdan sanırım ilk geçen yıl haberdar olmuştum. Bazı bilmecelerin çözümündeki şekilleri çizmek için kullanmıştım yanlış hatırlamıyorsam. Geçenlerde youtube’da ODTÜ’den Cem Tezer’in çok güzel geometri dersi videolarının birinde bu programdan bahsedince bir daha bakayım dedim. www.geogebra.org adresinden ulaşılıp bedava kullanabilen bir program. Ayrıca programı yüklemeye de gerek yok, tarayıcının içinde doğrudan çalışıyor.

Bu programın sevdiğim tarafı şu oldu. Matematiğin bazı alanlarını çok güzel görselleştiriyor. İyi de matematiği görselleştiren programlar zaten vardı diyebilirsiniz. Bunun farkı nerede peki?

Bunun farkı programda temel nesnelerin basit ilişkiler şeklinde tanımlanabilmesi ve daha sonra şekil üzerinde bu nesneleri hareket ettirirken programın nesnelerin aralarındaki ilişkileri korumaya devam etmesi. Örneğin, tanımlanmış bir fonksiyon üzerinde bir A noktası tanımladığımız zaman program bu noktanın o fonksiyon üzerinde olduğunu biliyor artık. Böylece o noktayı hareket ettirdiğimizde nokta her zaman o fonksiyon üzerinde kalıyor. Bir adım daha ileri gidip o noktadan geçen ve o fonksiyona teğet bir doğru çizdiğimizde program bu teğetlik özelliğini de hatırlıyor ve noktanın her yeni konumu için o konumdaki teğeti çiziyor.

Bu animasyonda yukarıda bahsettiğim örneği programladım. Programlamak da sayılmaz aslında, bir kaç komutla yapılan bir iş. “a” isimli kaydırma bileşeniyle P noktasını fonksiyon üzerinde kaydırıyorum, yani P noktasının x koordinatını a bileşeninden y koordinatını da daha önce tanımladığım fonksiyondan alıyorum. Noktanın her konumu için o noktadaki teğet de çiziliyor. Ayrıca ekranın sağında bu teğetin fonksiyonu ve eğimi de gösteriliyor. Eğimi takip edersek minimum ve maksimum noktalarda değerinin 0 olduğunu, ne zaman arttığını, ne zaman azaldığını görebiliyoruz. Bu şekilde belki orta öğretimde türevi ve minimum maximum noktaları hesapları öğrenirken görsel bir destek olarak kullanılabilir. Sizi bilmem ama ben bununla arada sırada oynamayı düşünüyorum. Ümit henüz buna çok ilgi göstermese de elbet işe yarayacağı günlerin geleceğine inanıyorum.

Knuth-Morris-Pratt algoritması

Bu algoritma failure function yazısında oluşturduğumuz tabloyu kullanarak aradığımız metni uyumsuzluğun olduğu konuma göre değişik miktarlarda kaydırmaktadır. Bu şekilde aranan metni her adımda bir karakter kaydırma algoritmasına göre bir iyileştirme elde edeceğiz.

Aşağıdaki linkle animasyon sayfasına ulaşabilirsiniz. Sayfa yüklendiği zaman aranan metin için daha önceki yazıda tanımlanan tabloyu hesaplayacak. Ardından ana metni ve aranan metni gösterip uyumlu karakterleri yeşil renkle, uyumsuz olan ilk karakteri de kırmızı ile gösterecek. Ondan sonra uyumlu ortak metin uzunluğundan tabloda seçilen sütunu yeşi ile gösterip oradan kaydırma miktarını okuyacak. Aranan metin bu miktar kadar kaydırıldıktan sonra aynı işlemleri tekrarlıyor. Animasyon aranan metin bulunana kadar devam ediyor.

Animasyon

Şapka yerine sayılar

10 tutuklu zindanda ertesi gün idam edilmeyi beklerken, kral onlara bir şans daha vermek istemiş.

İdamdan önce her birinin alnına 0’dan 9’a kadar rastgele bir rakam yazılacak. Herkes kendi rakamı hariç diğer bütün rakamları görebilecek. Kimse birbiriyle konuşamayacak ve ardından her birine teker teker alnındaki rakamın kaç olduğu sorulacak. Eğer bir kişi bile kendi rakamını doğru tahmin ederse hepsi kurtulacak, aksi durumda hepsi idam edilecek. Ayrıca kimse de diğerlerinin tahminlerini duyamayacak.

Yarına kadar bir strateji kararlaştırabilirler. Hangi strateji ile kurtulabilirler?

Çözüm

Bir başka doktor muayenesi

Bu doktor maceralarım beni her zaman güldürmeyi başarıyor. Geçen hafta ürolog randevum vardı. Randevu zamanı geldiğinde muayenehaneye gelmiştim ama bencen önce iki kişi daha vardı. Beklemeye başladım. On dakika sonra sıra bana geldi. İçeri girdim ve hemşireye randevum olduğunu söyledim. Bana idrar tahlili için bir kap verdi. Tuvalete gittim. Tuvalet doluydu. Ben beklerken başka bir hasta geldi ve tuvaletin dolu olduğunu görünce kadınlar tuvaletine girdi. Birazdan erkekler tuvaleti boşaldı. İçeri girdim, kabı elime aldım ve işemeye başladım. Yani başlamak istedim. Birkaç damladan sonrası gelmedi. Bir beş on dakika daha boğuştum ama olmadı. Eser miktarda idrarla kabı geri götürmek de istemedim. Maazallah sırf bu örnek için özel vitrin yaptırıp üzerinde adımın yazılı olduğu bu kabı herkese sergileyebilirlerdi. Kabı tuvaletle laboratuar arasındaki kapağı açıp aradaki bölmeye koydum ve çıktım. Bu sırada hemşire de beni arıyormuş. Kısaca, kabı hemen hemen boş bir şekilde ara bölmeye koyduğumu söyledim ve o da “sorun değil” diyerek beni doktorun yanına gönderdi.

Doktor önce kan tahlili sonuçlarını anlattı. Değerler yine biraz yüksekmiş ama sorun değilmiş. Geçen seneki işlemlerin aynısını yaparız diyerek Ocak ayı için randevu verdi. Ardından bir şikayetimin olup olmadığını sordu. Ben de önce yok dedim ama sonra şikayetsiz gidersem doktora ayıp olur diye işerken hafif bir yanma var dedim. O da “idrar tahlili verdiniz nasıl olsa, orada bakarız” dedi. Ben de durumun düşündüğü gibi olmadığını anlattım. “Hallederiz” dedi. Sonra muayeneye geçti. Şimdi muayenenin detaylarına girmeyeceğim. Doktor yeterince girdi zaten. Ardından “her şey yolunda, Ocak’ta görüşürüz” dedi. “İdrar tahlili ne olacak?” diye sordum. O da “muayene ettim, sorun yok” dedi. İçimden “vay be, gavur ultrasonla yanmayı bile kontrol edebiliyor. Bir de idrar örneği verebilseydim neler neler bulurlardı acaba?” diyerek odadan çıktım.

Isenachweiher

Hafta sonu çocuklarla yakınlardaki bir göle gittik. Isenach adlı akarsunun döküldüğü Isenachweiher. Tabii ki bu mevsimde çok bir şey görmeyi beklemiyordum. Fotoğraf makinemin pilini de bu nedenle şarj etmemiştim. Aslında bunun ne kadar kötü bir fikir olduğunu gidince anladım.

Yağmur sonrası bir dönem olduğu için çevre patikalar mantarlar açısından çok zengindi. Gölün çevresinde kısa bir tur sonunda bir sürü mantar türü görebildim. Çocuklar sıkılmasa gezintiyi daha da uzatabilirdim ama zaten yeterli şarjım da yoktu.

Hazır göle gelmişken iki kavanoz su örneği aldım. Gölün çevresindeki aşırı yüksek ağaçlar yüzünden gölde pek su bitkisi yoktu ama belki örneklerde bir şeyler bulabilirim diye ümit etmiştim ve düşündüğümden iyi şeyler de çıktı.

Türlerin ne olduğunu henüz bilmiyorum ama şimdilik şu diatomları bulabildim:

https://www.instagram.com/p/CGmNZEspxZV/
https://www.instagram.com/p/CGmW7jypJVm/

Ayrıca gölde tipik ördek aileleri de vardı. Hatta bir balıkçıl da kısa süreli bir iniş de yaptı ama hemen uzaklaştı sonra. Anlaşılan gölde balık da varmış.

Kısa bir turdan sonra yine evin yolunu tuttuk.

Failure Function

Bu seferki algoritma aslında yine başka bir algoritmada kullanılan bir parça olacak. Basit metin arama algoritmasında bulmak istediğimiz metin parçasını ana metin üzerinde her adımda bir karakter kaydırarak üst üste gelen harflerin aynı olup olmadığına bakıyorduk. Bu yazıda bakacağımız algoritma her adımda bir karakter kaydırma sorununa bir çözüm bulmaya çalışacak.

Aradığımız metin parçasındaki harflerin özelliklerini kullanarak bazen birden fazla karakter kaydırma imkanını elde edebiliriz. Yani karakterleri karşılaştırırken fark olan ilk konuma kadar olan karakterlere göre birer karakter kaydırmanın bu başlangıç kısmında bir eşitlik yaratamayacağından emin olabilirsek bundan faydalanarak kaydırma adımını hızlandırabiliriz. Hedefimiz şu: Arama metnindeki ilk uyumsuzluğun konumuna göre kaç adım sıçrama yapmamız gerektiğini söyleyen bir tablo bulmak istiyoruz. Dolayısıyla normal arama işleminde yine karakterleri tek tek kontrol edeceğiz ama ilk farkta bu tablo bize bir sonraki arama için ne kadar sıçrama yapmamız gerektiğini (şansımız iyi giderse birden fazla) söyleyecek.

Wikipediadan aldığım bazı örnekleri vereyim şimdi.

             1         2  
m: 01234567890123456789012
S: ABC ABCDAB ABCDABCDABDE
W: ABCDABD
i: 0123456

Burada ana metin S ile aradığımız metin de W ile gösterilmekte. Burada i = 3 indeksli karakter ilk uyumsuzluğun olduğu yer. Şimdi W ile gösterilen karakter dizisini birer birer sağa kaydıracağım ama bu sırada S karakter dizisinde algoritmanın henüz görmediği yerlere X koyacağım. Bu X koyulu yerlere karşılık gelecek W karakterlerini de kullanmaya gerek olmayacak çünkü bu karakterleri henüz görmediğimizden buralarda eşitlik olup olmadığını bilmiyoruz.

             1         2  
m: 01234567890123456789012
S: ABCXXXXXXXXXXXXXXXXXXXX
W:  ABC
i: 0123456

İlk kaydırmadan sonra ilk konumda (i = 1) bir eşitsizlik var. Daha bakmaya gerek yok, bir kere daha kaydıralım.

             1         2  
m: 01234567890123456789012
S: ABCXXXXXXXXXXXXXXXXXXXX
W:   ABC
i: 0123456

Yine W parçasının başı yukarıdaki S dizisinin bilinen kısmının sonuyla uyuşmadı. Demek ki bu diziyi iki adım kaydırmak da işe yaramayacak. O zaman aramaya 3 adım kaydırarak devam etmek lazım.

Bu örnekten sonra iki şeye dikkat çekmek istiyorum.

  1. Aradığımız şey aslında W dizisinin başındaki bir dizinin (önek) yine W dizisinin sonundaki bir diziyle (sonek) uyuşup uyuşmadığı. İlk X nerede olursa olsun oraya kadar S dizisiyle yine aynı konuma kadarki W dizileri aynı olduğundan yukarıdaki fikri kullanabiliriz.
  2. İlk bakışta yine her adımda W dizisinin bir önekini bir kaydırıp kontrol ediyoruz gibi görünüyor ve böylece aramada yine her seferinde W dizisini bir karakter kaydırıp basit arama algoritmasına döneceğiz gibi geliyor ama aslında bunu sadece örnek olarak verdim. İleride bu tabloyu aramadan önce sadece arama metnini kullanarak bir kereliğine oluşturabileceğimizi göreceğiz.

Örnek:

             1         2  
m: 01234567890123456789012
S: ABC ABCDAB ABCDABCDABDE
W:            ABCDABD
i:            0123456

Burada ilk uyumsuzluk i = 6 konumunda oluşmuş. O zaman ana metinle aranan metin arasında i = 5 noktasına göre tam uyum vardır. O zaman aranan metnin o noktasına kadarki önekiyle ilgileneceğiz.

             1         2  
m: 01234567890123456789012
S: ABC ABCDAB ABCDABXXXXXX
W:            ABCDAB
i:            012345

Şimdi aranan metni birer kaydırdığımızda kendi önekiyle yine kendi soneki arasındaki uyumlara bakalım.

             1         2  
m: 01234567890123456789012
S: ABC ABCDAB ABCDABXXXXXX
W:             ABCDAB
i:            012345

i = 0 noktasında uyumsuzluk var. Yine kaydırmamız lazım.

             1         2  
m: 01234567890123456789012
S: ABC ABCDAB ABCDABXXXXXX
W:              ABCDAB
i:            012345

Uyumsuzluk devam ediyor. Yine kaydıracağız.

             1         2  
m: 01234567890123456789012
S: ABC ABCDAB ABCDABXXXXXX
W:               ABCDAB
i:            012345

Hala uyum bulunamadı. Kaydırmaya devam ediyoruz.

             1         2  
m: 01234567890123456789012
S: ABC ABCDAB ABCDABXXXXXX
W:                ABCDAB
i:            012345

Burada sonunda aranan W metninin iki karakterlik öneki ile yine W nin (tabii ki 6 karakterlik kısmı için, bu uzunluk en baştaki ilk uyumsuz nokta ile belirleniyor) iki karakterlik soneki arasında bir uyum bulundu. Demek ki tablomuzda ilk uyumsuzluk 6. konumda bulunursa 4. konuma kadar kaydırılmalı diye bir kayıt bulunmalı. Algoritma bu uyumsuzlukla karşılaştığında birer birer kaydırmak yerine hemen 4 karakter kaydırarak aradaki kontrolleri gönül rahatluğıyla atlayabilir.

Burada bir gözlemden daha bahsedeyim. Sağa doğru birer birer kaydırırken ilk uyumlu önnek, sonek çiftini bulduğumuzda kaydırmayı kesmemiz lazım. Yani en uyumlu olan en uzun önek, sonek çiftini arıyoruz. Bunun nedeni de aslında kolayca anlaşılabilir. Aranan metni kaydırdıkça bu metnin en son kısmı hep X ile gösterdiğimiz bölüme kayıyor, yani bu bölümde de uyumun devam etme hatta aranan metnin tamamının bulunma şansı var. Dolayısıyla bulunan ilk önek, sonek uyumunda durulmalı ki bu ihtimal gözden kaçırılmadan kontrol edilebilmeli.

Bir küçük nokta daha var ama onu zaten farketmişsinizdir. Önek ve soneklerin uyumuna bir kere kaydırdıktan sonra bakıyoruz. Kaydırmadan bakarsak her zaman uyumlu olurlar ve bu durumda algoritmamız kaydırmaya gerek yok diye saçma bir düşünceye kapılabilir.

Aşağıdaki linkten animasyon sayfasına girerek bu tablonun başta ana metne ihtiyaç duymadan nasıl hazırlandığını görebilirsiniz. Yani tabloyu arama algoritmasının en başında üretebiliriz ve sonra ana metinle beraber kolaylıkla kullanabiliriz. Bu kullanımı da başka bir yazı ve animasyonda göstereceğim.

Tablonun üzerindeki kısım önce indeks listesiyle başlıyor. İkinci satır ana metnin o ana kadar uyum sağlanmış kısmını gösteriyor. Bu farazi bir ana metin tabii ki, bütün işlemi aslında aranan metinde yapmama rağmen bu ana metin kısmını da göstermek istedim. Aranan metindeki uyumsuzluğun olduğu ilk nokta dolaylı olarak da ana metni o noktaya kadar belirlediği böylece daha kolay anlaşılır belki. Üçüncü satır aranan metnin tamamını gösteriyor. Son satır ise simulasyon sırasında kaydırılan kısmı gösteriyor. Yukarıdaki örneklerdeki W kısmı (ana metinle tam uyum sağlayan kısmı tabii ki) yani.

Tablonun başlık satırı indekslerden oluşuyor, yani yukarıdaki örneklerdeki i satırı. İkinci satır önek ve soneklerdeki en uzun uyumlu karakter dizisini gösteriyor. Son satır da algoritmanın indeks numaralı pozisyondaki uyumsuzluk için arama metnini kaç karakter kaydetmesi gerektiğini gösteriyor. Dikkat ederseniz index – maksimum uzunluk = kaydırma miktarı gibi bir eşitlik de var.

Simulasyon