フロッガーチャンピオン


11

ゲーム

私たちのほとんどは、Froggerについて知っています。これは、80年代のアーケードゲームで、目的は、忙しい高速道路とハザードで満たされた池を安全に渡って家に到着することです。

チャレンジが発行されたフロッガークローンを開発するために、いくつかのヶ月前。しかし、Froggerをプレイできるのに、なぜFroggerをクローンするのですか?:)

次の単純化された再生グリッドを検討してください。

 XXXXXXXXXXXXXXXXXXXXXXX  North Safe Zone
 -----------------------
|                       | <<<<       Express Lane West        (Lane 1)
|                       |     >      Gridlock East            (Lane 2)
|                       |   <<       Freeflowing Traffic West (Lane 3)
|                       |    <       Gridlock West            (Lane 4)
|                       |     >>>>   Express Lane East        (Lane 5)
 -----------------------
 XXXXXXXXXXX@XXXXXXXXXXX  South Safe Zone
 \__________ __________/
            '
  23 cells horizontally

それぞれ23セル幅の5つの車線と、23セル幅の2つの安全なゾーン(カエルが安全に左右に移動できる場所)があります。右と左の境界線は図をわかりやすくするために無視してもかまいません。

@上の図のa で示されているように、カエルは南の安全地帯、中央(12番目)のセルで始まります。

ゲームの時間は、フレームと呼ばれる個別のステップに分割されます。フロギーは速いカエルであり、フレームごとに任意の方向(上、下、右、左)で1つのセルをホッピングできます。また、どのフレームでも静止したままにすることもできます。5車線の交通は、次のように一定の速度で移動します。

  • 高速レーン西(レーン1)のトラフィックは、フレームごとに2セル左に移動します
  • グリッドロック東車線(車線2)のトラフィックは、1フレームごとに1セル右に移動します
  • 自由に流れる交通西車線(車線3)の交通は、フレームごとに1セル左に移動します
  • グリッドロック西車線(車線4)のトラフィックは、1フレームごとに1セルずつ移動します
  • エクスプレスレーンイースト(レーン5)のトラフィックは、フレームごとに2セル分右に移動します

トラフィック自体は約1に対して一意に定義されます。このテキストファイルの 3,000タイムステップ。「交通」は、車両と車両間のスペースで構成されます。スペースではないキャラクターは車両の一部です。テキストファイルには、5つの車線に対応する5つの行が含まれています(同じ順序で)。

西行きの車線の場合、フレーム0の開始(ゲームの開始)で、車線の最初の車両はプレイグリッドの右端を少し超えていると見なします。

東行きの車線の場合、車両が文字列の最後から表示されるという意味で、トラフィック文字列は「後方」と見なされる必要があります。フレーム0の開始時に、これらの車線の最初の車両が競技場の左端を少し超えていると見なします。

例として考えてください:

Traffic Lane 1:  [|==|  =
Traffic Lane 2:  |) =  o
Traffic Lane 3:  (|[]-[]:
Traffic Lane 4:  <| (oo|
Traffic Lane 5:  |==|] :=)

再生グリッドは次のように表示されます。

Start of Frame 0       XXXXXXXXXXXXXXXXXXXXXXX
                                              [|==|  =
                |) =  o
                                              (|[]-[]:
                                              <| (oo|
              |==|] :=)
                       XXXXXXXXXXXXXXXXXXXXXXX

Start of Frame 1       XXXXXXXXXXXXXXXXXXXXXXX
                                            [|==|  =
                |) =  o
                                             (|[]-[]:
                                              <| (oo|
                |==|] :=)
                       XXXXXXXXXXXXXXXXXXXXXXX

Start of Frame 2       XXXXXXXXXXXXXXXXXXXXXXX
                                          [|==|  =
                 |) =  o
                                            (|[]-[]:
                                             <| (oo|
                  |==|] :=)
                       XXXXXXXXXXXXXXXXXXXXXXX

Start of Frame 3       XXXXXXXXXXXXXXXXXXXXXXX
                                        [|==|  =
                 |) =  o
                                           (|[]-[]:
                                             <| (oo|
                    |==|] :=)
                       XXXXXXXXXXXXXXXXXXXXXXX

レーン内のすべてのトラフィックが「枯渇」した(つまり、文字列がなくなった)後、文字列内のすべての文字はスペースと見なされます。

次のいずれかが発生すると、カエルはつぶされます。

  • カエルは、任意のフレームで、車両が占有するセルを占有します
  • カエルは高速車線で静止したままで、1フレーム幅の車両がそのフレームで彼の上を通過します。
  • カエルは西に向かっている車両を「通過」して東にジャンプするか、東に向かっている車両を西にジャンプします
  • カエルは、任意のフレームで7(ライン)x 23(セル)のグリッドの外側にジャンプします

カエルがつぶされる唯一の条件であることに注意してください。特に、同じフレーム内で幅1の車両が通り過ぎる高速車線のセルに出入りするカエルのように、「with」トラフィックに沿って飛び回るカエルは許容されます。

客観的およびスコアリング

プログラミングチャレンジの目的は、最後の車両がプレイグリッドを出る前にできるだけ多くの道をカエルに渡させることです。つまり、プログラムはフレームXの完了後すぐに終了します。フレームXは、グリッドを車両がもう存在しない状態にする最初のフレームです。

プログラムの出力は、次のエンコードを使用したカエルの一連の動きを含む文字列(またはテキストファイル)である必要があります。

<   frog moves left
>   frog moves right
^   frog moves up
v   frog moves down
.   frog remains stationary

たとえば、この文字列<<^.^は、カエルが左に2回移動してから上に移動し、1フレームだけ一時停止してから再び上に移動することを示しています。

カエルが南の安全地帯から北の安全地帯に渡るたびに1つのポイントが獲得され、カエルが北の安全地帯から南の安全地帯に渡るたびに1つのポイントが獲得されます。

いくつかの重要なルール:

  1. カエルをつぶしてはいけません。
  2. ソリューション(移動のシーケンス)をプログラムコードと共に、インラインまたはテキストファイルとして(pastebin.comを使用して)投稿してください。
  3. 私たちのカエルは先見性があり予知性があります。したがって、あなたのプログラムは、解決策を模索している間、あらゆるフレームのあらゆるトラフィックデータを使用できます。これには、再生グリッドにまだ到達していないトラフィックのデータが含まれます。
  4. グリッドは回り込みません。グリッドを出ると、カエルが押しつぶされるため、許可されません。
  5. トラフィックが「リセット」したり、カエルが「テレポート」したりすることはありません。シミュレーションは継続的です。
  6. カエルは出てから南の安全地帯に戻ることがありますが、これはポイントとしてカウントされません。北の安全地帯についても同様です。
  7. コンテストの勝者は、最大数の交差をもたらす移動シーケンスを生成するプログラムです。
  8. その他の質問や懸念事項については、コメントセクションでお気軽にお問い合わせください。

追加のインセンティブについては、できれば+100 repの賞金を受賞プログラムに追加します。

ボーナス

カエルが触れるグリッドのすべてのコーナーで、ベーススコアに+ 2.5% *(最大+ 10%)。グリッドの四隅は、2つのセーフゾーンの左端と右端のセルです。

一連の動きで、シミュレーション全体で開始セルの左または右に+/- 4セル以内にカエルを閉じ込めた場合、ベーススコアに+ 25%(もちろん自由に垂直に移動できます)。

スコアリングボーナスはありませんが、OPの特別な小道具は、n 'ソリューションのクイックバリデーターを投稿した人に送られるので、プログラムを作成する必要はありません。;)バリデーターは単純に一連の動きを受け入れ、その合法性を(ルールおよびトラフィックファイルごとに)確認し、そのスコア(つまり、交差点の総数)を報告します。

*合計スコアは、ベーススコアにボーナスを加えたものに等しく、最も近い整数に切り捨てられます。

頑張ってフロッギング!


ソリューションバリデーターを投稿する場合:回答として投稿しないでください
ジオビット14

確かに。コメント内のコードへのリンク、またはソリューションへの補足として、バリデーターを送信するための好ましい方法です。
COTO

遅い車線が進む最初のフレームは、他の車線が進む最初のフレームと同じですか、それとも1つ後のフレームですか?
feersum 14

また、すべての車がフィールドをクリアした最初のフレームでエンドゾーンに到達することで得点することは可能ですか?
feersum 14

