Бред

Ответить в тред Ответить в тред
Аноним 29/01/21 Птн 02:23:10 2388729571
image.png 195Кб, 604x371
604x371
Сап, программач.
Помогите придумать охуенный алгоритм перебора пар элементов (в моем случае строки) из списка в случайном порядке.
Парой назовем структуру, имеющую два поля - first и second, при этом при сравнении пар будем считать, что они не упорядочены (1, 2) == (1, 2) и (1, 2) == (2, 1)
Ожидается, что размер списка будет в районе 40000 элементов, что дает нам 799980000 пар n*(n-1) / 2, поэтому хранить все возможные пары не вариант.
Промежуточные результаты могут быть сохранены, а затем загружены для продолжения работы, при этом между сохранением и загрузкой количество элементов списка может меняться.

Пойму на следующем: идея, псевдокод, Python, C#, C++, C
Аноним 29/01/21 Птн 02:23:31 2388729712
Бамп
Аноним 29/01/21 Птн 02:23:48 2388729843
Бамп
Аноним 29/01/21 Птн 02:24:11 2388730054
Бамп
Аноним 29/01/21 Птн 02:24:42 2388730325
Бамп
Аноним 29/01/21 Птн 02:24:58 2388730426
Бамп
Аноним 29/01/21 Птн 02:25:14 2388730607
Бамп
Аноним 29/01/21 Птн 02:25:30 2388730718
Бамп
Аноним 29/01/21 Птн 02:25:55 2388730889
Бамп
Аноним 29/01/21 Птн 02:26:12 23887310010
Бамп
Аноним 29/01/21 Птн 02:26:28 23887311611
Бамп
Аноним 29/01/21 Птн 02:26:47 23887313212
Бамп
Аноним 29/01/21 Птн 02:27:08 23887315113
Бамп
Аноним 29/01/21 Птн 02:27:30 23887316614
Бамп
Аноним 29/01/21 Птн 02:27:57 23887318715
Бамп
Аноним 29/01/21 Птн 02:28:14 23887319716
Бамп
Аноним 29/01/21 Птн 02:28:32 23887321617
Бамп
Аноним 29/01/21 Птн 02:29:15 23887324418
Бамп
Аноним 29/01/21 Птн 02:29:29 23887325519
>>238872957 (OP)

Без нормального ТЗ получается ХЗ. Ты сначала мысли научись грамотно излагать. Я из твоего объяснения нихуя не понял чего тебе надо.
Аноним 29/01/21 Птн 02:29:33 23887326020
Бамп
Аноним 29/01/21 Птн 02:32:36 23887337321
>>238872957 (OP)
Посмотри в сторону алгоритмов, которые могут генерировать рандомные числа без повторений, мне кажется, такие есть. А дальше ты просто генеришь число от 0 до 799980000 - 1 и берешь соответствующую пару.
Питономакака другого решения пока не видит.
Аноним 29/01/21 Птн 02:35:57 23887351222
Аноним 29/01/21 Птн 02:36:36 23887353923
>>238873255
Есть список, например: {1, 2, 3}
Из него нужно выбрать все пары:
(1, 2)
(1, 3)
(2, 3)

Но при этом в случайном порядке, при этом оба элемента должны быть сгенерированы случайным образом, например:
(2, 1)
(2, 3)
(1, 3)

Также, так как пользователь не будет за один присест не переберет пары (в моей задаче от пользователя нельзя избавиться), то перебранные пары каким-то образом нужно сохранять, а затем загружать при следующем старте.

Пока пользователь не пользуется программой, количество элементов, как и сами элементы, может измениться, что также должно учитываться в программе.
Т.е. новые элементы также должны участвовать в переборе, а удаленные, соответственно, нет.
Аноним 29/01/21 Птн 02:37:18 23887358124
Аноним 29/01/21 Птн 02:40:23 23887368325
>>238873512
Что-то достаточно близкое, но при этом этот алгоритм требует уже готовое конечное множество элементов, в моем случае такими элементами будут сами пары, которые хранить в памяти не желательно
Аноним 29/01/21 Птн 02:41:58 23887373826
>>238873539
>Пока пользователь не пользуется программой, количество элементов, как и сами элементы, может измениться, что также должно учитываться в программе.
>Т.е. новые элементы также должны участвовать в переборе, а удаленные, соответственно, нет.

какой пользователь, какие элементы, какая блоха, какой заяц.
ты как это блять вообще представляешь?
что такое промежуточные результаты, для продолжения какой работы, тут же нет никакой работы. какой вообще имеет смысл (не в смысле целеполагания, а в смысле семантики) "перебор", у которого поменялись элементы которые он перебирает. что это вообще?
Аноним 29/01/21 Птн 02:46:49 23887393627
>>238872957 (OP)
Чел, ну домашку первого курса для ПТУ и сам можешь сделать. Ну слишком изи же. Не позорься.
Аноним 29/01/21 Птн 02:47:49 23887396528
>>238872957 (OP)
Не совсем подходит под твоё условие, но:
Если у тебя всё-таки есть ограничение сверху на размер списка N, можешь свести задачу к равновероятной генерации пар i, j: 0 <= i, j < N и i < j.
Если бы не второе условие, можно было бы свести пару i, j к числу i * N + j (то есть генерируешь 0 <= a < N^2, i = a % N, j = a // N).
Как сохранить второе условие, не ебу. Можешь крутить шарманку, пока не выпадут i < j, в среднем долго крутить не придётся.
Если без повторений, генеришь случайную перестановку всех чисел от 0 до N^2, ну ты понел.
Аноним 29/01/21 Птн 02:48:20 23887398629
>>238873683
а тебе обязательно все C^2_40000 перебирать?
Аноним 29/01/21 Птн 02:49:02 23887401530
>>238873738
Сорри, у меня в голове насрано
Аноним 29/01/21 Птн 02:50:07 23887405431
>>238873965
Хотя хуй знает, зачем тебе эти случайные пары, которые ещё и запоминаются, и меняются. Что за алгоритм-то?
Аноним 29/01/21 Птн 02:50:21 23887405732
>>238873936
Ах да, и еще, ты блять даже количество пар не смог посчитать правильно, ты видимо совсем ебанутый. Сам сказал "порядок важен" но всё-равно делишь на 2.
Пиздец....
Аноним 29/01/21 Птн 02:50:33 23887406133
>>238873986
По хорошему нужно перебрать все возможные пары, но можно решить и приблизительно, чтобы было перебрано ~80% пар, главное, чтобы не было повторяющихся
Аноним 29/01/21 Птн 02:50:45 23887406934
>>238874054
Препод сделал покак мне надо это съест
Аноним 29/01/21 Птн 02:51:04 23887408035
>>238873539
> то перебранные пары каким-то образом нужно сохранять, а затем загружать при следующем старте.
так нужно сохрнаять или нет, ты уж определись
Аноним 29/01/21 Птн 02:51:18 23887409736
>>238874061
Двойной цикл и всё. Это блять даже не алгоритм
Аноним 29/01/21 Птн 02:51:44 23887411337
>>238874057
Я ж написал, что при сравнении используем их как не упорядоченные, поэтому все правильно
Аноним 29/01/21 Птн 02:53:18 23887416438
>>238874097
>Двойной цикл и всё.
Ну да, было бы все так просто, если нужно было бы получить их в строгом порядке, чего мне не нужно.
Аноним 29/01/21 Птн 02:53:23 23887416839
>>238874113
Ну и напиши блять двойной цикл. Ты ебанутый?
for i=1:N
for j=i+1:N
end
end
Аноним 29/01/21 Птн 02:54:21 23887421740
>>238874164
Сначала ты пишешь "мне это нужно", потом пишешь "мне это не нужно". Ты видимо даже не в состоянии понять, что от тебя попросил препод... пиздец.
Аноним 29/01/21 Птн 02:54:27 23887422141
Что если ты сохранишь пару, а потом её удалят из набора. Должен ли ты её удалить из результирующего множества?
Аноним 29/01/21 Птн 02:54:38 23887422942
>>238872957 (OP)
1 из списка случайно выбираешь один элемент
2 сватаешь его с последним элементом
3 перебираешь все варианты
4 повторяешь для массива размера n-1

Это если элементы уникальны. Если неуникальны, то можно подумать в сторону сортировки и затем использование немного модифицированного алгоритма выше
Аноним 29/01/21 Птн 02:56:58 23887430643
>>238874168
Во-первых,
> for i=1:N
Поссал на лицо N-1

Во-вторых,
Я блять написал, что мне эти пары нужны не в строгом порядке, а в случайном
Аноним 29/01/21 Птн 02:58:29 23887436844
>>238874306
Иди по циклу в строгом порядке, но записывай в рандомные места,
Аноним 29/01/21 Птн 02:58:51 23887438445
Аноним 29/01/21 Птн 02:59:14 23887439846
Аноним 29/01/21 Птн 03:06:01 23887444147
>>238874398
Пиши в рандомную позицию в файле.
Аноним 29/01/21 Птн 03:06:02 23887444848
>>238872957 (OP)
Рандомишь лист и циклом перебираешь
Если нужно больше рандома, то рандомишь и индексы. Чтобы они не повторялись можешь их (индексы) куда-нибудь записывать и потом проверку делать на несоответствие.
Эта вся хуйня жирная, но она вроде как в любом случае такой будет
Аноним 29/01/21 Птн 03:06:44 23887448649
>>238874229
>>238874229
Здесь проблема в том, что пары всегда будут получаться в виде:
(случайный элемент, последний элемент), но мне нужно чтобы оба элемента были случайными
Аноним 29/01/21 Птн 03:06:50 23887449150
>>238874306
>Поссал на лицо
Ты себе на лицо нассал, ибо нумерацию с первого элемента делал, я же не си-дебил.

>Я блять написал, что мне эти пары нужны не в строгом порядке, а в случайном
У тебя каждому числу от 1 до N(N-1)/2 однозначно соответствует пара элементов, которую по этому номеру легко восстановить(это так просто, что ты сам можешь догадаться как). А дальше просто делаешь циклом rand, уменьшая диапазон рандомных чисел и перебираешь просто числа из ряда.
Аноним 29/01/21 Птн 03:08:16 23887454351
На питоне легче всего будет реализовать
Берешь range 1,n
Шафлим его. Вроде random.shufle
Сайклимся по списку
For i in random.shuffle(range1, n):
For j in random.shuffle(range1, n):
Print i, j

Рандомный пары будут в смысле равномерного распределения
Единственное диагональные пары офк будут повторятся 1,1 2,2
Массив длинны н решит проблему
Надеюсь понятно
Аноним 29/01/21 Птн 03:08:55 23887456752
>>238874448
Та же проблема: >>238874486
Я уже пробовал стопицот вариантов разных алгоритмов, которые находил/придумывал, но нихуя не работает, такое ощущение, что это решается только через хранение в памяти
Аноним 29/01/21 Птн 03:10:03 23887460553
>>238874567
Ты рандомишь два индекса, какая та же самая проблема?
Индексы записывай в файл и проверяй, чтобы не совпадали
Аноним 29/01/21 Птн 03:10:45 23887463254
Аноним 29/01/21 Птн 03:11:08 23887465455
>>238874567
что такое "не работает", у тебя же настолько ебанутая задача, что очевидно к ней нет ни одного приемочного теста
Аноним 29/01/21 Птн 03:11:58 23887467056
>>238874567
Ах да, заметь, то, что я описал тут >>238874491 вообще не требует памяти.
Аноним 29/01/21 Птн 03:12:16 23887467957
Аноним 29/01/21 Птн 03:12:28 23887468858
>>238874543
Писал с телефона. Разметка поехала.
По скорости ассимптотика квадратичная, по памяти линейная. Укладывается в условия?
Аноним 29/01/21 Птн 03:12:39 23887469259
>>238874670
Тыт написал т какую-то шизофазию
Аноним 29/01/21 Птн 03:13:57 23887472960
БЕРЕШ LODASH
ОН ВСЕ ДЕЛАЕТ ЗА ТЕБЯ
ЧИЛЛИШ
Аноним 29/01/21 Птн 03:13:58 23887473061
Аноним 29/01/21 Птн 03:14:43 23887476062
Сделайте опу любую, а то его препод в очько жахнет
Аноним 29/01/21 Птн 03:15:00 23887477363
Аноним 29/01/21 Птн 03:16:07 23887480964
>>238874760
Охуеть лаба рандомно миллион строк пейрить без повторений и без памяти
Аноним 29/01/21 Птн 03:16:26 23887481865
>>238874491
Бля, ссу себе на лицо, охуенное решение, спасибо анон
Всех тебе благ
Аноним 29/01/21 Птн 03:17:20 23887484966
>>238874692
Да нет, вполне себе работает. Возьми 4 элемента, и нарисуй на листочке матрицу с парами, убери ненужные (оставишь только верхний треугольник) у тебя будет 6 пар. И внимательно подумай, как из рандомного числа от 1 до 6 однозначно получать какую-нибудь пару из верхнего треугольника.

Это же просто.
Аноним 29/01/21 Птн 03:19:39 23887491367
>>238874849
а потом еще научиться генерить не повторяющиеся рандомные числа, да?
Аноним 29/01/21 Птн 03:21:20 23887496768
>>238874818
Все, что будет написано ниже поста, на который этот пост отвечает - хуйня, ОП ушел спатики
А человеку, который подсказал охуенный алгортитм - всего самого пиздатого из того, что он желает в этой жизни
Аноним 29/01/21 Птн 04:18:00 23887665769
>>238872957 (OP)
что такое "случайный порядок"?

кто, блядь, так задачу ставит?
29/01/21 Птн 04:19:46 23887670870
>>238872957 (OP)
Вот они какие програмисты 300к, ни за хуй бабки получают.
Настройки X
Ответить в тред X
15000
Макс объем: 20Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
X
Ваш шидевор X
Стикеры X
Избранное / Топ тредов