1. Python / Говнокод #21776

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    class RomeNumberConvertor(object):
        def __init__(self):
            self.discharge = ['unit', 'dozen', 'hundred', 'thousand']
            self.unit_set = ('I', 'V', 'X')
            self.dozen_set = ('X', 'L', 'C')
            self.hundred_set = ('C', 'D', 'M')
            self.thousand_set = ('M')
            
        def _discharge2rome(self, discharge, value):
            pattern = {'1': '{0}', '2': '{0}{0}', '3': '{0}{0}{0}',
                            '4': '{0}{1}', '5': '{1}', '6': '{1}{0}',
                            '7': '{1}{0}{0}', '8': '{1}{0}{0}{0}', '9': '{0}{2}'}
            return pattern[value].format(*getattr(self, '%s_set' % discharge))
            
        def lat2rome(self, num):
            rome_digit = ''
            for i, k in enumerate(reversed(str(num))):
                if k == '0': continue
                rome_digit = '%s%s' % (self._discharge2rome(self.discharge[i], k), rome_digit) 
            return rome_digit

    Вот так человек решил преобразовывать в римские цифры :D

    Запостил: mbrutus, 04 Декабря 2016

    Комментарии (18) RSS

    • Объясните мне глупенькому, где тут говно?
      Ответить
      • Наверное потому что можно было кароче
        Ответить
      • А мне не нравится неудавшийся кортеж тысяч.
        Ответить
        • Но ведь работает! Ибо стока из одной буквы в пистоне является бесконечно рекурсивным кортежем самой себя, это же очевидно!
          >>> print 'A'[0][0][0][0][0]
          A
          Ответить
        • Но ведь никто бы не понял, если бы написали так:
          self.thousand_set = ('M', 'ↁ', 'ↂ')
          Ответить
    • > discharge
      Это типа разряд?
      Ответить
    • > lat2rome

      lat -- это сокращение от "латинские" чтоли?
      Ответить
      • Сокращение от широты, видимо.
        Ответить
        • Хм, показывать широту и долготу римскими цифрами -- отличная идея. Только их надо рациональной дробью записывать, а тут конвертер целых.
          Ответить
          • > показывать широту и долготу римскими цифрами
            > рациональной дробью записывать
            GeoAPI для malbodge?
            Ответить
      • да, это перевод с латинского на древнеримский
        Ответить

    Добавить комментарий