Şapka stratejisi (Çözüm)

Soru:

Bu tür sorular ilk bakışta bana da bir çok insana olduğu gibi imkansız gelir. Bu nedenle önce bu engeli aşmak için basit versiyonlarını çözemeye çalışırım. Eğer bu basit durum çözümleri bazen çözüm için genellenebilir ya da ispat için fikir de verebilir.

Bu nedenle önce soruyu iki kişilik bir grup için çözmeye çalıştım. Kırmızı şapkayı K, mavi şapkayı M ile gösterirsem iki kişilik bir grup için olası şapka dizilimleri KK, KM, MK ve MM olacaktır. Dizilimler simetrik olduğundan herhangi biriyle başlayabilirim diye düşündüm. Ayrıca hislerime göre ilk başladığım dizilimi herkesin doğru mu yoksa herkesin yanlış mı tahmin etmesi gerektiği de çok önemli değildi. O zaman KK dizilimi için herkesin doğru tahmin yapması gerektiğini varsaydım. Bu iki kişi de kendi başlarındaki şapkaları görmeyecek ama bu dizilim olduğu zaman ikisinin de K demelerini istiyorsak, şöyle basit bir kural tanımlayabiliriz.

1. K gören kişi kendi şapkası için K tahmininde bulunur.

O zaman gerçek durumda kafalarında KK şeklinde şapkalar varsa tahminleri de KK olacaktır ve oyunu kazanacaklar. Tabii ki oyuncuların her biri kendi kafasındaki şapkayı görmediğinden KM ya da MK dizilimleri için başka bir kural daha tanımlamak gerekecek. K gören kişi K diyeceğine göre cevabı yanlış olacak, çünkü K gören kişinin kafaşında bu dizilimlerde M olacaktır. İlk kuralı iptal etme şansımız olmadığına göre bu dizilimlerde bütün oyuncuların yanlış tahmin yapması gerekecek ve bunu garantilemek için aşağıdaki kurala ihtiyacımız olacak.

2. M gören kişi kendi şapkası için M tahmininde bulunur.

Bu iki kuralı kullanırsak MK diziliminde tahminler KM, KM diziliminde ise MK olacak. Yani bütün grup tamamen yanlış tahminler yaparak oyunu yine kazanacak.

Şimdi görülebilen şapkalar ile yapılabilecek bütün tahminleri kurallara bağladığımıza göre son dizilimin bu kurallara uygun bir şekilde oyunu kazandırıp kazandırmadığına bakalım.

MM diziliminde her oyuncu M göreceğinden ikinci kurala göre kendi şapkaları için M tahmininde bulunacaklar, yani grubun tahmini MM olacak ve bu da doğru cevap olduğundan oyunu kazanacaklar.

İki kişilik grup için çözüm çok basitti. Duruma biraz daha ısınabilmek için üç kişilik bir grup için de çözümü denedim. Bu sefer de aynı sırayı izledim. KKK dizilimi için doğru tahmin olan KKK cevabını üretmek için ilk kuralı tanımladım.

1. KK gören kişi kendi şapkası için K tahmininde bulunur.

İkinci adım olarak da KK gören ama kendi başında K yerine M olan kişinin dizilimine baktım. Bu durumda başında M olan birinci kurala göre yanlış tahminde bulunacağından diğerleri de yanlış tahminde bulunmak zorunda. Bunun çözümü de ikinci kuralda.

2. MK gören kişi kendi şapkası için M tahmininde bulunur.

Böylece MKK diziliminde tahminler KMM olacak, yani herkes yanlış tahminlerde bulunacak. Bir sonraki adım da MMK dizilimi olmalı. Elimizde MK gören kişi için kural olduğuna göre bu kuraldan MM gören kişi kuralına geçiş de kolay olacaktır. MMK dizilimindeki iki M de MK gördüğünden ikisi de M tahmininde bulunacak. Yani kafasında K olan da doğru tahmin yaparsa kazanacaklar. Bu durumda yeni kuralımız aşağıdaki gibi olmalı.

3. MM gören kişi kendi şapkası için K tahmininde bulunur.

Dizilimlerin kendi içindeki sıralamalarını göz ardı edersek (yani KM ve MK görmek aynı şeyler ise) o zaman bütün kuralları bulmuş olmam gerekiyor. Bu kurallar ile MMM dizilimini test edersek de oyuncuların KKK tahmini yapması gerekiyor. Herkes yanlış tahmin yaptığından grup oyunu yine kazandı. Aşağıda üç kişilik grup için çözümü bir tabloda sunuyorum.

[table id=67 /]

Hazır işe yarayabilecek bir şey bulmuşken dört oyuncu ile de deneyeyim dedim. Bunun için kyukarıdaki adımları uyguladım. Görmek istediğim şey biraz da kuralların sadece çoğunluğa mı yoksa sayısal değerlere mi bağlı olduğuydu. Yani KKK ile KKM görmek aynı tahmine mi yol açacaktı? Neyse yukarıdaki yöntemi adım adım uyguladım ve şu dört kuralı buldum. Bu kuralları kullanarak da aşağıdaki tabloyu elde ettim.

1. KKK gören kişi kendi şapkası için K tahmininde bulunur
2. KKM gören kişi kendi şapkası için M tahmininde bulunur
3. KMM gören kişi kendi şapkası için K tahmininde bulunur
4. MMM gören kişi kendi şapkası için M tahmininde bulunur

