cephurs icon

anon

cephurs | PRO | 10/24/18 07:11:45 PM UTC | 0 ⭐ | 762 👁️ | Never ⏰ | []
Python |

770 B

|

None

|

0 👍

/

0 👎

from math import factorial
 
def loop(k, n, string):
    if k > 0:
        for i in range(n-k):
            loop(k-1, n, string)
            string += reversed(string[-n:-n+k])
        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]
string = find_string(alphabet)
print(string)
print(check_string(string, alphabet))
print(check_string([1, 2, 3, 1, 2, 1, 3, 2, 2], alphabet))

Comments