CyberSausage/VoMaKu
CyberSausage/ziptitap
t1from fractions import Fractiont1from fractions import Fraction
22
3class Sausage:3class Sausage:
4    length = 124    length = 12
5    start = '/------------\\'5    start = '/------------\\'
6    stop = '\\------------/'6    stop = '\\------------/'
7    line = []7    line = []
88
9    def __init__(self=None):9    def __init__(self=None):
10        return None10        return None
1111
12    def __init__(self, meat='pork!', v=1.0):12    def __init__(self, meat='pork!', v=1.0):
13        if Fraction(v) <= Fraction(0):13        if Fraction(v) <= Fraction(0):
14            self.volume = 014            self.volume = 0
15            self.meat = ''15            self.meat = ''
16        else:16        else:
17            self.meat = meat17            self.meat = meat
18            self.volume = Fraction(v)18            self.volume = Fraction(v)
19        self.line = []19        self.line = []
2020
21    def __bool__(self):21    def __bool__(self):
22        if self.volume == 0:22        if self.volume == 0:
23            return False23            return False
24        return True24        return True
2525
26    def getlines(self):26    def getlines(self):
27        n = int(12 * Fraction(self.volume))27        n = int(12 * Fraction(self.volume))
28        m = 2 * (int(self.volume * 12) % 12 + int(self.volume * 12) // 12)28        m = 2 * (int(self.volume * 12) % 12 + int(self.volume * 12) // 12)
29        self.start = '/------------'[:n + 1] + ('|' if n + 2 < 13 else '\\')29        self.start = '/------------'[:n + 1] + ('|' if n + 2 < 13 else '\\')
30        self.stop = '\\------------'[:n + 1] + ('|' if n + 2 < 13 else '/')30        self.stop = '\\------------'[:n + 1] + ('|' if n + 2 < 13 else '/')
31        self.line.append('|')31        self.line.append('|')
32        (j, k) = (0, 0)32        (j, k) = (0, 0)
33        for (m, i) in enumerate(range(n)):33        for (m, i) in enumerate(range(n)):
34            if i != 0 and i % 12 == 0:34            if i != 0 and i % 12 == 0:
35                self.line.append('|')35                self.line.append('|')
36                self.line.append('|')36                self.line.append('|')
37                if n >= i + 24:37                if n >= i + 24:
38                    self.start += self.__class__.start38                    self.start += self.__class__.start
39                    self.stop += self.__class__.stop39                    self.stop += self.__class__.stop
40                else:40                else:
41                    if len(self.start) > n + n / 12 * 2:41                    if len(self.start) > n + n / 12 * 2:
42                        continue42                        continue
43                    self.start += '/------------'[:n - i + 1] + ('|' if n - i < 12 else '\\')43                    self.start += '/------------'[:n - i + 1] + ('|' if n - i < 12 else '\\')
44                    self.stop += '\\------------'[:n - i + 1] + ('|' if n - i < 12 else '/')44                    self.stop += '\\------------'[:n - i + 1] + ('|' if n - i < 12 else '/')
45                j = 045                j = 0
46            self.line.append(self.meat[j])46            self.line.append(self.meat[j])
47            if j < len(self.meat) - 1:47            if j < len(self.meat) - 1:
48                j += 148                j += 1
49            else:49            else:
50                j = 050                j = 0
51        self.line.append('|')51        self.line.append('|')
5252
53    def __add__(self, other):53    def __add__(self, other):
54        return Sausage(self.meat, self.volume + other.volume)54        return Sausage(self.meat, self.volume + other.volume)
5555
56    def __mul__(self, other):56    def __mul__(self, other):
57        return Sausage(self.meat, self.volume * Fraction(other))57        return Sausage(self.meat, self.volume * Fraction(other))
5858
59    def __rmul__(self, other):59    def __rmul__(self, other):
60        return Sausage(self.meat, self.volume * Fraction(other))60        return Sausage(self.meat, self.volume * Fraction(other))
6161
62    def __truediv__(self, other):62    def __truediv__(self, other):
63        return Sausage(self.meat, self.volume / Fraction(other))63        return Sausage(self.meat, self.volume / Fraction(other))
6464
65    def __sub__(self, other):65    def __sub__(self, other):
66        return Sausage(self.meat, self.volume - other.volume)66        return Sausage(self.meat, self.volume - other.volume)
6767
68    def __abs__(self):68    def __abs__(self):
69        return self.volume69        return self.volume
7070
71    def __str__(self):71    def __str__(self):
72        self.getlines()72        self.getlines()
73        return self.start + '\n' + '{0}\n{0}\n{0}\n'.format(''.join(self.line)) + self.stop73        return self.start + '\n' + '{0}\n{0}\n{0}\n'.format(''.join(self.line)) + self.stop
74import sys74import sys
75exec(sys.stdin.read(), globals())75exec(sys.stdin.read(), globals())
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op