Постраничное удаление
UPD: вот тут попытка решить задачу, но не до конца, можно скачать код на 1С и попробовать.
Прикольная алгоритмическая задача, которая пригодится на собеседования кандидатов или для вящего удовольстия.
В базе данных есть заранее неизвестное количество контрагентов.
К базе можно выполнять только один вид запроса: спросить сколько контрагентов находится в выдаче на странице номер N.
При этом на странице выдается по 25 контрагентов и контрагенты всегда упорядочены одинаково. На последней странице может быть меньше контрагентов.
К запросу можно выполнить только одно действие: удалить контрагентов, выданных на странице.
При этом будут удалены только те контрагенты, по которым в базе не проходит никаких операций.
Вопрос: Как оптимально выполнить удаление всех контрагентов, которых можно удалить.


у гниды не работает мозг и он хочет получить решение за счет «каловых масс»
не подсказывайте гомосеку
эта задача из практики, кстати.
Ну вот, правильно, значит хуй тебе, гнида.
Башляй, ускоряй и нахуй гуляй, глупая пидораска
нулл нулл нулл нахуярь, эникейщик тупой.
жопный сеньор даже задачу сформулировать нормально не может. я так полагаю дед на втором десятке лет узнал про бинарный поиск и решил приосаниться. хотя есть шанс, что дед опять не к месту использует непонятные слова и никакого отношения к алгоритмам задача не имеет
а что тебе не понятно в задаче?
ответь мне, какая алгоритмическая сложность эффективного решения
не в курсах
А с хера ли ты тогда решил что решение оптимальное если не знаешь сложности решения?
как я и думал, никакими алгоритмами и оптимальными решениями там и не пахнет. опять каких-то костылей налепил, которые за квадрат работают (в лучшем случае), а потом провозгласил это оптимальным и изящным решением. уверен, что там если покопаться, то еще и косяков в решении найти можно
эта задача искуственная. Попытки натянуть ее на реальность показывают профнепригодность и неспособность к асбтрагированию.
Кажется можно втупую действовать — удалил на текущей странице, запросил число, если меньше 25, то всё. Если 25, переходим к следующей странице.
да, вроде бы такое решение было, только там вроде еще не все удалять надо. Но уже не помню
Всегда подозревал что люди с именем СэрГей тупые.
Если на первой странице хотя бы 1 контрагент может быть удалён, то 26 не будет удалён никогда, независимо от его удаляемости.
Да, втупую не получится. Но как из тех вводных, что были озвучены, понять такую ситуацию? Чего-то не хватает,
Хотя можно несколько раз пройтись втупую, пока число контрагентов не перестанет уменьшаться. Будет ли это оптимальным, хз.
вот на то и задача, чтобы соискатель пораскинул мозгами.
Хотя я тоже обосрался, надо «int i = pagesCount — 1;»
А pagesCount это число страниц? Мы его не знаем, по условиям задачи.
Если лень пердолиться то N+1 запросов количества элементов на странице и N вызовов удаления, где N — это количество страниц.
Если не лень заморочиться бинарным поиском, то 32 запроса количества элементов и N вызовов удаления.
полностью опиши. С какой страницы начинаем.
Тебе зачем? Реально что ли собес на джуна проходишь? Ок, ищем lastPage с которой будем начинать удаление, декрементируя. Подразумеваем индексацию с 0 и то что твои методы корректно обрабатывают обращение к несуществующей странице. Вариант 1, чтоб поверили что ты сам писал: int lastPage = 0; while (GetItemsOnPage(lastPage) == 25)lastPage++; // тут в lastPage индекс последней страницы с айтемами или первой пустой страницы, в зависимости от того кратно ли общее число айтемов 25. Вариант 2. Излишне выпедренный, учитывая что ты один хрен будешь потом по одной странице чистить, плюс не поверят что ты сам писал, решат что тебе студент-второкурсник помог unsigned… Подробнее »
не. первый вариант не удалит все гарантированно.
Я тебе больше скажу, гнида, первый вариант вообще ничего не удалит. Как и второй. Там нет вызова функции удаления. Как удалять я тебе написал выше, начиная с последней страницы идти последовательно к первой и удалять. А эти 2 варианта расссказывают, как найти ту самую последнюю страницу.
Если у тебя N cтраниц, то первый вариант удалит всех удаляемых контрагентов за N вызовов функции подсчёта и N вызовов функции удаления.
Второй вариант за 32 вызова функции подсчёта (количества бит в инте) и N вызовов функции удаления.
отлично, как определишь последнюю страницу?
Напиши кодом. там нет функции определения числа страниц. ггг
Сос, тебе сифилис окончательно мозги съел?
Я тебе буквально написал 2 варианта нахождения индекса последней страницы, написал кодом. И пояснил что этот код делает, ищет номер последней страницы. И что ты мне отвечаешь? Предлагаешь написать код для поиска последней страницы. Я бы подумал, что ты троллишь, но это для троллинга слишком тупо.
Да он просто не понимает чужой код. Ещё и не 1Сный. И вообще он «не в курсах» гыгыгы
как бы я тогда работал в 1С?
ну нашел ты последнюю страницу и что дальше?
Всё написано выше, тупица.
Я может не догоняю твою мысль, но о каком бинарном поиске идëт речь? Мы не знаем общее число страниц, не знаем сколько удаляемых контрагентов на странице.
вот думаю, надо написать код обработки на 1с. ггг
И? Написал?
что? прототип задачи на гении выложил. счас вот написал.
да, мы его не знаем.
нет PageCounts
чего тебе не понятно?
если удалять все время первую страницу, можно прийти к ситуации, когда ни один из 25 контрагентов не удаляется, но надо идти далее.
система тебе не сообщает сколько контрагентов удалила.
на первой может быть всегда 25, если 25 неудаляемых встретишь
тебе возвращается число контрагентов на странице.
ты не прав.
Я размышлял в контексте того, что мы не знаем, какие из контрагентов на странице подлежат удалению, а какие нет. Про число всех на странице я в курсе.
Переформулируй нормально. Вообще надо перечитывать несколько раз написанное перед публикацией. Лучше если прочтет другой человек
это старый черновик, о чем задача, уже и не помню
Протри очко, прочти свой говновысер и вспомни, дебил
вспомнил. хорошая задача.
Будем ждать твоего изящного решения, каломассы не смогут. Удалей их в очередной раз как Орловского с двумя импотентками, отож
Что у этого человека в голове?
Как и у всех — мозги
а что тебе неясно в постановке.
Фррмализуй нормально. У тебя техническое образование или гуманитарное?
У дебила образование только на бумаге, он ни хуя не знает ни в одной области. Полнейший идиот, пидор и педофил.
ггг… вы в своем репертуаре
Все так как Вы описали,а ещё пиздабол и трус.гггг….
а что не понятного? Спрашивай — уточню.
когда анус себе дернешь?
Почему аналитические высеры исчезли из уютного бложика?
какие именно?
Чем меньше запросов, тем лучшe. DELETE FROM из твоей таблицы с нужным condition-ом по другим таблицам и все.
В твоем варианте можно курсор завести и использовать WHERE CURRENT OF конструкцию (если PostgreSQL).
Ты какие-то костыли лепишь и решаешь задачу не с того конца.
не принят. вместо решения задачи пытаешься городить свои условия. Ломать бизнес о колено так сказать.
Да, т.к могу объяснить бизнесу где задачу надо решать. Бизнес бизнесу рознь, у нас бизнес понимает где задача должна решаться.
Молодец какой
У деда деменция
https://geniy1s.ru/postranichnoe-udalenie/
Было дело. ггг
и слабоумие