|
|
|
| Дано:
(int)$user_id_1
(int)$user_id_2
|
Необходимо придумать простой алгоритм генерации уникального ключа по эти двум id.
Доп. инфо:
- $user_id_1 и $user_id_2 целые числа от 1 до max_int;
- $user_id_1 не может быть равным $user_id_2
- Ключ должен быть целым числом и умещаться в инт (чем короче тем лучше);
- результат генерации для пары $user_id_1 и $user_id_2 всегда должен быть одинаковым. По аналогии с md5('1'); - всегда возвращает единственное значение значение. | |
|
|
|
|
|
|
|
для: Дрюсик
(20.07.2013 в 01:48)
| | Ну или подскажите будет ли мой пример генерировать уникальные ключи для пары? Или могут быть коллизии?
<?
$user_id_1 = 356;
$user_id_2 = 14;
# слева всегда ставим меньшее число чтобы небыло коллизий из при раскладе 1-2 и 2-1
if($user_id_1 < $user_id_2){
$a = $user_id_1;
$b = $user_id_2;
}else{
$a = $user_id_2;
$b = $user_id_1;
}
echo $a << $b;
?
|
UPD. Потестил, есть повторы и отрицательные значения... помогайте.. | |
|
|
|