Чтобы найти ha sh, определите строку и другую строку P такой же длины (которая отличается от S) с таким же хешем - PullRequest
0 голосов
/ 27 апреля 2020

Попытка решить проблему перестановки строк, где нам дана строка S, и нам нужно найти ее ha sh и другую строку P такой же длины (которая не совпадает с S) с таким же ha sh. выведите лексикографически наименьший.

Мой подход заключался в том, чтобы найти перестановку (0,1,2, ... 25) длины 3, а затем из набора этих 3 мы находим ее сумму, и если равный хешированный ввод, тогда они сопоставляются с соответствующими ключами.

Кто-нибудь может мне помочь, это правильный способ решения этой проблемы. здесь ответ меняется с каждым прогоном

вот код

from itertools import permutations
no_of_testcases = int(input())
dict_nary = {'a':0,'b':1,'c':2,'d':3,'e':4,'f':5,'g':6,'h':7,'i':8,'j':9,'k':10,'l':11,'m':12,'n':13,'o':14,'p':15,'q':16,'r':17,'s':18,'t':19,'u':20,'v':21,'w':22,'x':23,'y':24,'z':25}

input_string= input()
hashz=0
for x in range(0,len(input_string)):
    hashz = hashz + dict_nary.get(input_string[x])
print(hashz)




def generate_all_permutatations(mylist):

    permset = set()
    for length in range(1,len(mylist)+1):
        permlist = list(permutations(mylist, 3))
        for item in permlist:
            permset.add(item)
    return list(permset)


def get_key(val):
    for key, value in dict_nary.items():
        if val == value:
            return key

    return "key doesn't exist"

permut=generate_all_permutatations(list(dict_nary.values()))
print(permut)
stz=[]
for x in permut:
    temp=list(x)
    #print(temp)
    sum=0
    for i in temp:
        sum=sum+i
    if sum==hashz:
        stz.append(x)

print(stz)

def tostring(y):
    stp=[]

    for x in y:
        temp=list(x)
        stx = set()
        for i in temp:
             stx.add(get_key(i))
        stp.append(''.join(stx))

    return min(stp)
print(tostring(stz))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...