@feersum:遅いレーンは1フレーム後に進みます。例に示されているように、最初のフレームでは動きがありません。最後のフレームでのカエルのスコアリングに関しては、はい、可能です。カエルが最後の車両が競技場を出るのと同じフレームのセーフゾーンに移動した場合、1ポイントが獲得されます。
COTO 14

回答:


5

C ++:176

出力:

176
^^^^^^>vvvvvv>^^^^>^^>>>>>>><<<.vv>v<<<.vvv<<<<<<^.^.^.^.>.>^^<.>>>>>>v>v>.>v<<<<v.<.vv<<<<<^^.<^<<<<<<^.^^>>>>vv>.>.v<v.vv>>^>>^<^<<<<<<<^>.>^^<<<.>>>>>vv>v<vvv<<<<<^^.<^^^^.....vv>.>.>.>v<<vvv<<>>>>^>^<.<.^^>^^>>>>vv.>v<vv.v^>^<.<.<^<^>.>^^>>>>vv.v<<<<<<.vvv<<<<^^^<<v^^.>.^^..>>>>>>vv>.>.v.vvv>>>^>^^<<<<<<<<<^>.>^^>>>>vvv<<v.<.vv<<<<<<>>>>>^^^<<<^^^<<>>vv>.v<<>vvv<<><>>>>>>>^>^^<^^^<.>>>>>>>>vv>.>v<<<vvv<<<<<^^^<<v.<.<^<<^.^<<^...>>>>>>>>>>>>>vv>v<vvv<<<<<<<<^>^.<.^^>.>^^<<<<<<<..>>>>vv>.vvvv<<<<>^.v>>>^^.^^>^<^<>>>>>>>>>vv>vvvv<<<<^^^<^>^<<^.>>vv>v<vvv<<<<<<<>>>>>>>^>^^^.^^>>>>>vvv<<vvv<<<^^^^^^<vvv<<<<<<<vvv<<<>>>>>>>>^^.<.<.^.^.^<^<>>>>>>>>>>vvv<<.vvv<<<^^<^<<^^<<^<<<>>>>vv>.vvvv>>^>>^<.<.<^<<<<<.^^<<^.......>vv.>.>.>v<vvv>>>>>>^>^.<.<^<.^^^<.>>>>>>>vvv<<<v.<vv<<<^^<.<.<.<^<<<^>^^..........v<vvvv>v>>>>>^>>^^^>^^>>>vv>v<vvv<<<<<<<<>^^.<.<^<^^^<.........>vv.>.vvvv>>>>^^<.<.<^^^<^<<.v<v>.>.>.>.>.>.>.vvv.v<<<<<^^<^<^>.>.>.>.^<^.>>>>>>>>vv>v<<vvv<<>>>>>^^^.^.>^<^<<<<<<<<.vv.>.v<<<.vvv<>>>>>^>^.<.<.<.<^^.^<<^<.....>>vvv<.>>vvv<<<>>>>>>>>^^^<<<.^.>.>^^.>>>>>vv.>v<vvv<<<>>>>>>^>^<^<<^.^^<vvv<<<<<vv.v<>>>>>>>>>>^>^.^^>^^<<<<.>vv.>.vvvv>^>>^.<.<.<^<<<^>^^>>>vv>v<<<<<vvv<<<>>>>>^^<.<.<.<.<^<^>.^^.>>>>>vv>v<>vvv<<<<<<<^>^.<^<<<<<<<^^^.>>>>>vv>v<>vvv>>>^^<.<^<<<^>^^.>>>>vv>.v<<vvv<<<<<^^^<<<<<^>.^^<>>>>>>>vv>.>v<<vvv<<<<<<<>>>^>>.>^^^.>^^<>>>>>>vv>vv.<.<.vv>>>>^^<.<.<.<^<<^.>^^.>>>>>vv.>.>v<<vvv<<>>>>>^^<.<.<.^^>.>.>^^<<<<<<<<.>>>>>>vv>v<<v.<.<vv<<<<^^.<^<<<.^^^<.vv.>v<vvv<<<>>>>>>^>^<^<<^.^<^<<.>>vv>.>.>.>vvvv>>>>>>^>^^^^^<<<.vvv<<<<<<vvv>>>>>^>^<.<^<<^.>.>.^^>>>>vv>.>v<<<<<<vvv<<<<^^^<.^.>^^>>>>vvv<<v.vv<<<^>>^^<<<.^^<<^>>>>>>>>>vvv.v.vv<>>>>>^>^^<<<<<<<<<<<<<<<<^^^..>>>>>vv>.>.>.>v<<v.<.<.vv<<<<<^^^<^>.^^...>>>>>>>>vv.v<.vvv>>>^>^<.<^^^^>>>vv>v<<<vvv<<<<>>>>>>^>^.<.<^<^>.>^^.>>>>>vv.v<<<<<<<<vvv<<<<^^<^<<<<<><^>.>^^>>>>vv.>.>.vvv.v>>>>>>>^^<.<^<<^^^>>>vv>.>.>.>.>v<<v.<.<vv>>>>^^^<<<<<.^.>^^>>>vv>.>v<vvv<<<<^^<.<.<.^^>^^>>>vv>.>.v<<<v.<vv<<<<^^.<^<<<^^^>>>>vvvvvv<<<<<<<<>^^.^>>^^^<>>>>>>>vvv<<<v.vv>>>>>^>>^^<<<<<^>.^^>>>>vv>.>v<<<<vvv<<<^^<.<.<.<^<<<<<^>^^>>>>vv.>vv.v.v<^>.>^.<.^^^^>>>>vv>.>.>.v<<<<<<vvv>>>>^^<.<.<^<<^^<^>>>>>>vv>v<<.vvv^>^^<<<^>^^<<<<<<.vvv<<vv>.v>>>>>>^>.>^^<<<<<^>.>.>.>.>.^^>>>>vv>.>.>v<<<<<vvv<<<<^^<^<<^.^^>>>>vv>.>.>.>v<vvv<<<<<^^.<.<^<<^^^>>>>>>>>>>>vv>.>.>.>.>vvvv<<<<^^.<.<^<^^^<<<<<<vvv<v.<vv<<<<^v>>>>>>>>>>^^^<.^.>.>.^^>>>>vvv<<<<<<<vvv<<<<<<<>^^.<^<.^^^.>>>>vv>v<vvv<>>>>^^.<.^.^.>.^<^>>>>>>>>vvvv.<.<vv<<<<^^^<<<<<^>.^^<.vv>.v<<vvv<<><>>>>>^>>^.<^<^^^<<<.>>vv>.>v<<<<v.vv>^>>^.<^^.^^.>>>>>vv>.>.>.v<v.<vv<<<<<^.^^^.>^^<>>>>>>vv>.v<<<v.<vv<<<<>>>>>>>>>>>^^<.<.<.<.<^<<^^<^<<<>>>>>>>vv>v<<<vv.v>>>>>>>>^>^<.<^<<<<<<<<<<<.^.>^^<<<vvv.v.<vv<<<^.>>^.<^^.>.>^^<<......vv.v>vvv>>>^.v^>>^^<<^^^<.>>>>>>>vvv<v.<.<.vv<<<<^^<.<.<.^^^^<.>>>>>>>>vvv<v.<vv^.>^^<<^^^vv>vvvv^>>>>>>>^^^^^vvvvvv^^^^^^vvvvvv>>>>

訪問されたコーナーの位置X時間Xセットの状態の組み合わせは800万個未満であるため、1秒未満で徹底的に検索できます。コードにバグがなければ、打ち負かすことはできません。最適な戦略は、ボード全体を使用することでした。これにより、カエルが道路を160回横断できるようになりました。交通量が非常に多かったため、コーナーを訪れるのに交差点はかかりませんでした。

/* feersum  2014/9
 /codegolf/37975/frogger-champion */

#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
#include <cstring>

#define B(F, CST, X, Y) best[ ((F)*NCST + (CST)) * BS + (Xmax-Xmin+1) * ((Y)-Ymin) + (X)-Xmin]
#define TL(i) ((int)t[i].length())
#define ABSPEED(I) (speed[i]<0?-speed[i]:speed[i])
#define errr(X) { cout<<"ERROR!!!!!!!!"; return X; }

#define DRAW 0
#if DRAW
    #include <unistd.h>
#endif


using namespace std;

int bc(int cs) {
    int c = 0;
    while(cs) {
        c += cs&1;
        cs >>= 1;
    }
    return c;
}

int main()
{
    const bool bonusTwentyfive = false;
    const int COLS = 23, T_ROWS = 5, YGS = T_ROWS + 2, XGS = COLS + 2;
    string t[5];
    int speed[] = {-4, 1, -2, -1, 4};
    ifstream f("t.txt");
    for(int i = 0; i < T_ROWS; i++)
        getline(f, t[i]);
    if(f.fail())
        return 1;
    f.close();
//for(int i = 0; i < 5; i ++)t[i]="xxx";

    char g[XGS][YGS];

    int mov[][3] = { {-1,  0, '<'},
                     {+1,  0, '>'},
                     { 0, -1, '^'},
                     { 0, +1, 'v'},
                     { 0,  0, '.'} };


    int Ymin = 0, Ymax = YGS-1;


    const int Xstart = 11, Xmaxmove = bonusTwentyfive ? 4 : 10;
    const int Xmin = Xstart - Xmaxmove, Xmax = Xstart + Xmaxmove;

    const int NCST = bonusTwentyfive ? 1 : 1<<4;

    int maxfr = 0;
    for(int i = 0; i < T_ROWS; i++) {
        if(speed[i] < 0) {
            for(int m = 0, n = t[i].length()-1; m < n; ++m,--n)
                swap(t[i][m], t[i][n]);
        }
        int carslen = TL(i);
        for(char*c = &t[i][speed[i]>0?TL(i)-1:0]; carslen; carslen--, speed[i]>0?--c:++c)
            if(*c != ' ')
                break;
        if(carslen)
            maxfr = max(maxfr, ( (carslen + COLS) * 2 + ABSPEED(i)-1 ) / ABSPEED(i));
    }
    const int BS = (Xmax-Xmin+1)*(Ymax-Ymin+1);
    int *best = new int[(maxfr+1)*NCST*BS];
    memset(best, 0xFF, (maxfr+1)*NCST*BS*sizeof(int));
    memset(g, ' ', sizeof(g));
    B(0, 0, Xstart, Ymax) = 0;

    for(int fr = 0; fr < maxfr; fr++) {
        for(int r = 0; r < T_ROWS; r++) {
            for(int x = 0; x < XGS; x++) {
                int ind = speed[r] > 0 ? TL(r)-1 + x - fr*speed[r]/2 : x - (XGS-1) - fr*speed[r]/2;
                g[x][r+1] = ind >= 0 && ind < TL(r) ? t[r][ind] : ' ';
            }
        }
        for(int x = Xmin; x <= Xmax; x++) {
            for(int y = Ymin; y <= Ymax; y++) {
                if(g[x][y] != ' ')
                    continue;
                for(unsigned m = 0; m < sizeof(mov)/sizeof(mov[0]); m++) {
                    int X = x + mov[m][0], Y = y + mov[m][1];
                    if(X < Xmin || X > Xmax || Y < Ymin || Y > Ymax)
                        continue;
                    if(!(mov[m][0]|mov[m][1]) && y > 0 && y > T_ROWS && g[x][y-speed[y-1]/4] != ' ')
                        continue;

                    int csor = ((X==Xmin|X==Xmax)&(Y==Ymin|Y==Ymax)&!bonusTwentyfive) << ((X==Xmax) + 2*(Y==Ymax));

                    for(int cs = 0; cs < NCST; cs++) {
                        int N = B(fr, cs, x, y);
                        if(!~N)
                            continue;
                        if((!(N&1) && y == 1 && Y == 0) ||
                              (N&1 && y == T_ROWS && Y == T_ROWS+1))
                            ++N;
                        if(N > B(fr+1, cs|csor, X, Y))
                            B(fr+1, cs|csor, X, Y) = N;
                    }


                }
            }
        }
    }

    int score = 0, xb, yb, cb, nb;
    for(int x = Xmin; x <= Xmax; x++) {
        for(int y = Ymin; y <= Ymax; y++) {
            for(int cs = 0; cs < NCST; cs++) {
                if(B(maxfr, cs, x, y) * (40 + bc(cs)) / 40 >= score) {
                    score = B(maxfr, cs, x, y) * (40 + bc(cs)) / 40;
                    xb = x, yb = y, cb = cs, nb = B(maxfr, cs, x, y);
                }
            }
        }
    }
    char *mvs = new char[maxfr+1];
    mvs[maxfr] = 0;

    for(int fr = maxfr-1; fr >= 0; --fr) {
        for(int r = 0; r < T_ROWS; r++) {
            for(int x = 0; x < XGS; x++) {
                int ind = speed[r] > 0 ? TL(r)-1 + x - fr*speed[r]/2 : x - (XGS-1) - fr*speed[r]/2;
                g[x][r+1] = ind >= 0 && ind < TL(r) ? t[r][ind] : ' ';
            }
        }
        for(int x = Xmin; x <= Xmax; x++) {
            for(int y = Ymin; y <= Ymax; y++) {
                if(g[x][y] != ' ')
                    continue;

                for(unsigned m = 0; m < sizeof(mov)/sizeof(mov[0]); m++) {
                    int X = x + mov[m][0], Y = y + mov[m][1];
                    if(X < Xmin || X > Xmax || Y < Ymin || Y > Ymax)
                        continue;
                    if(!(mov[m][0]|mov[m][1]) && y > 0 && y > T_ROWS && g[x][y-speed[y-1]/4] != ' ')
                        continue;

                    int csor = ((X==Xmin|X==Xmax)&(Y==Ymin|Y==Ymax)&!bonusTwentyfive) << ((X==Xmax) + 2*(Y==Ymax));

                    for(int cs = 0; cs < NCST; cs++) {
                        int N = B(fr, cs, x, y);
                        if(!~N)
                            continue;
                        if((!(N&1) && y == 1 && Y == 0) ||
                              (N&1 && y == T_ROWS && Y == T_ROWS+1))
                            ++N;
                        if(X==xb && Y==yb && N == nb && (cs|csor) == cb) {
                            mvs[fr] = mov[m][2];
                            xb = x, yb = y, nb = B(fr, cs, x, y), cb = cs;
                            goto fr_next;
                        }
                    }
                }
            }
        }
        errr(3623);
        fr_next:;
    }

    if((xb-Xstart)|(yb-Ymax)|nb)
        errr(789);
    #if DRAW

        for(int fr = 0; fr <= maxfr; ++fr) {
            memset(g, ' ', sizeof(g));
            for(int r = 0; r < T_ROWS; r++) {
                for(int x = 0; x < XGS; x++) {
                    int ind = speed[r] > 0 ? TL(r)-1 + x - fr*speed[r]/2 : x - (XGS-1) - fr*speed[r]/2;
                    ind >= 0 && ind < TL(r) ? g[x][r+1] = t[r][ind] : ' ';
                }
            }
            g[xb][yb] = 'F';
            for(int y = 0; y < YGS; y++) {
                for(int x = 0; x < XGS; x++)
                    cout<<g[x][y];
                cout<<endl;
            }
            cout<<string(XGS,'-')<<endl;
            usleep(55*1000);
            for(int i = 0; i < 5; i++) {
                if(mvs[fr] == mov[i][2]) {
                    xb += mov[i][0];
                    yb += mov[i][1];
                    break;
                }
            }
        }

    #endif
    cout<<score<<endl;
    cout<<mvs<<endl;
}

