2024年12月18日 星期三

跑長編碼資料壓縮

 n = int(input())

for j in range(n):

  d = input()

  check = [i for i in d if i not in '01']

  if check:

    print(-1)

    continue

  

  pre = '2'

  c = 0

  oc = 0

  isfirst = True

  for i in d:

    if i!=pre:

      if isfirst:

        isfirst = False

      else:

        if c>7:

          print(f'{bin(7)[2:]:>03}',end=' ')

          oc +=4

          c = c - 7

          i=str(1-int(i))

          print(i,end='')

          i=str(1-int(i))

          

          print(f'{bin(c)[2:]:>03}',end=' ')

          oc +=4

          c = 0

        else:

          print(f'{bin(c)[2:]:>03}',end=' ')

          oc +=4

      print(i,end='')

      c = 1

    else:

      c+=1

    pre = i

  

  print(f'{bin(c)[2:]:>03}',end=' ')

  oc +=4

  

  print(f'{int(oc/len(d)*100+0.5)}%')

  

# STDIN

# 4

# 00010000000111111101111111

# 11111100000000000000111111111111110000

# 0011  1111100000101010

# HINET0800000123


# Output:


# 0011 1001 0111 1111 0001 1111 92%

# 1110 0111 0111 1111 1111 0100 63%

# -1

# -1

沒有留言:

張貼留言