0

カレンダーの各行を色分けするために、フィールド userid を使用して 1 から 9 までの一意の整数を作成できるようにしたいと考えています。インストラクターに割り当てられた学生を表示するには、カレンダーの別の部分で色を使用する必要があります。

userID は任意の長さにできることに注意してください。

最初は最下位桁を使おうと思ったのですが、ユーザーIDが01、21、22などではうまくいきません。

次に、たとえば userID 22 = 2+2=4 のように左を右に追加することを考えましたが、それもうまくいきません。

ユーザーIDに基づいて一意の0〜9の整数を作成する方法はありますか?

4

1 に答える 1

4

[0..N] を [1..9] にマッピングする関数は、N が 9 より大きい場合に衝突が発生するため、それらを一意にマッピングするスキームは存在しません。

あなたの場合にできることは、ユーザーIDを調べて、このユーザーIDを以前に見たことがない場合は、次の空き番号を割り当てることです。これは単純な for ループ + 配列です。

擬似コード:

colors = array()
for userid in userids_to_color:
    if userid not in colors:
        colors[count(colors)] = userid

色は、ユーザー ID へのマッピング インデックス (= 色番号) です。count(colors)色の最大数よりも大きくなると、ループから抜け出すことができます。

于 2012-04-10T11:43:50.357 に答える