1

SingPathは、複数のプログラミング言語内での進行状況を追跡するインタラクティブな問題セットWebサイトです。残念ながら、いくつかのバグがあります。最大のエラーは次のとおりです。

コードを返すのに時間がかかりすぎました。ソリューションが無限ループに陥っている可能性があります。もう一度やり直してください。

問題セットコードを実行すると、複数回表示されます。これで、問題セットの質問に答えながらバグを修正するために必要なのは、コードを再実行することだけです。

ただし、問題の作成者の中で、それは巨大な問題を作成します。基本的に、クリエーターでも機能するまでコードを実行できますが、これはテストの問題ではありません。この問題はproblem/solution、送信ボタンがコードを再実行するために送信することに起因します。これは、2つの連続した正解を取得する必要があることを意味しますが、これはほぼ不可能です(私は1時間試しています)。問題セット内で続行するには問題の作成が必要であるという事実は、バグのある作成者にとってはかなり台無しになっています。

それで(最後に)ここに私の質問があります、どうすればクリエーターでこのエラーなしで次のコードを実行させることができますか?

コード:

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'

コードの機能:

無限の猿定理は次のように述べています

十分な時間があれば、ランダムに入力する架空のサルは、その出力の一部として、シェイクスピアのすべての戯曲をほぼ確実に作成します。

string33文字の文字列が関数から受け取った文字列と等しくなるまで、それらの文字列をランダムに生成する関数を作成します。ヒント:参照用にランダムな文字列ジェネレーターを検索してください。文字列内のすべての文字は小文字になります。

私は初心者プログラマーです。助けや提案はありがたいですが、もっと複雑な解決策を理解できるように、コメントをいただければと思います。

また、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

これはバグやエラーではなく、設計上の決定です。あなたがしていることは非常に計算集約的であり(説明については以下を参照)、ウェブサイトはおそらく限られたハードウェア予算を持っています。彼らが各学生に彼らが望むだけバグのある無限のコードを実行することを許可した場合、ビジネスは非常に急速に炎上するでしょう。それで彼らはあなたのコードを殺すべきだと決めました。

(英語)ラテンアルファベットの27個の小文字で構成される27^n個の可能なn文字の単語があります。nが3の場合でも、これは多くのことを試みます。さらに、ランダムに文字列を生成しているため、必然的にいくつかが繰り返され、1つを見つけるために27^nをはるかに超える文字列を生成する必要があります。あなたは探している。

これは重要な教訓です-完了するのに1年かかるものを白くするのは非常に簡単です。

于 2012-11-16T18:02:45.170 に答える
0

元の質問から(回答として投稿):

プログラムを実行してから送信することを何度も試みた後、私はついに幸運に恵まれ、問題「SirMonkeyShakespeare」を送信しました。私が知っている問題の安っぽい名前ですが、それはついに仕事を成し遂げました。同じバグがある場合は、コードを再実行する必要がないため、ほぼ毎回正しい答えが得られるため、プライベートテストを削除してみてください。

于 2015-04-13T16:31:32.427 に答える