[table id=68 /]

Dört kişilik oyunda anladığım şey kuralların sadece basit bir çoğunluk kararı olmadığıydı, çünkü KKK görme ile KKM görme farklı renk tahminlerini gerektiriyordu.

Bu noktada hala bir ispattan uzağım ama şimdiden tekrar eden düzenli örnekler bulduğumu düşünüyorum. Örneğin kişinin gördüğü M sayısı tek sayı ise, kendi şapkası için M tahmininde bulunmalı ve eğer M sayısı çift ise bu sefer K tahmininde bulunmalı. Daha büyük oyuncu sayılarıyla bu düzeni kontrol etmek için açıkçası biraz tembelim. Bunun yerine ortaya attığım bu tezi ispatlamayı deneyebilirim.

N tane oyuncu olduğunu var sayayım. Bu oyuncuları 1 ve N-1 kişilik iki gruba ayırayım ve pozisyonu bir kişilik grup açısından düşüneyim. Var sayalım çift sayıda M görüyorum. O zaman ortaya attığım kurala göre göre K demem lazım. Eğer başımda K varsa bu doğru bir tahmin olacağından diğer herkesin de doğru tahminde bulunması gerekecek. Bakalım bu kuralla diğerleri de doğru tahminde bulunacak mı? Diğer gruptaki bütün K şapkalı oyuncular da benim gibi çift sayıda M göreceğinden hepsi de K diyecek. Demek ki K şapkalı herkes doğru tahminde bulunuyor. M şapkalılara bakayım bir de. M şapkalı herhangi biri tek sayıda M şapka görecektir, çünkü toplamda çift sayıda M şapka var ve kendisini çıkarınca tek sayıda kalır. Tek sayıda M gören de kurala göre M diyeceğinden M şapkalıların da hepsi M tahmininde bulunacak. Demek ki bu durum için kural oldukça güzel çalışıyor.

Şimdi yine çift sayıda M gördüğüm durumda kafamda M olduğunu var sayayım. Kurala göre K demem gerekecek. Bu tahminim yanlış olacağından oyunu kazanmak için herkesin yanlış tahminde bulunması gerekecek. Şimdi bunu kontrol edeyim. Benim başımda M varsa ve ben çift sayıda M görüyorsam o zaman toplamda tek sayıda M şapka vardır. Demek ki bütün K şapkalı oyuncular tek sayıda M görecek ve kurala göre hepsi M demek zorunda olduğundan hepsi de yanlış tahminde bulunacak. Buraya kadar çok güzel. M şapkalı bir oyuncu da bu sefer çift sayıda M göreceğinden kurala göre K tahmininde bulunacak. Yani M şapkalı herkes de yanlış tahminde bulunacak. Böylece oyunu yine kazanmış oluyoruz.

Grupta tek sayıda M gördüğüm durumda başımda K varsa kuralı uyguladığımızda herkesin yanlış tahmin yapacağını ve eğer başımda M varsa herkesin doğru tahmin yapacağını okuyuculara alıştırma olarak bırakıyorum.

Demek ki gerçekten de oyunu kazanmak için bu kural yeterliymiş:

Kural: Çift sayıda M gören K tahmininde bulunacak, tek sayıda M gören de M tahmininde bulunacak.

Sonic Pi

Sonic Pi program yazarak müzik yapmak için hazırlanmış bir program, ya da programlama dili.https://sonic-pi.net/ adresinde program ile ilgili bilgiler bulunabilir ve yine oradan program indirilebilir. Aslında program raspberry pi için yapılmış ama Windows ve Mac için de versiyonlar yukarıdaki adreste bulunuyor. 

Ben evdeki Ubuntu 19.04 yüklü dizüstü bilgisayarıma bu programı kurup basit müzik projeleriyle uğraşmayı düşünüyordum. Örneğin Ümit’e müzik derslerinde yardımcı olacak basit alıştırmalar hazırlayabilirdim. 

Hemen synaptic üzerinden uygulamayı aradım ve bulunduğunu görünce heyecanla yükledim. Programı konsoldan çalıştırdığımda ise uzun süre bir hareket olmadığını gördüm. Daha sonra konsoldaki logoyu aşağı kaydırınca komutun hemen altında şu hata mesajını gördüm:

$ sonic-pi
[GUI] - could not open file /proc/asound/card0/pcm0p/info
                                ╘
                         ─       ╛▒╛
                          ▐╫       ▄█├
                   ─╟╛      █▄      ╪▓▀
         ╓┤┤┤┤┤┤┤┤┤  ╩▌      ██      ▀▓▌
          ▐▒   ╬▒     ╟▓╘    ─▓█      ▓▓├
          ▒╫   ▒╪      ▓█     ▓▓─     ▓▓▄
         ╒▒─  │▒       ▓█     ▓▓     ─▓▓─
         ╬▒   ▄▒ ╒    ╪▓═    ╬▓╬     ▌▓▄
         ╥╒   ╦╥     ╕█╒    ╙▓▐     ▄▓╫
                    ▐╩     ▒▒      ▀▀
                         ╒╪      ▐▄

       _____             __        ____  __
      / ___/____  ____  /_/____   / __ \/_/
      \__ \/ __ \/ __ \/ / ___/  / /_/ / /
     ___/ / /_/ / / / / / /__   / ____/ /
    /____/\____/_/ /_/_/\___/  /_/   /_/

     The Live Coding Synth for Everyone

            http://sonic-pi.net

libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile

Sonic Pi adresinde pek faydalı bir bilgi bulamadım. Ayrıca programın yaratıcısı olan Sam Aaron’un genel olarak Linux’un iyi desteklenmediği yönündeki bazı mesajları da moralimi bozmaya yetti. Hata mesajını google’a yazdığımda ise stackoverflow adresinde bazı mesajlar buldum. Bu mesajlarda yazan açıklamaları uygulayınca sorun şu şekilde çözüldü.

Bilgisayarda iki ses kartı olması durumunda bu tür bir sorunun meydana gelebileceğini söyleyen çözümde ilk olarak ses kartları hakkında bilgileri toplamam gerekti. Bunun için aşağıdaki komutu yazdım:

sudo lshw -c multimedia

Benim bilgisayarımda çıktı aşağıdaki gibi oldu.

*-multimedia:0
description: Audio device
product: Advanced Micro Devices, Inc. [AMD/ATI]
vendor: Advanced Micro Devices, Inc. [AMD/ATI]
physical id: 0.1
bus info: pci@0000:04:00.1
version: 00
width: 32 bits
clock: 33MHz
capabilities: pm pciexpress msi bus_master cap_list
configuration: driver=snd_hda_intel latency=0
resources: irq:55 memory:fe388000-fe38bfff
*-usb
description: Video
product: HP TrueVision HD Camera
vendor: SunplusIT Inc
physical id: 4
bus info: usb@1:4
version: 0.05
capabilities: usb-2.01
configuration: driver=uvcvideo maxpower=500mA speed=480Mbit/s
*-multimedia:1
description: Audio device
product: Advanced Micro Devices, Inc. [AMD]
vendor: Advanced Micro Devices, Inc. [AMD]
physical id: 0.6
bus info: pci@0000:04:00.6
version: 00
width: 32 bits
clock: 33MHz
capabilities: pm pciexpress msi bus_master cap_list
configuration: driver=snd_hda_intel latency=0
resources: irq:54 memory:fe380000-fe387fff

Bu çıktıda kullandığım bilgiler multimedia:0 ve multimedia:1 bloklarındaki configuration: driver=snd_hda_intel latency=0 satırlarındaki sürücü isimleri olan snd_hda_intel oldu.

Ardından şu komutlarla da kartların kullandığı isimleri öğrendim:

cat /proc/asound/card0/id
cat /proc/asound/card1/id

Benim sistemindeki kartlar sırasıyla Generic ve Generic_1 isimlerini kullanıyor.

Bundan sonra da /etc/modprobe.d./alsa-base.conf dosyasının sonuna yukarıda elde ettiğim bilgileri kullanarak şu satırları ekledim.

options snd_hda_intel id=Generic index=0
options snd_hda_intel id=Generic_1 index=1

Bilgisayarı yeniden başlattıktan sonra programı normal çalıştırabildim.

Ek not: Program çalışmasına çalıştı ama Sonic Pi çalışırken youtube videolarını oynatamadığımı fark ettim. Henüz bu soruna bir çözüm bulamadım.

Bahçedeki gölcükte hayat

Bahçedeki yarım metrekare bile olmayan bir gölden aldığım su örneği büyük canlı cenneti çıktı.

Su piresine benzer bir canlı. Çıplak gözle de görülüyorlar, tabii bu şekilde değil.
Bir kurt gibi ama sanki ayakçıklar da var. Yoksa bir larva mı?
İnsan bu kadar da kızdırılmaz ki …
https://www.instagram.com/p/B0visNapEJO/?hl=de
Bir tür yosun olsa gerek
https://www.instagram.com/p/B0vhnZZJ3j_/
Başka bir yosun türü olsa gerek

Bordo yayın

Hangi sene hatırlamıyorum ama ortaokul yıllarım olmalı. Okuldan çıkıp öğleden sonra eve geldiğime göre öyle olmalı. Sonrasında İstanbul’daydım. Çok da emin olamıyorum ama. Otobüsle gelmiş olmalıyım. Normalde servisle gelirdim oysa. Otobüste fısıltılarla o gün yapılan bordo yayından bahsediliyordu. Bordo olduğuna ve yadırgamadığıma göre renkli yayın dönemine geçildikten sonra olmalı. Hatırladığım ilk renkli yayın 1982 dünya kupasıydı. Alt çaprazdaki komşumuz renkli televizyon almıştı ve kupanın ilk maçını seyretmek için misafirliğe gitmiştik. Babam anlata anlata bitiremiyordu, Maradona diye bir süper kahramanı seyredecektim. Ne yazık ki babam dört yıl sonra haklı çıkacaktı. Neyse işte, kısaca1982’den sonra 1988’den önce olmalı.

