Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python2
- # -*- coding: utf-8 -*-
- #
- # final2.py
- #
- # Copyright 2013 Marcus Scalpere <marcus.scalpere@gmail.com>
- #
- # This program is free software; you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation; either version 2 of the License, or
- # (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with this program; if not, write to the Free Software
- # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- # MA 02110-1301, USA.
- #
- #
- """Tento skript vypočítává chronologické pomůcky"""
- # slovníky k funkci nedelni_pismeno_g, podle staletí
- NEDELNI_PISMENO_G_2099_MAP = {
- "A": "G",
- "B": "A",
- "C": "B",
- "D": "C",
- "E": "D",
- "F": "E",
- "G": "F",
- "GF": "FE",
- "BA": "AG",
- "DC": "CB",
- "FE": "ED",
- "AG": "GF",
- "CB": "BA",
- "ED": "DC"
- }
- NEDELNI_PISMENO_G_1899_MAP = {
- "A": "F",
- "B": "G",
- "C": "A",
- "D": "B",
- "E": "C",
- "F": "D",
- "G": "E",
- "GF": "ED",
- "BA": "GF",
- "DC": "BA",
- "FE": "DC",
- "AG": "FE",
- "CB": "AG",
- "ED": "CB",
- }
- NEDELNI_PISMENO_G_1799_MAP = {
- "A": "E",
- "B": "F",
- "C": "G",
- "D": "A",
- "E": "B",
- "F": "C",
- "G": "D",
- "GF": "DC",
- "BA": "FE",
- "DC": "AG",
- "FE": "CB",
- "AG": "ED",
- "CB": "GF",
- "ED": "BA",
- }
- NEDELNI_PISMENO_G_1699_MAP = {
- "A": "D",
- "B": "E",
- "C": "F",
- "D": "G",
- "E": "A",
- "F": "B",
- "G": "C",
- "GF": "CB",
- "BA": "ED",
- "DC": "GF",
- "FE": "BA",
- "AG": "DC",
- "CB": "FE",
- "ED": "AG",
- }
- # slovník k fci nedelni_pismeo_j
- NEDELNI_PISMENO_J_MAP = {
- 1: "GF",
- 2: "E",
- 8: "E",
- 9: "E",
- 3: "D",
- 14: "D",
- 20: "D",
- 4: "C",
- 15: "C",
- 26: "C",
- 6: "G",
- 12: "G",
- 23: "G",
- 7: "F",
- 18: "F",
- 24: "F",
- 10: "B",
- 16: "B",
- 27: "B",
- 11: "A",
- 22: "A",
- 28: "A",
- 5: "BA",
- 9: "DC",
- 13: "FE",
- 17: "AG",
- 21: "CB",
- 25: "ED",
- }
- def slunecni_kruh(rok):
- """Tato funkce vypočítává sluneční kruh, parametr je rok"""
- return (rok + 9) % 28
- def nedelni_pismeno_j(slunecnikruh):
- """Tato funkce vypočítává juliánské nedělní písmeno,
- parametr je sluneční kruh """
- return NEDELNI_PISMENO_J_MAP[slunecni_kruh]
- def konkurenty(rok):
- """Tato funkce vypočítává konkurenty,
- parametr je rok """
- konkurenta = (rok + (rok / 4) + 4) % 7
- if konkurenta == 0:
- return 7
- else:
- return konkurenta
- def zlate_cislo(rok):
- """Tato funkce vypočítává zlaté číslo,
- parametr je rok """
- cislo = (rok + 1) % 19
- if cislo == 0:
- return 19
- else:
- return cislo
- def epakty_j(zlatecislo):
- """Tato funkce vypočítává juliánské epakty,
- parametr je zlaté číslo """
- epakta = ((zlatecislo - 1) * 11) % 30
- return epakta
- def epakta_g(rok):
- """Tato funkce vypočítává juliánské epakty,
- parametr je rok """
- if rok <= 1582:
- return "Neni"
- else:
- stoleti = int(rok / 100) + 1
- opravas = int(3 * stoleti / 4) # sluneční oprava
- opravam = int((8 * stoleti + 5) / 25) # měsíční oprava
- return (epakty_j(zlate_cislo(rok)) - opravas + opravam + 8) % 30
- def nedelni_pismeno_g(nedelni_p_j, rok):
- """Tato funkce počítá gregoriánské nedělní písmeno"""
- if rok <= 1582:
- return "Neni"
- else:
- if rok <= 1699:
- return NEDELNI_PISMENO_G_1699_MAP[nedelni_p_j]
- elif rok <= 1799:
- return NEDELNI_PISMENO_G_1799_MAP[nedelni_p_j]
- elif rok <= 1899:
- return NEDELNI_PISMENO_G_1899_MAP[nedelni_p_j]
- elif rok <= 2099:
- return NEDELNI_PISMENO_G_2099_MAP[nedelni_p_j]
- def velikonoce_j(rok):
- """Výpočet juliánské velikonoční neděle"""
- pomocna_a = rok % 19
- pomocna_b = rok % 4
- pomocna_c = rok % 7
- pomocna_d = (15 + 19 * pomocna_a) % 30
- pomocna_e = (6 + 2 * pomocna_b + 4 * pomocna_c + 6 * pomocna_d) % 7
- if (22 + pomocna_d + pomocna_e) > 31:
- return (pomocna_d + pomocna_e - 9), ".duben"
- elif (22 + pomocna_d + pomocna_e) < 31:
- return (22 + pomocna_d + pomocna_e), ".březen"
- def velikonoce_g(rok):
- """Výpočet gregoriánské velikonoční neděle"""
- if rok <= 1582:
- return "Není"
- if rok > 1582 and rok < 1700:
- pomocna_m = 22
- pomocna_n = 2
- elif rok > 1700 and rok < 1800:
- pomocna_m = 23
- pomocna_n = 3
- elif rok > 1800 and rok < 1900:
- pomocna_m = 23
- pomocna_n = 4
- elif rok > 1900 and rok < 2100:
- pomocna_m = 24
- pomocna_n = 5
- pomocna_a = rok % 19
- pomocna_b = rok % 4
- pomocna_c = rok % 7
- pomocna_d = (pomocna_m + 19 * pomocna_a) % 30
- pomocna_e = (pomocna_n + 2 * pomocna_b + 4 * pomocna_c + 6 * pomocna_d) % 7
- if (22 + pomocna_d + pomocna_e) > 31:
- if (pomocna_d + pomocna_e - 9) == 26:
- return 19, '.duben'
- else:
- return (pomocna_d + pomocna_e - 9), '.duben'
- if pomocna_d == 18 and pomocna_a > 10 and (pomocna_d + pomocna_e - 9) == 25:
- return 18, '.duben'
- elif (22 + pomocna_d + pomocna_e) < 31:
- return (22 + pomocna_d + pomocna_e), '.brezen'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement