şükela:  tümü | bugün sorunsallar (7)
20086 entry daha
  • (bkz: verilen bir tarihin gününü bulmak)
    geçmiş veya gelecek fark etmeksizin istenilen tarihin günü bulunabilmektedir.
    günlük hayatta ne kadar işe yarar bilemiyorum. fakat gregorian takvimleri 400 yılda bir kendini tekrarladığı için hesaplamada bir kolaylık olmaktadır. bir kaç adımda bulunabiliyor. öncelikle elimizdeki verilere bakalım.
    ocak - 31
    şubat - 28/29
    mart - 31
    nisan - 30
    mayıs - 31
    haziran - 30
    temmuz - 31
    ağustos - 31
    eylül - 30
    ekim - 31
    kasım - 30
    aralık - 31

    sanki rastgele dağılmış gibiler. fakat burada bir güzellik var.
    nisan + mayıs = 61 gün
    haziran + temmuaz = 61 gün
    ağustos + eylül = 61 gün
    ekim + kasım = 61 gün

    peki bu bizim ne işimize yarayacak?
    x nisan günü = x + 2 haziran olacak. 61=x mod(7) --> x=5
    5 gün öncesi. yani iki gün sonrası anlamına geliyor. burası ayrıntı bir bilgiydi mod hesabını geçelim ve x ve x+2 li kısma odaklanalım.
    bunu biraz daha açarsak x nisan = x+2 haziran = x+4 ağustos = x+6 ekim = x+8 aralık. bunların her biri aynı güne denk geliyor.
    hesaplama yaparken bu tarihlerden faydalanacağız. nisan ayı dördüncü ay olduğundan dolayı 4 rakamını kullanalım.
    aynı sene içinde dördüncü ayın dördüncü günü ile sekizinci ayın sekizinci günü aynı gün ismini paylaşıyor.
    önemli tablo 1
    4/4 = 6/6 = 8/8 = 10/10 = 12/12
    buradaki tarihleri referans noktalarımız olarak belleğimize işleyelim.
    bu tarihlerin karşılık geldiği günler her zaman değişiyor tabi ki.
    bu sene pazara geliyor ise seneye pazartesi sonra salı. eğer artık yıla denk geliyor isek perşembeye atlayabiliyor.
    şimdi yıl ile kıyaslayalım.

    burada da 4 adet bilgiyi öğrenmemiz gerekiyor.
    önemli tablo 2
    1600 ... salı ... 8 (1)
    1700 ... pazar ... 6
    1800 ... cuma ... 4
    1900 ... çarşamba 2

    demiştim ya gregorian takvimimiz 400 yılda bir tekrar eder diye. burada 2000 yılı 1600 gününe yani referans noktamız salı olan güne geliyor.
    yandaki 8/6/4/2 şeklinde verdiğim rakamlar ise o yüzyıla ait gün numaralarımız. işlemlerimizi mod(7) ye yani 7ye bölerek yapacağımız için 8 ile 1 arasında bir fark olmuyor. karışmasın diye 8-6-4-2 şeklinde aklınızda tutabilirsiniz. ya da sadece 1900 ile 2000i bilmek yeterlidir. keyfe keder.

    aslında bilmemiz gereken tek şey yukarıda verdiğim tablo. gerisi nedenini öğrenmek isteyenler içindi.
    şimdi örnek bir hesaplama yapalım.

    rastgele bir tarih alalım. back to the future filminde zamanda ileri gittikleri tarihi seçelim.
    21 ekim 2015

    burada seneyi iki parçaya ayıracağız. 20 & 15 şeklinde. ilk iki hanede yukarıda verdiğimiz tablodan faydalanacağız.
    20 yani 2000li yıllar. bu tabloda 1600 e denk gelir. 1600=2000=2400 şeklinde olacağından bahsetmiştik. bu da tabloda 8e eşittir.
    2015 --> 15 + 15/4 + 8 = 15 + 3 + 8 = 26 bölme işlemin kalan kısmı es geçiniz. her sayıyı aşağıya yuvarlayacağız.
    26 / 7 = 3, kalan=5

    şimdi son adım olarak bu 5 rakamını kullanacağız.
    günlerin de bir rakamsal karşılığı olması lazım. fakat bu gayet akılda kalıcı.

    önemli tablo 3
    pazartesi = 0, salı =1, çarşamba = 2, perşembe = 3, cuma = 4, cumartesi = 5, pazar = 6

    en son kalan 5 demiştik. yani günlerden cumartesi. bu bizim referans günümüz oluyor. hani 4/4, 6/6, 10/10 şeklinde ilerlemiştik. işte o. 10/10 cumartesi oluyor. peki 21/10 hangi gün oluyor? buradan sonra dilerseniz mod ile hesaplama yapabilirsiniz. dilerseniz akıldan hızlıca gidebilirsiniz.
    mod ile hesap yapılacak ise. 21-10 = 11 işlemini yaptıktan sonra 11 = x mod(7) dersek eğer. x = 4 olur. yani dört gün daha ileri gitmemiz gereklidir. ya da 10 cumartesi ise 17 cumartesi olur diyerek sonra 4 gün daha sayabilirsiniz.
    cumartesiden itibaren 4 gün sayacaksınız. pazar, pazartesi, salı, çarşamba. ta da! 21 ekim 2015 günlerden çarşamba çıktı.

    bu sefer daha hızlı bir örnek yapalım ve 20. yüzyıla gidelim.

    23 nisan 1920
    19(20) --> 20 + 20/4 + 2
    --> 20 + 5 + 2
    --> 27
    --> 27/7 = 3, kalan=6
    --> 6 = pazar günü (günler tablosundan)
    --> 4 nisan = pazar günü
    --> 4 + 7x = pazar günü olacağı için 4 + 21 nisan = 25 nisan pazar günü olur. 23 nisan ise cuma gününe karşılık gelir.

    bu şekilde güzel, basit bir hesaplaması var. özet geçecek olursak eğer,
    1) günler 0dan başlar 6da biter.
    2) yüzyıllar 1600 = 8 rakamına karşılık gelecek şekilde başlar 1700 = 6 olacak şekilde 2şer 2şer azalır. 1600=2000, 1700=2100
    3) referans noktalarımız 4/4, 6/6 8/8, 10/10, 12/12 tarihleri.
    4) elimizdeki yılın son iki hanesi ile son iki hanenin 4e bölümüne yüzyıl tablosundan elde ettiğimiz değeri ekliyoruz.
    5) bu rakamın 7ye bölümünden günü buluyoruz.
    6) referans tarihlerimize ilerleyerek işlemimizi bitiriyoruz.

    edit 1) ocak, şubat ayında karışıklık çıkabileceğine dair mesaj aldım.
    4/4 6/6 gibi sayıları akılda kalıcı olması açısından verdim. şubat ayına bir bilgi vermemişim, evet. referans tarihlerimize 0 mart ekleyebilirsiniz. şubatın 29 veya 28 çekme durumuna göre ayın son günü. 10/1 olacak şekilde ocak ayının 10u da ekleyebilirsiniz. referans noktası çoğaldıkça iş kolaylaşacaktır.
    edit2) bu özel günlere 14 şubat, 14 mart (dünya pi günü) de ekleyebilirsiniz. daha akılda kalıcı olur.
13369 entry daha