Diğer taraftan otobüsteki konuşmaların bana çok anlamsız geldiğini hatırlıyorum. Konuşmalar fısıltıydı ama çok da heyecanlıydı. Bordo sanki yasak kelimeydi. Bir de yayını kimse görmemişti. Herkes kaynından duymuştu. Heralde vericide bir sorun vardı diye düşündüm, bu kadar insanın aynı anda alıcılarının ayarlarını bordoya çevirebileceğine pek ihtimal verememiştim. Eve gelince annemlere de bordo yayını sormuştum ama tatmin edici bir cevap alamadığımı hatırlıyorum. Televizyonu açtığımda da bütün renkler normaldi. Yayını kaçırmıştım. Porno ile tanışmam bir süre daha bekleyecekti.

Sefa Sirmen’in belediye başkanlığı yaptığı dönemlerde de diğer arkadaşları kıskandıran televizyon yayınlarımız devam etti. Lisede okurken eve geldiğimde (yatılı okuyordum) Eurosport seyredebildiğimi hatırlıyorum. Larry Bird ve Magic Johnson kapışmalarına yetişebildim bu sayede. İstanbul’da yaşayanların böyle imkanları yoktu.

Zamanla televizyon kanalları da yavaş yavaş çeşitleniyordu. Cine 5 şifreli yayınlara başlamıştı. Tabii ki İzmit ve çevresinde belediye bu yayını şifresiz veriyordu. Bu yayınlar o kadar normal olmuştu ki insanlar artık otobüste bordo bile demiyordu. Hafta sonları Gölcük’e geldiğimde gece yarısı yayınlarını yalnız seyredebilmek için en sıkıcı muhabbetler açılırdı. Dayanamayıp gözlerini kapatan hemen yatağına gönderilirdi. İçerdeki odada yatan babaannem de her on dakikada bir salona gelip “Kakun, yatun” derdi. O saatte neden hala uyumazdı ki? Heralde o da Cine 5 yayınını bekliyordu diye düşünürdüm. Bir keresinde bu “kakun, yatun” inatlaşması öyle uzadı ki babaannemle beraber hiç planlamadığımız bir şekilde ve de diğer kanaldaki filme bitmeden yetişebilme ümidiyle Okan Bayülgen’in programını seyrettik. Tabii ki babaannem hepimizden dayanıklı çıktı. Sabah da kahvaltıda ne seyrettiğimizi bütün ev halkına kahkahalarla tekrar anlattı: “Kisa poylu bi adam, dik yokuşa atlayi ve ossurdum sizi diye bağuriy”. Evet, babaannem uçurdum kısmını yanlış anlamıştı ama olsun, en azından o gece birimiz çok eğlenmişti.

Neyse ki daha sonraki yıllarda İstanbul da bizim seviyemize geldi ve televizyonda SAT1 ve RTL yayınları vermeye başladı da her hafta sonu Gölcük’e dönmeme gerek kalmadı.

Cladocera, Daphnia ve diğerleri

Bu hafta sonunda önceki su örneklerimden birinde su piresi türü canlılara rastladım. Aynı örneği daha önce de kullanmama rağmen o denemelerde belki de lameli dikkatsiz kullanmam nedeniyle hayvanları ezip parçalamış olabilirim. Bu sefer lamel kullanmamaya çalıştım ama o zaman da çok hızlı hareket ettiklerinden pek iyi çekimler yapamadım.

su piresi
su piresi
kurtlar

Bir müzik ve fizik deneyi

Müzik aletleri neden aynı notalar için farklı sesler üretir? Yani aynı frekanstaki la notasının tınısı neden flütte ve gitarda çok farklıdır?

Bu deneyde bazı enstrümanlarda çeşitli notaların bileşenlerine bakacağım. Bu bileşenleri inceleyebilmek için sesleri cep telefonuyla kaydettim ve daha sonra bilgisayarda audacity programında notaları ayrı ayrı kestim ve her birinin frekans uzayındaki görünüşüne baktım. Bu deneyde nicelikten çok niteliğe ağırlık verdim. Grafiklerde ve tablolarda belirttiğim notaları çalmaya çalıştım ama çeşitli nedenlerden ötürü (yanlış akord, müzik aletinin ve de en önemlisi müzisyenin kalitesinde yetersizlikler vb.) audacity bazı notalarda başka isimler önerdi. Bunları bu deneyde göz ardı ettim. Frekans uzayındaki grafiklerde program bütün bant aralığını kullandı. Spektrumu logaritmik göstertseydim bütün ekranı kullanabilirdim ama o zaman da spektrumun genel şeklini hayal etmek daha zor olabilirdi. Bu nedenle tepe noktalardaki frekansları kolayca okunabilsinler diye ayrıca tablolara koydum. Temel frekans olarak audacity programının önerdiği temel frekansı kullandım. Tabii ki biraz daha yüksek bir frekans kullanarak hataları daha da küçültmek mümkündü ama dediğim gibi bu deneyde nicelik ön planda değil.

Yan flütte do notası

Bu notanın frekans uzayındaki görüntüsü ise şöyle çıktı:

Yan flütte do notasının frekans uzayındaki görünüşü

Sol baştaki frekans bileşeni bu notanın temel frekansı oluyor. Diğer sivri noktalar da bu tonun armonik sesleri oluyor. Peki armonik seslerin frekansları acaba bir kurala uyuyor mu? Bunun için sivri alanların en yüksek olduğu frekansları aşağıdaki tabloya geçirdim.

[table id=53 /]

