Advertisement
Guest User

Untitled

a guest
May 26th, 2016
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.61 KB | None | 0 0
  1. def stej(bitna_slika, a, b, c, d):
  2.     """
  3.    Vrni število ničel in enic v podmatriki.
  4.    """
  5.     st_nicel, st_enic = 0, 0
  6.     for i in range(a, b):
  7.         for j in range(c, d):
  8.             if bitna_slika[i][j] == '0':
  9.                 st_nicel += 1
  10.             else:
  11.                 st_enic += 1
  12.     return st_nicel, st_enic
  13.  
  14. def kodiraj(bitna_slika, a=0, b=None, c=0, d=None):
  15.     if b is None:
  16.         b = len(bitna_slika)
  17.     if b <= a:
  18.         return ''
  19.     if d is None:
  20.         d = len(bitna_slika[0])
  21.     if d <= c:
  22.         return ''
  23.     st_nicel, st_enic = stej(bitna_slika, a, b, c, d)
  24.     if st_nicel == 0:
  25.         return '1'
  26.     if st_enic == 0:
  27.         return '0'
  28.     ab_mid = (a + b + 1) // 2
  29.     cd_mid = (c + d + 1) // 2
  30.     return 'D' + kodiraj(bitna_slika, a, ab_mid, c, cd_mid) + kodiraj(bitna_slika, a, ab_mid, cd_mid, d) + \
  31.         kodiraj(bitna_slika, ab_mid, b, c, cd_mid) + kodiraj(bitna_slika, ab_mid, b, cd_mid, d)
  32.  
  33.  
  34. def kodiraj(bitna_slika):
  35.     if len(bitna_slika) == 0:
  36.         return ''
  37.     elif all('1' not in i for i in bitna_slika):
  38.         return '0'
  39.     elif all('0' not in i for i in bitna_slika):
  40.         return '1'
  41.    
  42.     def razbij(bitna_slika):
  43.         x = (len(bitna_slika) + 1) // 2
  44.         y = (len(bitna_slika[0]) + 1) // 2
  45.  
  46.         return 'D' + kodiraj([bitna_slika[i][:y] for i in range(0,x)]) + kodiraj([bitna_slika[i][y:len(bitna_slika)+1] for i in range(0,x)]) + kodiraj([bitna_slika[i][0:y] for i in range(x,len(bitna_slika))]) + kodiraj([bitna_slika[i][y:len(bitna_slika)+1] for i in range(x,len(bitna_slika))])
  47.    
  48.     return razbij(bitna_slika)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement