|
Заблокирован
|
||||||
Как сделать из двух чисел третье, уникальное для любой комбинации первых двух?03.07.2015, 10:25. Показов 12058. Ответов 35
Метки нет (Все метки)
Hi
![]() Есть два числа, допустим: int a и int b, как можно их "сопряч", то есть что - то с ними сделать, что бы получить третье число, уникальное для любого набора этих А и B. Причём порядок следования A и B так же важен. То есть есть два числа: 1. Первое число (допустим типа int) 2. Второе число (допустим типа int) Нужно получить любой третье число, допустим int c, которое бы не повторяется для любых других комбинаций и последовательностей исходных чисел. Да, и самое главное, нужно это сделать с минимальным кол-вом операций, т.к. эти вычисления производятся очень и очень часто (миллиарды раз в секунду) Казалось бы, что может быть проще: int a = 3; int b = 7; взял, да умножил: int c = a * b = 3 * 7 = 21, но, если будет комбинация наоборот: int a = 7; int b = 3; результат будет тот же, а исходные данные поменялись... И т.д. и тп. Я пока вижу, как можно сделать это в три действия:
может быть есть какая то хитрая процессорная инструкция для быстрого преобразования подобных вещей? Может быть хитрый XOR или ещё что - то ?
0
|
||||||
| 03.07.2015, 10:25 | |
|
Ответы с готовыми решениями:
35
Из двух векторов, создать третий состоящий из повторяющихся чисел находящихся в первых двух. |
|
Заблокирован
|
||
| 03.07.2015, 11:56 [ТС] | ||
|
И работает ли ваш способ для любой комбинации ?
0
|
||
|
Заблокирован
|
||
| 03.07.2015, 12:36 [ТС] | ||
|
Хмм, странное дело, попробовал собрать студийным компилятором (MSVS2013), стало всё как у вас на idode-е. Значит mingGW - ерунда ![]() Добавлено через 1 минуту Вредный кошак, так что, ваш под мои задачи как бы подходит? То есть для любой комбинации будет уникальное число? Или всё таки лучше с хэшом замочорится ?
0
|
||
|
Модератор
13795 / 10987 / 6492
Регистрация: 18.12.2011
Сообщений: 29,287
|
||||||
| 03.07.2015, 12:39 | ||||||
|
Предлагаю еще один.
По коду самый короткий вариант
1
|
||||||
|
Заблокирован
|
||
| 03.07.2015, 12:42 [ТС] | ||
|
Ой.. это ж юнион :-) Такс... А как тогда подобный код работает? Ты как бы просто соединяешь два инта в один 64-х битный и надеешься, что он получится уникальным? Но так ли это ?
0
|
||
|
Неэпический
|
|
| 03.07.2015, 12:45 | |
|
Butt-Head, у меня на mingw такой проблемы нет.
Добавлено через 1 минуту Butt-Head, это не структура, это объединение. В данном случае r и a хранятся в одной области памяти и, соответственно, изменения в a изменят и r
1
|
|
|
Заблокирован
|
||||
| 03.07.2015, 12:54 [ТС] | ||||
|
0
|
||||
|
Неэпический
|
|
| 03.07.2015, 12:58 | |
|
Butt-Head, первое число в старших 32-х битах, второе число - в младших. По сути, вы сохраняете два числа и "их позиции". Изменение чисел или их порядка даст другую комбинацию бит в двоичном коде. Само собой, числа должны быть из допустимого диапазона - 32 бита на число (либо знаковые, либо беззнаковы).
1
|
|
|
Модератор
13795 / 10987 / 6492
Регистрация: 18.12.2011
Сообщений: 29,287
|
|||||||
| 03.07.2015, 13:03 | |||||||
1
|
|||||||
|
Заблокирован
|
|||||||
| 03.07.2015, 13:13 [ТС] | |||||||
|
В общем всем спасибо, я понял, что оптимальный вариант - просто объединить два мелких числа в одно большое.
Ещё раз всем спасибо! Добавлено через 7 минут Стоп! Ещё не всё чёрт побери ![]() Один раз я таким макаром ID получу, но что, если мне нужно будет не основание уже этих 64-х битных ID получить ещё одно уникально ? Мне каждый раз нужно будет удваивать размерность? Хмм... вронг вэй ... Как бы без удваивания размерности всё таки решить мою задачу? Может всё таки с хэшами всякими ?
0
|
|||||||
|
Модератор
13795 / 10987 / 6492
Регистрация: 18.12.2011
Сообщений: 29,287
|
|
| 03.07.2015, 14:21 | |
|
Скорее в сторону архивации и сжатия данных типа zip, rar, gif,png и т.д.
1
|
|
|
Заблокирован
|
||
| 03.07.2015, 15:09 [ТС] | ||
|
Тогда задача упроститься? Или опять придётся удваивать данные?
0
|
||
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
|||
| 03.07.2015, 15:52 | |||
|
Наверное я повторяюсь с предыдущими ораторами, но
Данная задача из области хеширования. Надо искать решение там. В общем виде ваша задача не решается.
1
|
|||
|
Заблокирован
|
||
| 03.07.2015, 16:08 [ТС] | ||
|
0
|
||
|
Диванный эксперт
|
|
| 03.07.2015, 16:20 | |
|
в число разрядности n можно записать 2n уникальных значений
у вас есть 2 числа разрядности n и вам нужно для каждого сочетания этих чисел получить уникальный индификатор количество вариантов этих сочетаний == 2n*2n==22*n т.е. для уникального индификатора этого сочетания требуется 2*n бит
1
|
|
|
12 / 12 / 1
Регистрация: 11.01.2013
Сообщений: 150
|
|
| 20.05.2019, 17:37 | |
|
Возьмите разность. Самое простое.
3 - 7 = -4 7 - 3 = 4
0
|
|
| 20.05.2019, 17:37 | |
|
В случайном четырехзначном числе найти сумму двух первых чисел и произведение двух последних. Сосчитайте, сколько четырёхзначных чисел имеют одинаковые суммы двух первых и двух последних цифр
Найти количество чисел, суммы двух первых и двух последних цифр которых различаются не более, чем на 2 Найти количество четырёхзначных восьмеричных чисел, у которых суммы двух первых и двух последних цифр равны Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|