Son sütunda da görüldüğü gibi armonik seslerin frekansları ile temel frekansın tamsayı katları arasındaki fark çok küçük. Acaba bu bir tesadüf mü diye flütte daha başka notaları da denedim.

Yan flütte re notası
Yan flütte re notasının frekans uzayındaki görünüşü

Bu ikinci notanın (Re) tablosu ise şu şekilde oldu:

[table id=54 /]

Bu tabloda farklar biraz daha büyük çıktı.

Yan flütte mi notası
Yan flütte mi notasının frekans uzayında görünüşü

Şimdi bu üçüncü notanın (Mi) tablosuna bakalım.

[table id=55 /]

Yan flütte fa notası
Yan flütte fa notasının frekans uzayında görünüşü

Dördüncü notanın (Fa) tablosu ise aşağıdaki şekilde

[table id=56 /]

Yan flütte sol notası
Yan flütte sol notasının frekans uzayında görünüşü

Beşinci notanın (Sol) tablosu:

[table id=57 /]

Yan flütte la notası
Yan flütte la notasının frekans uzayında görünüşü

Altıncı notanın (La) tablosu:

[table id=58 /]

Yan flütte si notası
Yan fl,tte si notasının frekans uzayındaki görünüşü

Yedinci notanın (Si) tablosu:

[table id=59 /]

Armonik seslerin temel frekansın tamsayı katları olduğu bu tablolardan anlaşılıyor. Peki bu özellik sadece flüte ait olabilir mi? Bunu test etmek için gitarla da aynı deneyi yaptım. Uzun süredir çalmadığım gitarı kısaca akord ettim ve denemelere başladım ama akordu çabucak bozulmuş olabilir.

Gitarda do notası
Gitarda do notasının frekans uzayında görünüşü

Düşük frekanslar birbirine çok yakın olduğundan görüntü net seçilemiyor olabilir ama bu değerleri aşağıdaki tabloda da görebiliriz.

[table id=60 /]

Gitarda re notası
Gitarda re notasının frekans uzayında görünüşü

[table id=61 /]

Gitarda mi notası
Gitarda mi notasının frekans uzayında görünüşü

[table id=62 /]

Gitarda fa notası
Gitarda fa notasının frekans uzayındaki görünüşü

[table id=63 /]

Gitarda sol notası
Gitarda sol notasının frekans uzayındaki görünüşü

[table id=64 /]

Gitarda la notası
Gitarda la notasının frekans uzayındaki görünüşü

[table id=65 /]

Gitarda si notası
Gitarda si notasının frekans uzayındaki görünüşü

[table id=66 /]

Bu tablolarda da görüldüğü gibi armonik sesler de temel tonun tamsayı katları olmakta. Ayrıca yan flütle gitarın spektrumlarında armonik seslerin şiddetlerinin değişimi de oldukça farklı. Hatta bu şiddetler aynı enstrüman içinde de farklı. İşte bu farklar sayesinde her enstrümanda aynı notanın tınısı çok farklı oluyor.

Saçmalık için zeka şart

Bir müşterimiz için özel makineler üretiyoruz. Bu makineler ürünü röntgen ışınlarıyla inceliyor ve ürünün yoğunluk profilini müşterinin sistemine aktarıyor. Sonra bu profil yardımıyla müşteri ürünü doğru büyüklüklerde dilimliyor.

Ana hatlarıyla oldukça basit bir uygulama gibi görünüyor ama tabii ki arka planda bir sürü işlem yürütülmekte. Bu yazıda bu işlemlerin sadece birisinden bahsetmek istiyorum.

Müşterimiz bazı durumlarda yoğunluk profili bilgilerini sıfırlamak istediğini söyledi. Biz de bu isteği yerine getirebileceğimizi söyledik. Müşteri bu işlemin başarılı olup olmadığını bilmek istediğini de ekledi. “Sorun değil, aynı haberleşme kanalından işlemin sonucunu bir mesajla iletebiliriz” dedik. Anlamadığımız bir nedenden ötürü müşteri bunu istemedi. Bunun yerine “sıfırlama başarılı olduysa makinenin bantları hareket etsin” dedi. Kullanıcılar makinenin dönen bantlarını görünce işlemin başarıyla yürütüldüğünü anlayacaklardı. Bizim için oldukça garip bir istekti. Normalde haberleşmenin cevabı aynı kanaldan iletilirdi. Alarm türü durumlarda bu cevap makinenin üzerindeki lambalarla ya da siren türü sinyallerle de desteklenirdi ama bantların hareket ettirilmesi ilk kez duyduğumuz bir istekti. Anlaşılan projeyi yapan elemanlar da müşteriyle bunu tartışmaya (belki de daha fazla tartışmaya) niyetli değillerdi ve bu isteğin yerine getirilmesine karar verdiler.

