0

これは私の最初の投稿です。質問をお読みいただき、誠にありがとうございます。

私は初心者のコーダーです。私は10年前に取得したコンピュータサイエンスのマイナーを持っています。簡単なコーディングをしたいという衝動に駆られ、チャンスが訪れたので、やりました!

ゲームの開発では、プログラムを実行して、特定のパラメーターを使用して特定の結果が得られる可能性を判断したいと思いました。私は興奮してそれが成功するポイントに到達しましたが、Google Scriptsは、勝率を計算するために60,000,000の可能なシナリオの実行を処理できませんでした。

「エラー:最大実行時間を超えました」というメッセージが表示されました。

私は自分とこのプログラムを実行する間の最短経路を見つけようとしています。アイデア:

1)最大実行時間を削除して、1日だけかかるようにする方法はありますか?Google Scriptsで実行する方法は他にありますか?2)乱数を入力することで、より少ない試行回数を実行できる可能性があります。Google Scriptsで乱数を生成する方法はありますか?3)Google Scripts以外でこの種のことを行う必要がありますか?もしそうなら、私が調べなければならないMac用の無料/手頃なコンパイラはありますか?Xcodeにインポートしてみましたが、戸惑い、簡単なコンパイル場所にたどり着けないようです。また、「C」にインポートすると、互換性の問題が発生します。私はそれを吸い上げてここでそれを改造しなければならないかもしれませんが。

参考までに、タイムアウトする関数は次のとおりです。

function dieFeeder(winCount, fSkill, fMagnitude, fHeart, fDie1, fDie2, fDie3, fDie4,   fDie5, cSkill, cMagnitude, cHeart, cDie1, cDie2, cDie3, cDie4, cDie5){
// a parent function to function questionMatrix, feeds the changing dice into it

 var matrixWinner;  

//This 'for' clause keeps going until all dice permutations have been tried out

 for (var i=0; i<60466176; i++){
//This part changes the dice to go through all combiations in a way similar to counting in base 6

if (cDie5 == 7){
  cDie5 = 1;
  cDie4 = cDie4+1;
}

if (cDie4 == 7){
  cDie4 = 1;
  cDie3 = cDie3 +1;
}  

if (cDie3 == 7){
  cDie3 = 1;
  cDie2 = cDie2 +1;
}  

if (cDie2 == 7){
  cDie2 = 1;
  cDie1 = cDie1 +1;
}  

if (cDie1 == 7){
  cDie1 = 1;
  fDie5 = fDie5 +1;
}  

if (fDie5 == 7){
  fDie5 = 1;
  fDie4 = fDie4 +1;
}  

if (fDie4 == 7){
  fDie4 = 1;
  fDie3 = fDie3 +1;
}  

if (fDie3 == 7){
  fDie3 = 1;
  fDie2 = fDie2 +1;
}      

if (fDie2 == 7){
  fDie2 = 1;
  fDie1 = fDie1 +1;
}  

cDie5 = cDie5 + 1;

//This part checks to see who wins and increases the winCount if it was the Favorite

matrixWinner = questionMatrix(fSkill, fMagnitude, fHeart, fDie1, fDie2, fDie3, fDie4, fDie5, cSkill, cMagnitude, cHeart, cDie1, cDie2, cDie3, cDie4, cDie5);

if (matrixWinner == 'favorite'){

  winCount = winCount +1;

}

}

  return winCount;

}
4

1 に答える 1

0
  1. 最大実行時間を引き上げる方法はありません。他のユーザー(私のような)もスクリプトを実行する時間を持てるように、制限があります!この問題の解決策は、問題を多くのサブ問題に分割することです。

    • 1つの解決策は、実行時間が一定のしきい値(たとえば、3分)を下回っている間もスクリプトの実行を継続することです(つまり、スクリプトの実行時間を追跡します)。次に、スクリプトに関連するすべての状態(変数など)を保存します。これらをScriptDbに保存します。次に、5分間のトリガーでスクリプトを実行します。スクリプトを再度実行すると、ScriptDbから値が読み取られ、中断したところから再開されます。
  2. 乱数を探している場合は、を使用してMath.random()ください。Google Apps Scriptsはjavascriptから構築されているため、基本的なjavascript関数を使用できます。

  3. #2に対する私の答えに関連して、あなたが示したのは完全にjavascriptなので、コードをWebページにコピーして実行することができます。(テストには、jsfiddleを使用できます)。また、定義する必要がありますif (cDie5 == 7){

于 2013-02-25T03:12:24.093 に答える