Advertisement
Susan22

PetDetective

Jan 15th, 2017
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.23 KB | None | 0 0
  1. class PetDetective:
  2.     def __init__(self, meno_suboru):
  3.         self.pole = []
  4.         #self.auto = []
  5.         self.naklad = {}
  6.         self.kapa = 1
  7.         pomocne = []
  8.         vstup = open(meno_suboru, 'r')
  9.  
  10.         for riadok in vstup:
  11.             if riadok == '\n':
  12.                 break
  13.             else:
  14.                 for znak in riadok:
  15.                     if znak == '\n':
  16.                         break
  17.                     else:
  18.                         pomocne.append(znak)
  19.                 self.pole.append(pomocne)
  20.                 pomocne = []
  21.  
  22.         riadok = vstup.readline().strip()
  23.         r, s = riadok.split()
  24.         self.auto = (int(r),int(s))
  25.        
  26.         #print(self.auto)
  27.  
  28.         vstup.close()
  29.  
  30.     def __repr__(self):
  31.         znaky = ''
  32.  
  33.         for r in range(len(self.pole)):
  34.             for s in range(len(self.pole[r])):
  35.                 if (r, s) == self.auto:
  36.                     znaky += '*'
  37.                 else:
  38.                     znaky += self.pole[r][s]
  39.  
  40.             znaky += '\n'
  41.  
  42.         return znaky
  43.  
  44.     def kapacita(self, kapa):
  45.         self.kapa = kapa
  46.  
  47.     def zisti(self):
  48.         zvierata = ''
  49.         Mz = set()
  50.  
  51.         for kluc in self.naklad:
  52.             if self.naklad[kluc] > 0:
  53.                 zvierata += kluc
  54.  
  55.         for r in range(len(self.pole)):
  56.             for s in range(len(self.pole[r])):
  57.                 if self.pole[r][s] in 'qwertyuioplkjhgfdsazxcvbnm':
  58.                     Mz.add((self.pole[r][s], r, s))
  59.  
  60.         return zvierata, Mz
  61.        
  62.  
  63.     def krok(self, smer):
  64.         pocet_krokov = 0
  65.         for pohyb in smer:
  66.  
  67.             rr, ss = self.auto[0], self.auto[1]
  68.             r, s = [(rr, ss - 1), (rr, ss + 1), (rr - 1, ss), (rr + 1, ss)]['lphd'.index(pohyb)]
  69.             if 0 <= r < len(self.pole) and 0 <= s < len(self.pole[r]) and self.pole[r][s] != ' ':
  70.                 pocet_krokov += 1
  71.                 if self.pole[r][s] in 'qwertyuioplkjhgfdsazxcvbnm':
  72.                     pocet_z = 0
  73.                     for kluc in self.naklad:
  74.                         pocet_z += self.naklad[kluc]
  75.  
  76.                     if pocet_z < self.kapa:
  77.                         if self.pole[r][s] not in self.naklad:
  78.                             self.naklad[self.pole[r][s]] = 1
  79.                         else:
  80.                             self.naklad[self.pole[r][s]] += 1
  81.                            
  82.                         self.pole[r][s] = '.'
  83.  
  84.                     self.auto = (r, s)
  85.                     #pocet_krokov += 1
  86.  
  87.                 if self.pole[r][s] in 'QWERTYUIOPLKJHGFDSAZXCVBNM':
  88.                     if self.pole[r][s].lower() in self.naklad:
  89.                         self.naklad[self.pole[r][s].lower()] = 0
  90.  
  91.                     self.auto = (r, s)
  92.                     #pocet_krokov += 1
  93.  
  94.                 if self.pole[r][s] == '.':
  95.                     self.auto = (r, s)
  96.                              
  97.             else:
  98.                 pass
  99.  
  100.         return pocet_krokov
  101.  
  102. if __name__ == '__main__':
  103.     p = PetDetective('subor2.txt')
  104.     #p.kapacita(2)
  105.     print(p)
  106.     print(p.zisti())
  107.     print(p.krok('hhppppppddd'))
  108.     print(p)
  109.     print(p.zisti())
  110.     print(p.krok('dhhlllllddllllll'))
  111.     print(p)
  112.     print(p.zisti())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement