私は最近2048年のゲームに遭遇しました。類似のタイルを4つの方向のいずれかに移動して結合し、「より大きな」タイルを作成します。移動するたびに、新しいタイルが空の位置にランダムに表示され、2またはのいずれかの値が表示されます4。すべてのボックスがいっぱいになり、タイルをマージできる動きがないか、値がのタイルを作成すると、ゲームは終了します2048。 1つは、明確に定義された戦略に従って目標を達成することです。それで、そのためのプログラムを書くことを考えました。 私の現在のアルゴリズム: while (!game_over) { for each possible move: count_no_of_merges_for_2-tiles and 4-tiles choose the move with a large number of merges } 私がやっていることは、いつでも、タイルを値2とマージしようとする4ことです。つまり、2と4タイルを最小限にしようとしています。この方法で試してみると、他のすべてのタイルが自動的にマージされており、戦略は良いようです。 しかし、実際にこのアルゴリズムを使用すると、ゲームが終了するまでに約4000ポイントしか得られません。最大点AFAIKは20,000ポイントをわずかに超えており、私の現在のスコアよりもはるかに大きいです。上記よりも良いアルゴリズムはありますか?
ほとんどの場合、リストに重複があるかどうかを確認するプログラムを作成する必要があり、リストに重複がある場合はそれらを削除し、重複/削除されなかったアイテムを含む新しいリストを返します。これは私が持っているものですが、正直に言うと何をすべきかわかりません。 def remove_duplicates(): t = ['a', 'b', 'c', 'd'] t2 = ['a', 'c', 'd'] for t in t2: t.append(t.remove()) return t
質問 アルゴリズムの時間の複雑さを見つける方法は? SOに質問を投稿する前に何をしましたか? 私はこれ、これと他の多くのリンクを通過しました しかし、時間の複雑さを計算する方法についての明確でわかりやすい説明を見つけることができた場所はありませんでした。 私は何を知っていますか? 以下のコードのように単純なコードを言ってください: char h = 'y'; // This will be executed 1 time int abc = 0; // This will be executed 1 time 以下のようなループがあるとします。 for (int i = 0; i < N; i++) { Console.Write('Hello World !'); } int i = 0; これは一度だけ実行されます。時間は実際にi=0は宣言ではなく計算されます。 i …