Bu çözüm tabii ki yeni problemlere gebeydi. Üretim bandının zaten kendi görevi vardır. Ürünleri taşımak. Bunu bir de olağan şeklin dışında kullanıcı arabirimi olarak kullanmak iki sistemi de birbiriyle senkronize etmek demekti. Tabii ki bu sorunları hemen göremedik. Örneğin, bandın hareket etmesi, üzerinde ne varsa onun da hareket etmesi demektir. Yani bilgilerin sıfırlanması isteği geldiğinde eğer bant üzerinde bir ürün vardıysa, o ürün dilimleme birimine kadar iletiliyordu fakat dilimleme biriminin bandı hareket etmediğinden ürün orada duruyordu. İlk bakışta sorun yok gibi görünse de hareket etmeye devam eden üretim bandı ürüne sürtündüğünden ürünü deforme ediyordu ve dolayısıyla dilimleme birimine gönderilen son profil bilgileri de geçersiz oluyordu. Bu problem tespit edildiğinde de müşteri geri adım atmadı ve tabii ki biz böyle bir durumda ürünün bir sonraki banda iletilmesini engelleyecek önlemler almak zorunda kaldık.

Bundan başka bir sorun daha vardı. Bantlar ne zamana kadar hareket ettirilecekti? Burada da ya belli bür süre sonra kontrol birimi bantları kendiliğinden durduracaktı, ya da kullanıcı bantların hareketini gördükten sonra başka bir komutla durduracaktı. Madem bantların hareketi kullanıcının görmesi içindi o zaman kullanıcı bantları durdursun dendi. Bunun için de başka bir mesaj tanımlandı. Mesajlar aslında çok masraflı şeyler değil ama isimleri düşündüğümüzden daha önemli. Sadece makineler arasında değil programcılar arasında da iyi bir iletişim için uygun isimler seçilmeli. Burada seçilen isimler de ilginçti. Sıfırlama için “sıfırlamayı başlat” şeklinde bir isim seçildi. Normalde bu tür bir işlem için seçilecek bir isim değil. Aslında “sıfırla” gibi bir isim daha uygun. Bir terslik olduğu daha buradan belliydi. Diğer mesaj da “sıfırlamayı bitir” ismini aldı. Bu da ters bir isim çünkü bu komut gönderildiğinde aslında sıfırlama işlemi çoktan bitmiş olmalı (Bitmemiş olma ihtimaline girmek istemiyorum bile). Bu komutun doğru adı “bandı durdur” olabilirdi ama o zaman da bu komutun her zaman (normal üretim sırasında da) verilebileceği izlenimi oluşabilirdi ki bu da doğru değil. Her ne kadar felsefeyi biraz sevsek de bu isim konusunu çok uzun tartışmak istemediğimizden yukarıdaki “başlat” ve “bitir” komutlarını aldık ve mesajları programladık.

Yıllar sonra müşteriden yeni bir istek geldi. Kendi kullanıcı arabirimini programlamak istiyordu. Yeni sistem eski işlevleri yerine getirebilmeliydi. Mesajları ve haberleşme sistemini tanımlamaya başladık ve karşımıza yine sıfırlama komutu çıktı. Müşterinin kullanıcı arabirimini programlayan elemanla bunu konuştuk ve bir cevap mesajıyla bunu kolayca halledebileceğimizi söyledik. O da bunu mantıklı buldu ve müşteriyle konuşacağını söyledi. Ne yazık ki müşteriden yıllar önce aldığımız cevabın aynısı geldi. Bantlar hareket etmeli! Heralde yıllarca kullana kullana kullanıcılar bu sinyale o kadar alıştı ki yeni ve daha kolay bir şey istemiyorlardı ya da yeni şeyin eğitimi çok daha pahalı olacaktı. Detaylarını bilemiyorum ama şu anda “sıfırlamayı başlat” ve “sıfırlamayı bitir” diye iki mesaj programlıyorum.

Bir sayı tuttum yine (Çözüm)

Soru:

Her tamsayının 1’e bölündüğü açık. O zaman birinci önerme doğrudur.

Bundan sonraki önermeleri ikişer ikişer değerlendirelim, yani ardışık iki tanesinin yanlış olduğunu varsayalım.

Aklımda tuttuğum sayı 2’ye ve 3’e bölünmüyorsa 2’nin ve 3’ün katlarına da bölünmez. Eğer tuttuğum sayı için bu iki önerme yanlış ve diğerleri doğru olsaydı tuttuğum sayı 4’e bölünüyor olmalıydı ama 4’e bölünen bir sayı aynı zamanda 2’ye de bölünmeli. Bu durumda ikiden fazla önerme yanlış olacaktı. O zaman bu iki önerme aynı anda yanlış olamaz. Soruya göre ardışık iki önerme yanlış olacağına göre en azından bu önermelerin ilki yanlış olamaz, çünkü yukarıda da gördüğümüz gibi ilk önerme doğruydu. Demek ki tuttuğum sayı 2’ye bölünüyor.

Bu sayı 3’e ve 4’e bölünmüyorsa bunların katlarına da bölünmez. Demek ki 3’e de bölünüyor.

Tuttuğum sayı 4’e ve 5’e bölünmüyorsa 4’ün ve 5’in katlarına da bölünmez. O zaman tuttuğum sayı dörde bölünüyor olmalı.

Bu yöntemi kullanarak önermelerin ilk onbeş tanesinin doğru olduğu gösterilebilir. Eğer sayı 15’e ve 16’ya bölünmüyorsa 30’a da bölünmez. O zaman da en az üç önerme yanlış olur. Demek ki 15’e de bölünüyor.

