15 Nisan 2011 Cuma

Deney: Duvar Saati

Bu yazımda bahsettiğim problemin çözümü üzerine düşünmeye devam ettim ve ediyorum. Geçen zamanda ne tür ilerlemeler kaydettiğimden bahsedeyim.

Geçen zamanda problem üzerine biraz daha düşündükten sonra uygun bir python betiği yazmaya karar verdim. Neticede tüm saat değerlerini tek tek denemek beni aşan bir problem olur. Betik bana sadece o saatlerin denk geldiği yerleri versin istedim. Betik aşağıdaki gibi:
#!/usr/bin/env python
#-*- coding:utf-8 -*-

class saat(object):
    def __init__(self):
        self.Sa = 0
        self.Da = 0
        self.Sn = 0
        self.Devam = True

    def ilerle(self):
        while self.Devam:
            self.SnArt()
            if self.Kontrol():
                self.Zaman()

    def SnArt(self):
        self.Sn += 1
        if self.Sn == 60:
            self.Sn = 0
            self.DaArt()

    def 
DaArt(self):
        self.Da += 1
        if self.Da == 60:
            self.Da = 0
            self.SaArt()

    def SaArt(self):
        self.Sa += 1
        if self.Sa == 12:
            self.Sa = 0
            self.Devam = False

    def Zaman(self):
        print '%s:%s:%s'% (self.Sa, self.Da, self.Sn)

    def Derece(self):
        sa = self.Sa * 30.0

        da = self.Da * 6.0
        sa += self.Da / 2.0

        sn = self.Sn * 6.0
        da += self.Sn * 0.1
        sa += self.Sn / 120.0

        return (sa, da, sn)

    def Kontrol(self):
        liste = []
        for i in self.Derece():
            liste.append(i)
        liste.sort()

        kucuk, orta, buyuk = liste

        d1 = buyuk - orta
        d2 = orta - kucuk
        d3 = 360 - buyuk + kucuk

        if (d1 == d2 or d2 == d3 or d1 == d3) and (d1>1 and d2>1 and d3>1):
            return True

s = saat()
s.ilerle()

Betiğin ne iş yaptığını anlatmakla uğraşmak istemiyorum.
Python bilenler göz atınca anlayacaklardır. Bilmeyenler de biraz mantık yürüterek python'un anlaşılabilirliğini fark edebilirler. Bu kodun bize verdiği sonuç ise aşağıdaki gibi:
1:12:0
2:24:0
3:36:0
4:48:0
7:12:0
8:24:0
9:36:0
10:48:0

Bu sonuçlara 12:00:00 ve 6:00:00'ı da eklersek bir örüntüye ulaşıyoruz.
1:12:0
2:24:0
3:36:0
4:48:0
6:00:0
7:12:0
8:24:0
9:36:0
10:48:0
12:00:0

Fark edeceksiniz ki tüm saatler 1 saat 12 dakika aralıklarla yazılmış oldu. Benim yazdığım betikte saat 6 ve 12'nin olmayışının sebebi bütün açıların 1 dereceden büyük olmasını isteyişimdi. 6 ve 12'de saatin elemanlarından(akrep, yelkovan, saniye) 2'si veya 3'ü üst üste geliyor ve aralarındaki açı 0 derece oluyor.

Şimdi ise fark ettiğim bu örüntü hakkında düşünmeye başladım. Ben şu anda bu örüntüye "Eş açılı saatler" yasası ismini veriyorum. Fakat bu yasanın henüz bir açıklaması yok. İnşallah sonraki yazıda bu yasayı açıklayan bir teori yazarım.

2 Nisan 2011 Cumartesi

Problem: Duvar Saati

Bu aralar aklımı kurcalayan bir matematik problemi var. Düşünüyorum düşünüyorum aklıma uygun bir çözüm ve sonuç gelmiyor.


Problem şu:
Bir duvar saatinde akrep, yelkovan ve saniye arasındaki 3 açıdan 2'sinin eşit ve bütün açılar 1 dereceden büyük olduğunda saat "saat:dakika:saniye" bazında tam olarak kaçı gösterir.

Veya başka bir tabirle:
Bir duvar saatinde saat "saat:dakika:saniye" bazında tam olarak kaçı gösterdiğinde akrep, yelkovan ve saniye arasındaki 3 açıdan 2'si eşit ve bütün açılar 1 dereceden büyük olur.

İşte düşünüp durduğum, duvar saatini her gördüğümde sürekli açılarını hesaplamaya çalıştığım problem bu.

Problemin çözümü için bazı verileri sizi yormadan yazayım.

  • Saat
    üzerindeki her bir çizgi arası mesafe 6 derece olup bu çizgilerden 60 taneden 12 tanesi saat başlarına denk geldiği için belirginleştirilmiştir.

  • Akrebin 1 çizgi ilerlemesi için yelkovanın 15 çizgi ilerlemesi gerekir.

  • Yelkovanın 1 çizgi ilerlemesi için saniyenin 60 çizgi ilerleyip tam bir tur yapması gerekir.


Aslında bu bilgileri herkes denebilecek bir çoğunluk bilir. Ben sadece ben hesap yaparken yanlış bir şey mi biliyorum diye test etmek için yazdım.

Bu problemin bir çözümü var mı, problem doğru sorulmuş bir problem mi bilmiyorum. Bildiğim ise her duvar saati görüşümde bu problem hakkında düşünüyor olmam.

Bu problemin bir çözümü varsa ve çözebilmişseniz burada yorum olarak paylaşmanız beni sevindirecektir.