Python算法笔试题目,破解Hash值,回溯法
2014-10-13 22:07
351 查看
Find the string which has this hash: 25267566250558
The string has length8.
Characters can befrom: c,e,i,a,r,w,u,s,p
The hash functionworks like this:
hash(str):
1.LETTERS = c, e, i, a, r, w, u, s, p
2. h =7
3. forc in str:
1.i = index of c in LETTERS
2.h = 37 * h + i
4.return h
Please send us thestring you found, and the code you used to find it.
上边是题目。
下边是使用回溯法的枚举解法,运行代码几分钟后出现结果:
The string has length8.
Characters can befrom: c,e,i,a,r,w,u,s,p
The hash functionworks like this:
hash(str):
1.LETTERS = c, e, i, a, r, w, u, s, p
2. h =7
3. forc in str:
1.i = index of c in LETTERS
2.h = 37 * h + i
4.return h
Please send us thestring you found, and the code you used to find it.
上边是题目。
下边是使用回溯法的枚举解法,运行代码几分钟后出现结果:
# calculate the hash number of the str_hash str_hash_length = 8 hash_result = 25267566250558 LETTERS = ['c', 'e', 'i', 'a', 'r', 'w', 'u', 's', 'p'] def calculate_hash(str_hash): h = 7 for c in str_hash: # print c i = LETTERS.index(c) #+ 1 ### # print i, h = 37*h + i return h ## for test of calculate_hash() # str_hash = 'ec' # print calculate_hash(str_hash) ## calculate the str_hash using n-nary and recursive # instialize a list to store the characters str_hash_list = ['' for i in xrange(str_hash_length)] # print 'the type is ',type(str_hash_list) def find_str(k): if str_hash_length == k: # this conversion can move to just before it needs to print str_hash = ''.join(str_hash_list) str_hash_value = calculate_hash(str_hash) # print str_hash_value if str_hash_value == hash_result: print "yes! the string '%s' is found ,its hash is %d" %(str_hash,str_hash_value) #return ##!neglected, will it be ok when negelected?, ans: yes ## can add else: for c in LETTERS: #if str_hash_list[len(str_hash_list)-1] is not '': #print str_hash_list str_hash_list[k] = c find_str(k+1) def main(): find_str(0) if __name__ == '__main__': main()
相关文章推荐
- Python算法笔试题目,破解Hash值,N进制法
- 2014年阿里巴巴笔试题目(28题):最小三元数组距离最优算法
- 百度2014校招笔试题目题解(更新了第1题的算法,10.9下午)
- 【python】【leetcode】【算法题目2—Add Two Numbers】
- 【python】【leetcode】【算法题目344—Reverse String】
- 【python】【leetcode】【算法题目9—Palindrome Number】
- 一个笔试题目,望更方便的算法
- 【python】【leetcode】【算法题目383—Ransom Note】
- 用于解答算法题目的Python3代码框架
- 算法之美一书附录中笔试面试题目参考答案
- 【python】【leetcode】【算法题目389—Find the Difference】
- 2014年9.28号百度校招笔试题目算法题目1----不重复数题解
- Python笔试题目:求最大的K个数子,解法二,适合小型数据集的情况
- Python笔试题目:求最大的K个数子,解法一,最快速实现的方法
- 【python】【leetcode】【算法题目1—Two Sum】
- 算法学习 并查集(笔试题目:找同伙)
- 百度2014校招笔试题目题解(更新了第1题的算法,10.9下午)
- 整理的一些PYTHON笔试面试题目
- 【python】【leetcode】【算法题目4—Median of Two Sorted Arrays】
- 【python】【leetcode】【算法题目283—Palindrome Number】