1

私はいくつかの SKU 番号を生成しようとしていますが、考えさせられる問題に遭遇しました。睡眠時間が 2 時間未満だったので、皆さん、Stackoverflowers に尋ねることにしました。

よく間違える文字を除いたアルファベットの配列があるとしましょう。

$alphabet = array("A","C","D","E","F","G","H","I","J","K","L","M","N","P","Q","R","S","T","U","V","W","X","Y","Z");

一貫した数に基づいて2文字を生成しようとしています。SKU の末尾にサフィックスを付けたいサブ製品があるとします。最初のサブ製品の場合、SKU にはサフィックス - AA、24 日 - AZ、25 日 - CA、26 日 - CC などがあります。問題は、接尾辞を繰り返し使用したくないということですが、AC と CA は許容されます。

睡眠が必要なプログラマーのために汚い仕事をしてくれてありがとう。

明確にする: 刺激に基づいて組み合わせを取得したい. まあ言ってみれば:

$i = 1, then $suffix = AA; 
$i = 2, then $suffix = AC; 
$i = 24, then $suffix = ZZ; 
$i = 25 (one above the count of the array), then $suffix = CA; 
$i = 26, then $suffix = CC;
$i = 49, then $suffix = DA (**I suppose**)

製品 1 のサブ製品と製品 2 のサブ製品があるとします。製品 1 のサブ製品のサフィックスは次のようになります。

AA、AC、AD、AE .... AZ、CA、CC、CD .... CZ .... ZA、ZC ... ZY。

製品 2 のサブ製品のサフィックスも同じにすることができます!

4

2 に答える 2

0

このソリューションでは時間が限られているため、それは良い考えではないと思います..私が言いたいのは、それは無制限ではないということです.

本当にこれをやりたいのなら、すべてのソリューションで一種の配列を作成し、番号でインデックスを付ける必要があると思います。新しい製品を作成するときは、持っている製品の数を知って、次のものを取る.

于 2015-03-13T13:42:23.440 に答える
0

製品番号を使用して、使用可能な文字のリストから 2 つのインデックスを選択します。以下は 1 行で実行できますが、その機能を説明できるように展開します。

function get2letter($num)
{
    $alphabet = array("A","C","D","E","F","G","H","I","J","K","L","M","N","P","Q","R","S","T","U","V","W","X","Y","Z");
    $code = $alphabet[$num%sizeof($alphabet)]; // Get the first letter
    $num = floor($num/sizeof($alphabet)); // Remove the value used to get the first letter
    $code.= $alphabet[$num%sizeof($alphabet)]; // Get the second letter
    return $code;
}

for($i=0; $i<10; $i++)
    print get2letter($i)."\n";

これは小さな値で機能します。アルファベットで表現できる一意の値の数を超えると、衝突が発生します。

于 2015-03-13T13:43:58.087 に答える