Попытка решить проблему перестановки строк, где нам дана строка 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))