Guest User

Untitled

a guest
May 24th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.04 KB | None | 0 0
  1. # s=input()
  2. from collections import deque
  3. from math import log2
  4.  
  5. # s = "prOGraMMIng PuZZleS & cOde ____"
  6. # #"prOGr aMMIn gPuZZ leScO de ____"
  7. # 00110
  8. # i = 0
  9. # k = 0
  10. # for letter in s:
  11. # if letter.isalpha():
  12. # k = 2*k + (letter < 'a')
  13. # print(bin(k)[2:])
  14. # i += 1
  15. # if i % 5 < 1: # jeżeli to 5 literka
  16. # s = s.replace('_', chr(k % 32 + 97), 1)
  17. # print(s.lower())
  18.  
  19. # given = input('Podaj swój napis:')
  20. given = 'wspanialy kebab __ 2 zl'
  21. secret = 'za'
  22. number_of_underscored = given.count('_')
  23. number_of_letters = len([None for letter in given if letter.isalpha()])
  24.  
  25. if number_of_letters // 5 < number_of_underscored:
  26. print('You have {} _ but can support only {}'.format(number_of_underscored,
  27. number_of_letters // 5))
  28. exit()
  29.  
  30. # secret = input("Give {} letter secret:".format(number_of_underscored))
  31.  
  32. if len(secret) != number_of_underscored:
  33. print("Your secret don't match number of underscores")
  34. exit()
  35. for letter in secret:
  36. if not letter.isalpha():
  37. print('Your secret does contain non standard letters')
  38. exit()
  39. secret = deque([(ord(letter) - 97) for letter in secret])
  40. # coding
  41. FIRST_BIT = 2 ** 4 # 5'th bit from the right for 0 - 31 numbers
  42. num_of_coded_letters = 0
  43. coded_sentence = []
  44. i = 0
  45.  
  46. coded = 0
  47. for letter in given:
  48.  
  49. # skip non alpha
  50. if not letter.isalpha():
  51. coded_sentence.append(letter)
  52. continue
  53.  
  54. # if its beginning of a new group
  55. print(coded, number_of_underscored)
  56. if i % 5 == 0:
  57.  
  58. if coded >= number_of_underscored:
  59. secret_letter = 0
  60. else:
  61. coded += 1
  62. secret_letter = secret.popleft()
  63. leftmost_bit = FIRST_BIT
  64.  
  65. # if leftmost bit is 1,
  66. # in next iteration, this bit is >> 1.
  67. # Its done 5 times.
  68. if leftmost_bit & secret_letter: # if its 1
  69. coded_sentence.append(letter.capitalize())
  70. else:
  71. coded_sentence.append(letter)
  72. leftmost_bit = leftmost_bit >> 1
  73. i += 1
  74.  
  75. print(''.join(coded_sentence))
Add Comment
Please, Sign In to add comment