Peki aradığımız iki önerme de 15’ten büyük sayıları içeriyorsa nasıl bir yöntem izleyebiliriz? O zaman da diğer bütün önermeler doğru olacağından bu iki önermedeki sayılardan birini 15’ten küçük, aralarında asal, iki sayının çarpımı şeklinde yazmaya çalışalım. Eğer başarırsak bu iki önermenin aynı anda yanlış olamayacağını gösterebiliriz. Bu

Örnek: Tuttuğum sayı sadece 19 ve 20 sayılarına bölünmesin. 30'a kadar diğer
bütün sayılara bölünsün. Bu sayı hem 4'e hem de 5'e bölünebildiğine göre o zaman
bu iki sayının çarpımına da, yani 20'ye de bölünebilmek zorunda. Demek ki
varsayımım yanlışmış ve tuttuğum sayı ya 19 ve 20 sayılarına bölünmüyor olamaz. Burada 15'ten küçük sayılar seçilirken dikkat edilecek şey iki sayının da
aralarında asal olması. Örneğin bu örnek için 2 ve 10 sayılarını da alabilirdik.
İkisinin de çarpımı 20 ama bir sayının bu iki sayıya bölünmesi bu sayının 20'ye
bölünmesi anlamına gelmez. En basit örnek olarak 10 sayısı hem 2'ye hem de 10'a
bölünür ama 20'ye bölünmez.

Bu küçük analizden sonra kalan sayıları daha hızlı eleyebiliriz sanıyorum. Aşağıdaki tabloda yanlış olabilecek ardışık önermeleri ve bu iki önermenin aynı anda yanlış olamayacağını (diğer bütün önermelerin doğru olduğu takdirde) gösteren açıklamalar yazdım. Ayrıca okumayı kolaylaştırmak için yanlış olacak önermelerin de tersini yazdım, yani “Bu sayı 5’e bölünüyor” önermesi yanlış olacaksa “Bu sayı 5’e bölünmüyor” şeklinde yazdım.

[table id=52 /]

Bu tabloda da görüldüğü gibi 16 ve 17 önermeleri dışında her durumda ya bu iki önermenin ikisi birden yanlış olamıyor ya da doğru olması gereken önermelerden biri daha yanlış olmak zorunda oluyor. Tablonun ilk yarısında eğer bu sayı önermedeki sayılardan birine bölünmüyorsa bu sayının iki katına da bölünemeyeceğinden yanlış önerme sayısı ikiden fazla oluyor. Tablonun ikinci yarısında ise tuttuğum sayı tablonun ilk yarısındaki sayılara bölünmek zorunda olduğundan verilen önerme çiftlerindeki sayıların birini bu ilk onbeşte aralarında asal iki sayının çarpımı halinde yazmaya çalışıyoruz. Eğer bunu yazabilirsek sayımız yanlış olması gereken önermedeki sayıya da bölünmek zorunda olacağından bu iki önerme aynı anda yanlış olamıyor. Bu şekilde tabloda her komşu önerme için karşı örnekler mevcut, sadece bu sayı 16’ya bölünmüyor ve bu sayı 17’ye bölünmüyor önermeleri için karşı örnek yok. Demek ki soruda aranan önermeler bunlar olmalı.



Kurallı ifadeler (regular expression) için kullanışlı bir alet

Herhangi bir dilde program yazarken arasıra kurallı ifadelere ihtiyacım olur. Yeterince sık ihtiyacım olmadığından da kullanımını sadece ana hatlarıyla hatırlayabilirim ve ayrıntılar için internette aramalar yapmam gerekir. Sonra da bulduğum şeyleri denemeye başlarım. Genelde uygulamalarımı eclipse ile programladığımdan denemeler için bir eclipse uygulaması kullanırım.

Bu yıl anneler günü öncesinde annem bana bir dizüstü bilgisayar hediye etti. Evet, garip bir aile olduğumuzun farkındayım ama konumuz bu değil. Bilgisayara linux ve eclipse kurdum. Ardından da şirkette kullandığım programı yüklemeyi denedim ama nedense başaramadım. Bunun üzerine çabucak internet tarayıcısı içinden kullanabileceğim bir tane arayayım dedim, nasıl olsa sık sık ihtiyacım olmayan bir şey. Aradığım araç hemen ilk sırada karşıma çıktı: https://regex101.com/

Oldukça düzenli hazırlanmış bir sayfa. Denenen ifadeyi çeşitli programlama dillerinde de gösteriyor ama benim ihtiyacım olan dil orada yoktu. Bu eksiklik bence göz ardı edilebilir. Özellikle sağ tarafta kullanılan ifadenin açıklandığı kısım çok etkileyici bir özellik. Bu sayfayı kurallı ifadeleri öğrenmek isteyenlere ya da arada sırada ihtiyacı olacaklara kesinlikle tavsiye ederim.

Orantılar

Benim zamanımda orantılar ilkokul konusuydu sanıyorum. Bizim çocuklar da yanlış hatırlamıyorsam ortaokulun hemen başında, faiz hesaplarından hemen önce öğrenmişlerdi. Teknik olarak orantı hesaplarını çabuk anlamıştım ama ne zaman doğru orantı, ne zaman ters orantı kullanmam gerektiğini anlamam zaman almıştı. Çocuklara öğretmeyi denerken de aynı zorluğu gördüm. Sanırım ben öğretmeyi denerken anlama kısmına çok takılıp kalıyordum. Aşağıdaki şekilde yaptığım denemeler hiç verimli olmamıştı:

