Advertisement
Guest User

Untitled

a guest
Sep 17th, 2011
10,513
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.77 KB | None | 0 0
  1. from math import factorial
  2.  
  3. def loop(k, n, string):
  4.     if k > 0:
  5.         for i in range(n-k):
  6.             loop(k-1, n, string)
  7.             string += reversed(string[-n:-n+k])
  8.         loop(k-1, n, string)
  9.  
  10. def find_string(alphabet):
  11.     n = len(alphabet)
  12.     string = list(alphabet)
  13.     loop(n-1, n, string)
  14.     return string
  15.  
  16. def check_string(string, alphabet):
  17.     n = len(alphabet)
  18.     perm_list = set()
  19.     for i in range(len(string)-n+1):
  20.         perm = string[i:i+n]
  21.         if sorted(perm) == sorted(alphabet):
  22.             perm_list.add(tuple(perm))
  23.     return len(perm_list) == factorial(n)
  24.  
  25. alphabet = [1,2,3]
  26. string = find_string(alphabet)
  27. print(string)
  28. print(check_string(string, alphabet))
  29. print(check_string([1, 2, 3, 1, 2, 1, 3, 2, 2], alphabet))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement