В январе спрашивал, интересно ли тут кому-то обсуждение алго задач:
Плюсаните, если кому-то интересно обсуждение решений алго задач здесь.
плюсануло аж 19 человек, а это значит, что кто-то готов обсуждать. я-то спросил, а потом подумал, что не очень понятно в каком формате это делать...
просто постить ссылку на задачу с литкода или откуда-то еще как-то не очень прикольно, тк можно просто там же на месте ее и обсудить в соотв. разделе. подумал, что, возможно, будет интереснее, если я буду хоть как-то адаптировать задачи под покерную тематику, ну или хотя бы что-то с этим связанное. если у меня это получилось, то:
а) я точно понял суть задачи (ну скорее всего), что означает, что тот или иной паттерн задачи в голове сформировался (я надеюсь)
б) возможно, это будет чуть интереснее, чем просто абстракции типа чисел, массивов, и тд (тут уже хотелось бы фидбэк какой-то услышать)
в) все равно лучше пока ничего не придумал
д) кто знает, мб это в какую-то рубрику превратится (еженедельную/месячную?)
Вдохновился я опять классическим мемом про казино, поэтому задача будет называться:
"Какого х*я они в другом порядке разложены?"
Дано: дилер взял произвольное количество колод, достал из каждой произвольное количествокарт, смешал между собой и разложил по старшинству, получив N карт, разложенных в порядке возрастания (самая низкая сверху колоды). После этого пришел другой дилер и подснял колоду 1 раз. Первый дилер вернулся и разложил все карты в ряд по порядку лицом вниз, он хочет узнать, какой по счету (номер карты) будет карта X, которую ему загадал игрок. Если карты повторяются, то необходимо найти наименьший номер карты.
порядок мастей (на случай, если ранг одинаковый) : > > >
Найти: оптимальный алгоритм для дилера, который позволит ему гарантированно найти номер загаданной карты (или понять, что такой карты нет в колоде) за наименьшее возможное количество попыток в общем случае
Примеры:
1. 0 1 2 3 4 5 6 7 8 9 10 11
колода:
найти:
ответ: 5
2. 0 1 2 3 4 5 6 7 8 9 10 11
колода:
найти:
ответ: 11
3. 0 1 2 3 4 5 6 7 8 9 10 11
колода:
найти:
ответ: -1 (в колоде нет такой карты)
4. 0 1 2 3 4 5 6 7 8 9 10 11
колода:
найти:
ответ: 0
Входные данные: предлагаю использовать 0-indexed массив с обозначением карт, как все тут привыкли, например:
Dmitriy, спасибо за вариант! было бы замечательно, если бы под спойлером до кода было бы краткое описание самой идеи решения
даже не знаю, что делать с этим гт эдитором, чтобы код нормально вставлялся.
мб попробовать для читабельности постить скрином, а для запуска сам код еще раз "как получится", главное, чтобы работал, а там в уже отформатирует, кто захочет для запуска
по твоему решению:
направление выбрал верное, но, думаю, что будут проблемы с поиском индекса для карты "срезки", например, попробуй инпут:
['2s','2s','2s','2s','2s','3s','2s','2s','2s']
в целом, вижу, что особо нет желающих обсуждать, по сравнению с кол-вом плюсовавших...
Можно найти карту, проверяя каждую карту в колоде по очереди. Если карта будет последней, то придётся проверить всю колоду. Можно сделать это быстрее. Если бы была стандартная отсортированная колода, то делим колоду пополам и если средняя карта является искомой, то возвращаем индекс карты, иначе ищем её в той половине, которая содержит искомую карту. Повторять, пока область поиска не сузится до одной карты или пока карта не будет найдена. Если карта не найдена, то выводим -1
Задача осложняется тем, что колода срезана и карты могут повторяться.
1. Вместо средней карты нахожу место среза.
2. Беру ту часть, которая содержит искомую карту.
3. Если средняя карта является искомой:
1) если соседняя карта слева от средней не является искомой, то вывожу индекс средней карты
2) если левая карта является искомой, то вывожу индекс левой карты
3) если индекс не найден, то беру левую часть и возвращаюсь к шагу 3
4. Если средняя карта не является искомой, то беру половину, которая содержит искомую карту.
5. Шаги 3-4 повторяются, пока область поиска не сузится до одной карты или пока карта не будет найдена. Если карта не найдена, то выводим -1
сегодня был первый собес из вышеперечисленных компаний - грид дайнемикс - аутсорс и, скорее всего, последний в такого рода компании.
собеседовали как фулл-стека, я сразу сказал, что последнее время писал мало фронта и особо топики не повторял, но все равно начали эту секцию, все по классике: js паззлеры в стиле что выведется в консоль, где объявили переменные разные (var, let, const), эвент луп, замыкания - я честно говорил, что нихера не помню, но на опыте, как ни странно, +- назвал правильные результаты. далее вопросы про React JS - тут ответил все норм.
часть по бэку - опять же, классика - java core, spring, sql и еще простая задачка - тут ответил все на изи, где-то по sql не помнил точный синтаксис
в общем, полнейшее уг, когда ты ждешь хотя бы какого-то вопроса на архитектуру или что-то, где можно реально порассуждать, рассказать ход мыслей и идеи, а тебя спрашивают про то, может ли быть кастомный класс использован в виде ключа для хэш-мап
Вы сможете оставлять комментарии, оценивать посты, участвовать в дискуссиях и повышать свой уровень игры.
Если вы предпочитаете четырехцветную колоду и хотите отключить анимацию аватаров, эти возможности будут в настройках профиля.
Вам станут доступны закладки, бекинг и другие удобные инструменты сайта.
На каждой странице будет видно, где появились новые посты и комментарии.
Если вы зарегистрированы в покер-румах через GipsyTeam, вы получите статистику рейка, бонусные очки для покупок в магазине, эксклюзивные акции и расширенную поддержку.
thepazdk, так вроде как можно в случае платной подписки
или речь про какие-то местные законы и тд?