Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from math import factorial
- from random import shuffle
- def loop(k, n, string):
- if k > 0:
- for i in range(n-k):
- loop(k-1, n, string)
- seg = string[-n:-n+k]
- seg1 = list(reversed(seg[-2:]))
- seg2 = seg[:-2]
- shuffle(seg2)
- string += seg1 + seg2
- loop(k-1, n, string)
- def find_string(alphabet):
- n = len(alphabet)
- string = list(alphabet)
- loop(n-1, n, string)
- return string
- def check_string(string, alphabet):
- n = len(alphabet)
- perm_list = set()
- for i in range(len(string)-n+1):
- perm = string[i:i+n]
- if sorted(perm) == sorted(alphabet):
- perm_list.add(tuple(perm))
- return len(perm_list) == factorial(n)
- alphabet = [1,2,3,4,5,6]
- for i in range(20):
- string = find_string(alphabet)
- print(''.join(str(n) for n in string), check_string(string, alphabet))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement