0

私はVB.NETを使用していて、いくつかのアルゴリズムや疑似コード、または次のことを実行できるVB.NETコードを考え出そうとしています(うまくいけば、これをうまく説明できます)。

Cob1とCob2の2つのコレクションオブジェクトがあります。これらのコレクションオブジェクトは、ICobと呼ばれるインターフェイスを実装するオブジェクトを格納します。ICobには3つのプロパティがあります。ブール値のIsSelectedプロパティ、TimeSpanを返すLengthと呼ばれるプロパティ、および短整数であるRatingプロパティ。

これで、Cob1のコレクションには約100個のオブジェクトが保存され、Cob2は空のコレクションになりました。私がやりたいのは、Cob1からオブジェクトを選択し、それらをCob2にコピーすることです。ただし、オブジェクトを選択するときは、次のルールに従う必要があります。

  1. タイムスパンを指定できるようにしたいのですが、(Lengthプロパティに基づいて)指定したタイムスパンに収まるように十分な数のオブジェクトを選択する必要があります。したがって、たとえば、関数に10分のタイムスパンを渡す場合、10分のウィンドウ全体を埋めるのに十分なオブジェクトを選択するか、可能な限りいっぱいに近づける必要があります。

  2. オブジェクトを2回選択しないでください。

  3. (Ratingプロパティを介して)より高い評価を持つオブジェクトは、他のオブジェクトよりも選択される可能性が高くなります。

  4. 評価に関係なく、過去30分間に選択されたオブジェクトを再度選択することはできません(各オブジェクトが最終的に少なくとも1回選択されるようにするため)。

誰かがこれを達成する方法についていくつかのヒントを教えてもらえますか?ヒントは、メンタルプロセス、VB.NETサンプルコード、擬似コード、または私に役立つ可能性のあるその他のものの形をとることができます。

ありがとう

編集:

実生活で何をしようとしているのかを明らかにしておけば、みんなに役立つかもしれません。

私はラジオ局用のソフトウェアを書いています。これは、コンピューター化されたプログラムマネージャーのように、再生する音楽と広告を自動的に選択します。

長さはサウンドバイト(曲または広告)の長さを表し、評価はそれだけです。曲が人気のある場合、それはより多くの放送時間を取得します。広告主がより多くのお金を払うならば、それはまたより多くの放送時間を得る。

したがって、私のプログラムでは、20分ほど再生される曲を選択してから、約5分程度再生する広告をいくつか選択する必要があります。

うまくいけば、これは少し役立つでしょう。

皆様からのご意見ありがとうございました!

アラン

4

2 に答える 2

0

4.を実装するには、Cob が最後に選択された日時を保存する必要があると思います。次に、次の手順でそれを行います。

  1. 過去 30 分間に選択されていないものを除外します。

  2. 評価で並べ替え、リストの最初の項目に「カーソル」を置きます。

  3. アイテムの期間を確認します。指定された時間に収まるほど短い場合は、それを選択します。そうでない場合は、3 に進み、次の項目に進みます。

  4. タイムスパンが満たされているかどうかを確認します。はいの場合、完了です。いいえの場合は、3 に進み、次の項目に進みます。

于 2009-04-29T23:34:13.397 に答える