Advertisement
Guest User

Chrono

a guest
Oct 15th, 2013
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.77 KB | None | 0 0
  1. #!/usr/bin/env python2
  2. # -*- coding: utf-8 -*-
  3. #
  4. #  final2.py
  5. #
  6. #  Copyright 2013 Marcus Scalpere <marcus.scalpere@gmail.com>
  7. #
  8. #  This program is free software; you can redistribute it and/or modify
  9. #  it under the terms of the GNU General Public License as published by
  10. #  the Free Software Foundation; either version 2 of the License, or
  11. #  (at your option) any later version.
  12. #
  13. #  This program is distributed in the hope that it will be useful,
  14. #  but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16. #  GNU General Public License for more details.
  17. #
  18. #  You should have received a copy of the GNU General Public License
  19. #  along with this program; if not, write to the Free Software
  20. #  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  21. #  MA 02110-1301, USA.
  22. #
  23. #
  24.  
  25. """Tento skript vypočítává chronologické pomůcky"""
  26.  
  27. #  slovníky k funkci nedelni_pismeno_g, podle staletí
  28. NEDELNI_PISMENO_G_2099_MAP = {
  29.     "A": "G",
  30.     "B": "A",
  31.     "C": "B",
  32.     "D": "C",
  33.     "E": "D",
  34.     "F": "E",
  35.     "G": "F",
  36.     "GF": "FE",
  37.     "BA": "AG",
  38.     "DC": "CB",
  39.     "FE": "ED",
  40.     "AG": "GF",
  41.     "CB": "BA",
  42.     "ED": "DC"
  43. }
  44.  
  45.  
  46. NEDELNI_PISMENO_G_1899_MAP = {
  47.     "A": "F",
  48.     "B": "G",
  49.     "C": "A",
  50.     "D": "B",
  51.     "E": "C",
  52.     "F": "D",
  53.     "G": "E",
  54.     "GF": "ED",
  55.     "BA": "GF",
  56.     "DC": "BA",
  57.     "FE": "DC",
  58.     "AG": "FE",
  59.     "CB": "AG",
  60.     "ED": "CB",
  61. }
  62.  
  63.  
  64. NEDELNI_PISMENO_G_1799_MAP = {
  65.     "A": "E",
  66.     "B": "F",
  67.     "C": "G",
  68.     "D": "A",
  69.     "E": "B",
  70.     "F": "C",
  71.     "G": "D",
  72.     "GF": "DC",
  73.     "BA": "FE",
  74.     "DC": "AG",
  75.     "FE": "CB",
  76.     "AG": "ED",
  77.     "CB": "GF",
  78.     "ED": "BA",
  79. }
  80.  
  81.  
  82. NEDELNI_PISMENO_G_1699_MAP = {
  83.     "A": "D",
  84.     "B": "E",
  85.     "C": "F",
  86.     "D": "G",
  87.     "E": "A",
  88.     "F": "B",
  89.     "G": "C",
  90.     "GF": "CB",
  91.     "BA": "ED",
  92.     "DC": "GF",
  93.     "FE": "BA",
  94.     "AG": "DC",
  95.     "CB": "FE",
  96.     "ED": "AG",
  97. }
  98.  
  99.  
  100. #  slovník k fci nedelni_pismeo_j
  101. NEDELNI_PISMENO_J_MAP = {
  102.     1: "GF",
  103.     2: "E",
  104.     8: "E",
  105.     9: "E",
  106.     3: "D",
  107.     14: "D",
  108.     20: "D",
  109.     4: "C",
  110.     15: "C",
  111.     26: "C",
  112.     6: "G",
  113.     12: "G",
  114.     23: "G",
  115.     7: "F",
  116.     18: "F",
  117.     24: "F",
  118.     10: "B",
  119.     16: "B",
  120.     27: "B",
  121.     11: "A",
  122.     22: "A",
  123.     28: "A",
  124.     5: "BA",
  125.     9: "DC",
  126.     13: "FE",
  127.     17: "AG",
  128.     21: "CB",
  129.     25: "ED",
  130. }
  131.  
  132.  
  133. def slunecni_kruh(rok):
  134.     """Tato funkce vypočítává sluneční kruh, parametr je rok"""
  135.     return (rok + 9) % 28
  136.  
  137.  
  138. def nedelni_pismeno_j(slunecnikruh):
  139.     """Tato funkce vypočítává juliánské nedělní písmeno,
  140.    parametr je sluneční kruh """
  141.     return NEDELNI_PISMENO_J_MAP[slunecni_kruh]
  142.  
  143.  
  144. def konkurenty(rok):
  145.     """Tato funkce vypočítává konkurenty,
  146.    parametr je rok """
  147.     konkurenta = (rok + (rok / 4) + 4) % 7
  148.     if konkurenta == 0:
  149.         return 7
  150.     else:
  151.         return konkurenta
  152.  
  153.  
  154. def zlate_cislo(rok):
  155.     """Tato funkce vypočítává zlaté číslo,
  156.    parametr je rok """
  157.     cislo = (rok + 1) % 19
  158.     if cislo == 0:
  159.         return 19
  160.     else:
  161.         return cislo
  162.  
  163.  
  164. def epakty_j(zlatecislo):
  165.     """Tato funkce vypočítává juliánské epakty,
  166.    parametr je zlaté číslo """
  167.     epakta = ((zlatecislo - 1) * 11) % 30
  168.     return epakta
  169.  
  170.  
  171. def epakta_g(rok):
  172.     """Tato funkce vypočítává juliánské epakty,
  173.    parametr je rok """
  174.     if rok <= 1582:
  175.         return "Neni"
  176.     else:
  177.         stoleti = int(rok / 100) + 1
  178.         opravas = int(3 * stoleti / 4)  # sluneční oprava
  179.         opravam = int((8 * stoleti + 5) / 25)  # měsíční oprava
  180.         return (epakty_j(zlate_cislo(rok)) - opravas + opravam + 8) % 30
  181.  
  182.  
  183. def nedelni_pismeno_g(nedelni_p_j, rok):
  184.     """Tato funkce počítá gregoriánské nedělní písmeno"""
  185.     if rok <= 1582:
  186.         return "Neni"
  187.     else:
  188.         if rok <= 1699:
  189.             return NEDELNI_PISMENO_G_1699_MAP[nedelni_p_j]
  190.         elif rok <= 1799:
  191.             return NEDELNI_PISMENO_G_1799_MAP[nedelni_p_j]
  192.         elif rok <= 1899:
  193.             return NEDELNI_PISMENO_G_1899_MAP[nedelni_p_j]
  194.         elif rok <= 2099:
  195.             return NEDELNI_PISMENO_G_2099_MAP[nedelni_p_j]
  196.  
  197.  
  198. def velikonoce_j(rok):
  199.     """Výpočet juliánské velikonoční neděle"""
  200.     pomocna_a = rok % 19
  201.     pomocna_b = rok % 4
  202.     pomocna_c = rok % 7
  203.     pomocna_d = (15 + 19 * pomocna_a) % 30
  204.     pomocna_e = (6 + 2 * pomocna_b + 4 * pomocna_c + 6 * pomocna_d) % 7
  205.     if (22 + pomocna_d + pomocna_e) > 31:
  206.         return (pomocna_d + pomocna_e - 9), ".duben"
  207.     elif (22 + pomocna_d + pomocna_e) < 31:
  208.         return (22 + pomocna_d + pomocna_e), ".březen"
  209.  
  210.  
  211. def velikonoce_g(rok):
  212.     """Výpočet gregoriánské velikonoční neděle"""
  213.     if rok <= 1582:
  214.         return "Není"
  215.     if rok > 1582 and rok < 1700:
  216.         pomocna_m = 22
  217.         pomocna_n = 2
  218.     elif rok > 1700 and rok < 1800:
  219.         pomocna_m = 23
  220.         pomocna_n = 3
  221.     elif rok > 1800 and rok < 1900:
  222.         pomocna_m = 23
  223.         pomocna_n = 4
  224.     elif rok > 1900 and rok < 2100:
  225.         pomocna_m = 24
  226.         pomocna_n = 5
  227.     pomocna_a = rok % 19
  228.     pomocna_b = rok % 4
  229.     pomocna_c = rok % 7
  230.     pomocna_d = (pomocna_m + 19 * pomocna_a) % 30
  231.     pomocna_e = (pomocna_n + 2 * pomocna_b + 4 * pomocna_c + 6 * pomocna_d) % 7
  232.     if (22 + pomocna_d + pomocna_e) > 31:
  233.         if (pomocna_d + pomocna_e - 9) == 26:
  234.             return 19, '.duben'
  235.         else:
  236.             return (pomocna_d + pomocna_e - 9), '.duben'
  237.         if pomocna_d == 18 and pomocna_a > 10 and (pomocna_d + pomocna_e - 9) == 25:
  238.             return 18, '.duben'
  239.     elif (22 + pomocna_d + pomocna_e) < 31:
  240.         return (22 + pomocna_d + pomocna_e), '.brezen'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement