1

SingPath 是一个交互式问题集网站,可跟踪您在多种编程语言中的进度。不幸的是,它有一些错误。最大的错误是:

您的代码返回时间过长。您的解决方案可能陷入无限循环。请再试一次。

运行问题集代码时出现多次。现在,在回答问题集问题时,要纠正错误,您只需重新运行代码即可。

但是,在问题创建者中,它会产生一个巨大的问题。本质上,您可以运行代码,直到它也可以在创建者中运行,这不是测试的问题。问题源于提交,problem/solution因为提交按钮会重新运行代码。这意味着您需要获得几乎不可能获得的两个连续正确答案(我已经尝试了一个小时)。需要在问题集中继续创建问题这一事实对错误的创建者来说是非常糟糕的。

所以(最后)这是我的问题,我怎样才能让下面的代码在没有这个错误的情况下在创建者中运行?

代码:

import string
import random

# Takes a blank string then replaces it with 3 random letters/numbers.

def string3(s1):    
    s2 = ''
    def randstring (size = 3, chars = string.ascii_lowercase + string.digits):
       a = ''.join(random.choice(chars) for x in range(size))
       return a

    ''' If the string brought in isnot equal to the string generated keep
        rerunning the random string generator '''

    while s1 != s2:    
        s2 = randstring()

    return 'True'

示例函数调用:

>>> string3('abc')
'True'
>>> string3('a2d')
'True'
>>> string3('234')
'True'

代码的作用:

无限猴子定理指出

如果有足够的时间,假设一只猴子随机打字,作为其输出的一部分,几乎肯定会产生莎士比亚的所有戏剧。

创建一个函数,该函数string3将随机生成 3 个字符的字符串,直到这些字符等于从函数接收到的字符串。提示:搜索随机字符串生成器以供参考。字符串中的所有字符都是小写的。

我是一名初学者程序员,我希望能发表一些评论,以便我可以理解更复杂的解决方案,尽管我将不胜感激任何帮助/建议!

另外,我已经通知了 SingPath 的支持人员该错误,但我想在今天尽可能多地练习!如果不可能在客户端修复错误,我完全理解!祝你好运!

重要编辑

我忘了提到无论代码中的循环如何,都会发生此错误。虽然我的程序对字符的不断随机分配非常紧张,但我知道这不是问题(它可能是一个问题,但不是问题 XD)。如果您不相信我,请尝试在这里制造问题:http: //singpath.appspot.com/

即使是简单的函数声明和返回,例如:

def add_one(n):
       return n+1

可能导致循环错误!如果我可以做任何事情(例外声明?)请告诉我!

4

3 回答 3

2

您的代码可能很慢,但无论您做什么都会看到该错误。我刚刚登录那里并开始沿着 Python 路径走下去,但在计算密集度不高的情况下遇到了同样的错误:

oops=317

该网站似乎正在发生的事情是,它被太多的流量猛烈抨击。(过去,我会说它们被斜线点缀,但我想说它们被堆栈溢出更正确。;)

于 2012-11-16T18:06:13.643 回答
0

From the original question (posted as an answer):

After multiple attempts of letting the program run and then submitting I finally got lucky and it submitted my problem "Sir Monkey Shakespeare". Crappy name for a problem I know but it finally got the job done. If you are having the same bug try to remove any private tests as it will provide correct answers almost every time due to the lack of having to run the code again.

于 2015-04-13T16:31:32.427 回答
0

这不是错误或错误,而是设计决策。您所做的计算量非常大(请参阅下面的说明),并且该网站的硬件预算可能有限。如果他们允许每个学生按照自己的意愿运行错误的无限代码,那么业务将很快陷入困境。所以他们决定你的代码应该被杀死。

有 27^n 个可能的 n 字符单词由(英语)拉丁字母的 27 个小写字符组成。这是要尝试的大量事情,即使 n 只有 3。此外,您正在随机生成字符串,因此不可避免地会重复一些内容,您可能需要生成超过 27^n 个字符串才能找到那个你正在寻找。

这是一个重要的教训——把需要一年才能完成的东西变白很容易。

于 2012-11-16T18:02:45.170 回答