任务是找到一个数字序列,它可以被某个数字转置或反转然后转置,嵌套在另一个相等或更大的数字集内。输入来自文本文件。如果数字按原样或转置找到,则输出找到它的起始索引,否则如果它被反转或反转并转置,则输出索引后跟反转。
示例 - 如果要查找的数字是 67654,则可以找到 45432(向下转置 2)或 32345(反转)或 54567(反转并向上转置 2)
Input
67654
14676545
43234545679
905
#
第一行是要搜索的内容 (67654),其余行是要搜索的内容。
Output
3
7
10 inverted
14 inverted
我的想法是建立一个数字列表,如果要查找的数字与该数字反转,则该列表是每个数字之间的差异。例如 67654 将创建一个列表 [-1, 1, 1, 1]。然后,我将遍历字符串的每个数字来搜索,尽管使用滑动窗口来检查它是否出现。我对倒置也做了同样的事情。
diffs = [int(name[x]) - int(name[x + 1]) for x in range(0, len(name) - 1)] #name stores the fist line of input
invertedName = ''.join([str(9-int(x)) for x in name])
currDiffs = []
for i in range(len(name)-1):
currDiffs.append(int(piece[i]) - int(piece[i+1])) #piece is the string being searched
for i in range(len(name)- 1, len(piece) - 1):
currDiffs.pop(0)
currDiffs.append(int(piece[i]) - int(piece[i+1]))
Compare(diffs,currDiffs) # check if theyre the same
像这样回答我发现自己几乎所有的答案都不正确。任何有关如何解决我的方法或是否有问题的建议将不胜感激。