项目euler#59,错误答案

时间:2019-11-02 05:11:56

标签: python-3.x

我不知道为什么这段代码没有给出正确的答案

我在Intel Core i3处理器上运行了这段代码

from array import array

with open("cipher.txt","r") as file:

    main_list=file.read().split(",")

sub_list1=array("i",[])

sub_list2=array("i",[])

sub_list3=array("i",[])

for i in range(len(main_list)):

    if i%3==0:

        sub_list1.append(int(main_list[i]))

    elif i%3==1:

        sub_list2.append(int(main_list[i]))

    else:

        sub_list3.append(int(main_list[i]))


def is_valid(xor):

     if 32 <= xor <= 90:

        return True

     elif 97 <= xor <= 122:

        return True

     return False


ASCIIs2=list(range(97,123))

_lists=[sub_list1,sub_list2,sub_list3]

codes=[]

while len(codes)!=len(main_list):

    for _list in _lists:

        for key in ASCIIs2:

            codes_copy=[]

            for value in _list:

                n=int(value)^key

                if is_valid(n) :

                    codes_copy.append(int(value)^key)

                else:

                    break

            else:

                codes+=codes_copy

                break


print(sum(codes)) 

根据答案,sub_list1应该由103解密,但这表示它必须由101解密

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,结果发现密码文件已更改,并且互联网上所有可用的答案都专门针对该文件的较旧版本。因为其中包含一些圣经文本,这使一些人感到不安。您可以在这里进一步阅读:project euler-problem059