Bir duvarı iki işçi beş saatte boyarsa beş işçi aynı duvarı kaç saatte boyar?

Soruyu okuyan çocuk problem üzerinde hiç düşünmeden sayıları yerlerine koymaya başlıyor. Tabii ki yanlış orantı kurup yanlış bir sonuç buluyor. Burada da durmuyor (aslında duruyor demek daha doğru olabilir) ve sonucun doğru olup olamayacağını da düşünmüyor.

Mantık yürütmeye önem veren biri olarak her seferinde çocuklara sorular sorup doğru yolu bulmalarını sağlamaya çalıştım ama o da işe yaramadı:

+ Bir duvarı, iki işçi mi beş işçi mi daha hızlı boyayabilir?

- İki işçi.

+ Yani işçi sayısı artınca gereken süre azalmalı, değil mi?

- Evet.

+ O zaman hangi orantıyı kullanmak lazım?

- Doğru orantı.

+ Hayır! Tabii ki ters orantı. Doğru orantı biri artarken diğeri de artarsa kullanılır.

Bu mantıksal geçişler henüz o beyinlere göre değildi. Başka bir yol bulmalıydım ama sınava da az kalmıştı. Ben de kısmi bir ezberleme yöntemi olarak çocuklara “eğer soruda şu kelime varsa doğru orantı, şu kelime varsa ters orantı kullanın” diye kendimce kötü bir yol göstermeye başladım. Örneğin duvar mı boyanacak? O zaman ters orantı. Oyuncak mı üretilecek? Doğru orantı. Arada çaktırmadan ufak ufak ipuçları vermeyi de aksatmıyordum ama. “Duvar boyuyoruz, toplam yapılan iş sabit. O zaman ters orantı olur.” Şimdi düşünüyorum da bu konuyu bir daha anlatmaya kalksam bu nedenleri anlatmazdım. Gerçek bir duvar , ya da duvar bulamazsam kağıt boyatırdım. Bir sayfaya belli bir süre içinde aynı kelimeyi defalarca yazdırırdım. Bu şekilde ters ve doğru orantıyı yaşamalarını sağlayabilirdim.

31 Mart yerel seçimleri gösterdi ki buna benzer sorunlar sadece o yaşlarda kalmıyormuş. Nisan ortasına kadar süren yeniden sayımlar sırasında en sıkça paylaşılan iletilerden biri şu şekildeydi (Sayıları ben uydurdum) :

"10 milyon oy bir günde sayıldı, iki haftadır yüzbin oy sayılıyor". 

Bu gönderiyi yapanlar heralde şöyle demek istiyordu: “Basit bir doğru orantıyla hesaplarsak yüzbin oy, onmilyonun yüzde biri olduğuna göre, sayımı da bir günün yüzde biri kadar sürmeliydi, yani yaklaşık onbeş dakika. Acaba oralarda nasıl dümenler dönüyor?”

Seçim ve sayım mekanizmaları yeni icat edilmiş bir şey değil, ülkemizde bile uzun zamandır kullanılmakta olan bir şey. Bir sayım ekibinin bin tane oyu iki saatte sayabildiğini varsayalım. O zaman on milyon oyu saymak için yirmibin saate ihtiyaç var. Bu da sekizyüz günden fazla sürüyor. Tabii ki seçimleri düzenleyen insanlar bu sorunun farkında ve basit bir ters orantı kullanarak sayımda çok daha fazla sayım ekibi kullanmayı akıl etmişler. Örneğin ikibin sayım ekibi kullanılırsa bütün sayım on saatte biter. İyi de bu oylar sayım ekiplerine nasıl dağıtılacak? Onun da çözümünü bulmuşlar. Oyları her biri bin oy alan sandıklara atalım ve her sandığın başına bir sayım ekibi koyalım. Yani oylar doğrudan sayım ekibinin ayağına gelsin. Bu işlem sonucunda ikibin adet sandık toplamı elde ettik. Kalan son işlem ise bu toplamları bir merkezde birbirleriyle toplamak ve genel sonucu bulmak. Bu son toplam işlemi de biraz zaman alacaktır ama sonunda bu sayılarla bir gün içinde onmilyon oyu saymak mümkün. Peki daha az oyu saymak neden çok daha fazla sürdü? Çünkü merkezde toplanan yüzbin oy, ikibin değil çok daha az sayım ekibiyle sayıldı.

İstanbul seçmen sayısı onmilyon beşyüzaltmışbin kadarmış ve otuzbirbin kadar sandık varmış. Bu durumda sandık başına üçyüz civarında oy düşüyor. Yeniden sayımlarda da tek bir ekip kullanılmadı. Cumhur ittifakının itirazları durumunda ekip sayısı ikiye düşse de genelde daha fazla ekip kullanıldı, yoksa geçersiz oyların yeniden sayımı çok daha uzun sürecekti. Yukarıda sadece sistemin işleyişini kabaca anlatmak için basit sayılar seçtim.

Kısaca demem o ki, bir şeyin doğru orantı mı ters orantı mı olduğunu anlamak için sistemin işleyişini bilmek gerekiyor. Bunun yaşla ilgisi yok.