1
「状態」をどのように定義しているかわかりません。システムの状態をカエルの動きの時間プロファイルと見なすと、5 ^ 3000の入力の動きプロファイルに対応する約5 ^ 3000の状態があります(〜3000フレームごとに5つの可能な入力)。明らかに、これらのほんの一部だけが許容可能になることが判明しますが、許容可能な状態の数は数百桁も検索できません。最終回答を提出する際には、それに沿って移動リストを提出してください。
COTO 14

また、明確でない場合は、「つぶれた」ルールに違反していない限り、カエル交通中に左右にジャンプできることに注意してください。カエルが横方向の動きなしで垂直方向に飛び回ることができる窓を待つことに限定されません。
COTO 14

@COTO「状態」の計算では、重要なこと、つまりこれまでの交差点の数を忘れてしまったので、より明確な説明をしようとしました。仕様はかなりよく書かれていました。これらの特定の問題のすべてを初めて正しく解釈したようです。
feersum 14

162 + 10%= 178のクロッシングとして最適値を計算しますが、これは十分に近い値です。私はこれがブルートフォース対応になることを本当に望んでいませんでしたが、明らかに、問題をもっと考えるべきだったはずです。公平に、私はあなたに100人の代表を授与します。
COTO 14

どうやら「賞金」を授与する前に24時間待たなければならないようです。どんな理由で:誰が知っている。SEは回答を時間通りに報いることを望まないはずです。そうすれば、テロリストが勝つでしょう。:O
COTO
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.