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.

Hiç yorum yok:

Yorum Gönder