Ребят leetcode рекламу у меня не заказывал Просто я хотел обосновать почему я назвал задачу популярной в собесах гугл) Если Вам показалось что задача очень простая - попробуйте решить ее самостоятельно и пройти тесты литкод P. S. 100% работающего решения не существует - попробуйте это доказать
@alexnovik62233 жыл бұрын
Такая задача очень похожа на игру Быки и Коровы ))
@MAKMED13373 жыл бұрын
Доказательство отсутсвтия 100% решения - тест: AAAAAA BBBBBB CCCCCC .... ZZZZZZ кол-во различных букв > 10, А ответ на запрос будет 0, 6, -1, что не даёт нам информации(потому что всё симметрично)
@ytar65013 жыл бұрын
Автоматизация подбора пароля к терминалам в Fallout.)
@Khashimova_wellness3 жыл бұрын
Использую ваши видео, чтобы расширить свою логику и познания в программировании. Спасибо! Приятно что добавили музыку!
@PaulGanarara3 жыл бұрын
если в списке будут присутствовать 26 слов, отличающихся всего на одну букву, то нет гарантии, что за 10 попыток вы угадаете слово
@wolf_code3 жыл бұрын
Абсолютно верно
@igortunev6163 Жыл бұрын
Автор снова ошибся. В условии на литкоде не 10 попыток. Число попыток определяется входным параметром (от 10 до 30)
@daniisemenov3 жыл бұрын
Спасибо! Прикольный формат)
@hrenaki77873 жыл бұрын
Решение ломается, если все слова из списка, кроме загаданного, имеют одинаковые буквы в одинаковых позициях. Например, пусть список слов формируется следующим образом: list[i] = "w" + a[i] + "rd", где a[i] - i-ая буква латинского алфавита, загаданное слово - "word". Если случайно выберем любое слово из такого списка, и оно не совпадет с загаданным, то получим число = 3. Пробежав по списку слов, окажется, что все слова имеют число совпадений = 3. В итоге сократить исходный список не выйдет, а полный перебор в худшем случае будет осуществлен за 26 вызовов.
@КимЧенОрк3 жыл бұрын
Задача идиотская изначально. Нельзя проверять список элементами этого же списка. Очевидно, ни к чему не приведёт
@goodwin_for_you3 жыл бұрын
На python проще) пусть дан список слов A=['море','мыло','сало','мало','рано','село','лось','кола','мама','папа','баба','речь','чёрт','сорт','трос','торт','брод','дрон','горе','трон','урон','нора','рана'] z='рано' #загадаем слово import random # импортируем библиотеку, хотя можно реализовать и без рандома. #Опишем того кто отвечает с условием, что если мы угадали ф-я возвращает слово в противном случае число совпадений от 0 и более. def ASK_ANSWER(word2): if z==word2:return z # для работы с анаграммами else: return chek(z,word2) #функция для проверки двух слов на количество совпадений def chek(word1,word2): return len(set(word1).intersection(set(word2))) #Реализуем ф-ю поиска, будем её вызывать в теле цикла while def find_word_in_words(words): word=random.choice(words) ABC=ASK_ANSWER(z,word) # или мы угадали или получили число совпадений if type(ABC)==str: return ABC if ABC==0: #если ни одна буква из слова word не совпала с загаданным return [i for i in words if not(chek(word,i)>=0)] # выкидываем все слова в которых есть такие же буквы что и в слове word else: # если есть совпадения return [i for i in words if (chek(word,i)==ABC and i!=word)] # генерим список в котором у слов число совпадений со словом word равно ABC #Запускаем проверку #создадим копию списка А, не обязательно:) ZZ=[i for i in A] I=1 while (True): ZZ=find_word_in_words(ZZ) print(I,ZZ) # печатаем номер запроса и новый список, эта строка необязательна if type(ZZ)==str or len(ZZ)==1:break # нашли ответ, выходим из цикла. I- число запросов, ZZ- угаданное слово I+=1 P.S. можно написать короче.
@wolf_code2 жыл бұрын
почему это проще?
@goodwin_for_you2 жыл бұрын
@@wolf_code строчек меньше 😉 да и синтаксис языка понятней
@wolf_code2 жыл бұрын
@@goodwin_for_you разница сложности на эпсилон
@blackgolddev40233 жыл бұрын
Спасибо вы лучший
@alexnovik62233 жыл бұрын
Я бы наверное убрал из логики функцию рандома. Думаю выгоднее сделать метод, который из списка ищет слова с максимальным совпадением символов - так будет больше вариантов выкидывания неподходящих слов на начальном этапе.
@wolf_code3 жыл бұрын
Да, это должно сработать Можно попробовать, minimax получается
@sosad95213 жыл бұрын
Как ты это сделаешь, если при каждом вызове master.guess будет засчитываться попытка отгадывания?
@alexnovik62233 жыл бұрын
@@sosad9521 элементарно. Вместо рандома надо брать слово с максимальным количеством совпадений. На дальнейший код это не влияет никак.
@sosad95213 жыл бұрын
@@alexnovik6223 так а как ты узнаешь, больше или нет совпадений у слова, без использования master.guess?)
@wolf_code3 жыл бұрын
@@sosad9521 сравниваешь каждое слово с каждым, для каждого слова можно посчитать сколько раз в среднем он совпадает с остальными
@ainr_dev3 жыл бұрын
Если убрать ограничение количества букв в словах, задача стала бы интересней)
@wolf_code3 жыл бұрын
Можно попробовать))
@КимЧенОрк3 жыл бұрын
Вообще нисколько
@Disorrder3 жыл бұрын
алгоритм останется тот же, кол-во попыток придётся увеличить
@igorbia1079 Жыл бұрын
За 10 ну никак не выходит при таком алгоритме, при множественном запуске на случайно сгенерированном массиве доходит до 16 раз, среднее число попыток действительно меньше 10. Но если взять побольше алфавит например букв 60, то сразу максимум до 26 убегает. Хотя справедливости ради, увеличение массива слов со 100 до 10000 не сильно вляет на кол-во попыток на алфавите около 60 символов - 35
@zhanbolatnurutdin302 жыл бұрын
Спасибо за классное видео))) Но, вопрос такой, на 4:16 на 23 строке, разве не должно быть >= больше или равно, потому что, если в списке есть слово, который отличается от загаданной на 1 букву лишь, то, по логике countMatch вернет больше, и он отсеется??? Или я что то не допонял?
@wolf_code2 жыл бұрын
если слово отличается от загаданного на 1 символ в позиции, countMatch вернет 1
@binart26013 жыл бұрын
если количество позиций для выбранного слова будет 0, то решение так же поломается. В этом случае необходимо будет выбрать все слова, которые, наоборот, не имеют никаких совпадений с вы выбранным словом
@pavelosipov59513 жыл бұрын
внезапно, нет. Мы можем на каждом этапе иметь 0 совпадений с загаданным словом, но в конечном итоге список слов всё равно сократится, и мы угадаем слово. мне попадался такой пример. понадобилось 8 попыток
@binart26013 жыл бұрын
@@pavelosipov5951 Во-первых, Вы. Во-вторых, задача состоит не в том, что найти слово, а в том, что найти это слово за 10 попыток. Можно сгенерировать такой список, где позиции букв в принципе не будут совпадать. В этом случае, эта задача, при данных условиях не решаема.
@pavelosipov59513 жыл бұрын
@@binart2601 да, прошу прощения по поводу обращения, сейчас поправлю коммент. Речь не шла конкретно о вас, я просто написал как думал. Для поломки решения не обязательно иметь 0 совпадений. Примеры можно придумать для любого количества совпадений, кроме, естественно, полного совпадения.
@tym321673 жыл бұрын
Сколько раз был на собесах в Гугле, ни разу такаая задача не попадалась. Выглядит слишком легкой :)
@wolf_code3 жыл бұрын
Возможно она вам не попадалась, ну или вы шли на более высокую позицию) Когда я давно собесился в гугл, алгоритмические задачи примерно такого уровня мне давали Ну или более 1000 людей сговорились и соврали) P. S. Мое решение не всегда работает верно и не является лучшим, если попробуете решить задачу самостоятельно - то поймете что она не такая простая как кажется)
@tym321673 жыл бұрын
@@wolf_code не не, вполне может быть, я только поделился опытом. Обычно на собесе в Гугл дают задачу на минимум минут 30-40 решения, если собес по алгоритмам онсайт. Ну, или, например, такую задачу дать могут на телефонном интевью, там да, задачи попроще идут.
@wolf_code3 жыл бұрын
@@tym32167 возможно исходя из опыта собеседуемого они выбирают какую задачу давать а в литкод скорее всего популярной станет самая простая задача которую они давали стажерам или студентам, думаю в основном там начинающие и сидят)
@tym321673 жыл бұрын
@@wolf_code о, там наоборот. Чем больше опыта - тем меньше тебе дают задач по алгоритмам и больше по дизайну. Например, стажера не будут просить спроектировать ютуб, но будут гонять по алгоритмам, а для сеньора алгоритмы не так важны, как опыт построения сложных систем.
@wolf_code3 жыл бұрын
@@tym32167 Раньше там были этапы, этап по алгоритмам, потом по дизайну, потом архитектуре Возможно щас по другому
@Helsus493 жыл бұрын
За гачи отсылку рэспэкт
@wolf_code3 жыл бұрын
Дань уважения легенде
@Disorrder3 жыл бұрын
в слове мастер тоже 6 букв. Уверен, оно и есть секретное!
@Khashimova_wellness3 жыл бұрын
А если по сложнее задачу разобрать, именно из собеседования у Гугла?
@wolf_code3 жыл бұрын
Попробую
@rad95873 жыл бұрын
2:23 почему у weewee 0?
@wolf_code3 жыл бұрын
ошибся - прошу простить(
@felixdzerzhinsky13373 жыл бұрын
А можно доказательства, что это работает за 10 или менее попыток?
@wolf_code3 жыл бұрын
Можно доказать что это не будет работать за 10 или менее попыток)
@felixdzerzhinsky13373 жыл бұрын
@@wolf_code А можно прочитать где-нибудь?)
@wolf_code3 жыл бұрын
@@felixdzerzhinsky1337 если перейти по ссылке в описании к задаче, там к задаче прилагается обсуждение, там есть доказательство но оно несложное на самом деле, давайте рассмотрим список слов aaaaaa, bbbbbb, cccccc, ..., zzzzzzz Каждый раз мастер будет отвечать 0, и даже через 9 попыток вероятность того что мы угадаем будет всего лишь 1/17
@___________S_t_a_s___________3 жыл бұрын
@@wolf_code да тут задача скорее на твою логику, чем на практическое применение где либо.
@wolf_code3 жыл бұрын
@@___________S_t_a_s___________ ну да, задача довольно синтетическая и скорее придумана чиста оценить смекалку
@АндрійБочковський-л5и3 жыл бұрын
почему именно scala? Раз уж популяризируешь, хоть бы обьяснил преимущества, а то пока выглядит как иероглифы)
@wolf_code3 жыл бұрын
На это будет отдельное видео
@illsonr6s8873 жыл бұрын
А чем скала хорош?
@wolf_code3 жыл бұрын
docs.scala-lang.org/scala3/book/why-scala-3.html
@illsonr6s8873 жыл бұрын
@@wolf_code спасибо, я подумаю о переходе
@wolf_code3 жыл бұрын
@@illsonr6s887 с какого языка?
@illsonr6s8873 жыл бұрын
@@wolf_code Питон/С++ , но я еще думаю джаву изучить, также будет проще?
@wolf_code3 жыл бұрын
@@illsonr6s887 джаву необязательно знать для понимания скалы, но желательно)
@vladimirmokeev28563 жыл бұрын
Совсем плохо. Никакого разбора. Ни единой оптимизации, ни эвристик, ни дерева решений, мин/максов, ничего. Только рандом. Мда. А ещё понял, что выпуск будет совсем плох, на фразе "задача простая".
@alexnovik62233 жыл бұрын
А можно решения писать на Java ))))
@wolf_code3 жыл бұрын
Одна из целей канала - популяризация скала, поэтому увы(