- 22
- 341 567
WolfCode
Russia
เข้าร่วมเมื่อ 15 ก.พ. 2021
Канал про программирование и решение интересных задач при помощи программирования
Код пишу на разных языках: Scala, C, TypeScript, Go
Подписывайтесь - будет интересно
Код пишу на разных языках: Scala, C, TypeScript, Go
Подписывайтесь - будет интересно
Пишем мененджер серверов для Counter Strike 1.6
#counterstrike #cs16 #java #scala #bot #telegram
В этом видео мы пишем ядро бота для создания временных серверов counter strike 1.6
Ссылка на полный проект: github.com/WolfCode1/playcs
Ссылка на бота: t.me/playcs_bot
В этом видео мы пишем ядро бота для создания временных серверов counter strike 1.6
Ссылка на полный проект: github.com/WolfCode1/playcs
Ссылка на бота: t.me/playcs_bot
มุมมอง: 1 105
วีดีโอ
Непобедимый бот в крестики нолики
มุมมอง 4.3Kปีที่แล้ว
В данном видео мы пишем ауф код, в котором доказываем что крестики нолики это честная игра и пишем непобедимого бота Ссылка на бота: t.me/benbenderbot (@benbenderbot) Другие видео где я реализовывал подход из данного ролика th-cam.com/video/hUdj6mWqlZA/w-d-xo.html th-cam.com/video/s739PHlFB44/w-d-xo.html #scala #programming #tictactoe #backtrack #telegram #bot #telegrambot #algorithm
Монада - простое объяснение
มุมมอง 13K2 ปีที่แล้ว
В данном видео я попытался перевести видео с канала computerphile th-cam.com/video/t1e8gqXLbsU/w-d-xo.html Библиотеки на скала для работы с монадами: typelevel.org/cats github.com/zio/zio docs.tofu.tf/docs/start #программирование #монада #monad #scala #фп
Решаем очень занимательную школьную задачу
มุมมอง 4.7K2 ปีที่แล้ว
Ссылка на мое решение (scala): gist.github.com/oybek/41d9d4b3cd6d3acf094aeb692c55305b Решение пользователя @Nabokka (160 строк - зверь конечно) (python): github.com/Zanzibarra/solutions_small_problems/blob/master/braces.py #программирование #backtracking #reverse_polish_notation #scala #алгоритмы
Всегда ли надо писать рекурсии в ФП?
มุมมอง 3.1K3 ปีที่แล้ว
#функциональное_программирование #scala #foldLeft #коллекции #программирование Ребят прошу прощения за уебанское объяснение функции FoldLeft - проще просто внимательнее рассмотреть схему и станет все понятно
Популярная в собеседованиях гугл задача. Разбор и решение
มุมมอง 14K3 ปีที่แล้ว
Решаем самую частую в собеседованиях гугл задачу по версии leetcode.com Ссылка на задачу: leetcode.com/problems/guess-the-word/ Ссылка на код решения: gist.github.com/oybek/6f968e97b0274abaeb498b1780a92bd5 #программирование #scala #рекурсия #google #собеседование #алгоритмы
Как Архимед число ПИ считал
มุมมอง 7K3 ปีที่แล้ว
Как Архимед считал число ПИ #scala #математика #программирование #фп
Простые числа не так просты - ищем 10001-е простое число
มุมมอง 5K3 ปีที่แล้ว
Простые числа не так просты - ищем 10001-е простое число #алгоритмы #числа #scala #программирование #фп
Решаем задачу о 8ми ферзях на языке скала, функциональное программирование
มุมมอง 8K3 ปีที่แล้ว
В данном видео мы решаем очень популярную задачу о 8ми ферзях при помощи функционального программирования на языке скала #программирование #scala #фп #функциональное_программирование #алгоритмы #шахматы
Ломаем решение из собеседования в Яндекс - пишем хвостовую рекурсию
มุมมอง 42K3 ปีที่แล้ว
В прошлом видео мы написали рекурсивное решение задачи из собеседования в Яндекс В этом видео мы его сломаем, затем напишем улучшенную версию с хвостовой рекурсией. Так же посмотрим на то в какой байткод компилируется обычная и хвостовая рекурсии и поговорим немного о внутренности JVM Как всегда код пишем на языке скала в функциональном стиле #Яндекс #Алгоритмы #Программирование
Вторая задача с первого собеседования в Яндекс
มุมมอง 30K3 ปีที่แล้ว
#Программирование #Яндекс #Деревья #Алгоритмы
Первая задача из первого собеседования в Яндекс
มุมมอง 170K3 ปีที่แล้ว
Первая задача из первого собеседования в Яндекс
Слабости быстрой сортировки, а так же их устранение
มุมมอง 3.7K3 ปีที่แล้ว
Слабости быстрой сортировки, а так же их устранение
Сортировка слиянием (merge sort) - понятное объяснение и очень простая реализация
มุมมอง 14K3 ปีที่แล้ว
Сортировка слиянием (merge sort) - понятное объяснение и очень простая реализация
Быстрая сортировка - простое объяснение и реализация
มุมมอง 8K3 ปีที่แล้ว
Быстрая сортировка - простое объяснение и реализация
Программируем без мутабельных переменных
มุมมอง 7K3 ปีที่แล้ว
Программируем без мутабельных переменных
Понятие ссылочной прозрачности или почему переменные это плохо?
มุมมอง 3.3K3 ปีที่แล้ว
Понятие ссылочной прозрачности или почему переменные это плохо?
Мужик ты внатуре, «ща я по простому расскажу» , а потом сидишь и « да да понял»
Нихуя не понял. "До тех пор, пока массив не отсортируется" - как мы об этом узнаем, что массив отсортировался? Видео называется "простое объяснение", но тут похоже нужно уже знать, как работает алгоритм, чтобы понять, что говорит автор. Прямо как учебник по матанализу с нуля, написанный исходя из предположения что ты уже знаешь матанализ
Есть красивый способ вычисления π с точностью 6 знаков. Берём число 113355, режем его посередине и делим второе на первое: 355/113. В том, что это всё слепили из первых нечётных чисел, взятых по два раза, никакой теории нет, но как очень удобное правило для запоминания, прекрасно подходит. А теперь вопрос. Традиционно длину окружности вычисляют как предел периметра вписанных в неё ПРАВИЛЬНЫХ многоугольников. При этом явно используется как раз правильность многоугольников (см. текст программы в ролике). Но для корректности следует ещё показать, что результат не изменится, если многоугольники будут произвольными - лишь бы их максимальная сторона стремилась к нулю. Заранее нельзя быть уверенным, что, рассматривая многоугольники другого класса, мы не получим другое предельное значение периметра - т.е. другое значение для "числа π". К сожалению, этот момент упускают из виду.
Привет, я еще совсем новичек в программировании, но считался бы этот черезчур простой код ответом на эту задачу? from collections import Counter a = [9,1,2,7,5,1,7,9,2] b = [key for key,value in Counter(a).items() if value == 1] print(*b)
Можешь пожалуйста сделать тоже самое, только для крестиков ноликов 5 на 5, а не 3 на 3🙏🙏🙏
Смотрю, вроде питон, но нифига не понимаю
это scala)
Так а на самом собесе вы никак с собеседующим не обговаривали эту ситуацию? Или там было достаточно написать то что в первом видосе?
Архимед не оперировал алгебраическими методами, а только геометрическими. Понятие интеграл и предел тогда тоже не существовали. И нашел АРХИМЕД 22/7 не более
Это самое ужасное, что я видел по этому поводу!
Трудно не согласиться, мне материал вообще не зашел - долго решался публиковать
Ничего подобного: в яндексе просьба о помощи насцениваеться как подсказка и идёт в минус
а потом пришёл товарищ Гаусс и сказал что всё считается не так)))
Ерм... Ну вообще-то.. число π - трансцендентое число🤓☝️
Понятия не имею, о чём автор 15 минут тут распинается. Монада это персонаж из аниме Эрго Прокси..)
А если мы не знаем, сколько у нас будет таких отсортированных массивов, которые нужно будет сложить в один
22÷7=π
Первое, что пришло в голову: Я бы в хэш табле запоминала, какие цифры у нас встречались в качестве ключей, значением сохраняла бы 0 если единожды встретилось число, 1 если встретилось второй раз, и таким образом просто вернула бы ключ, у которого значение 0 :) Но я конечно новичок в алгоритмах, так что это может и не самая лучшая мысля
Пройтись по массиву, в случае если число попалось впервые закинуть его в map с ключом значения а в значение тру, проверяется впервые или нет, тем что есть ли такое свойство в map, если же оно есть то удаляется свойство. Потом просто находит единственнле свойство map. Сложность O(1)
O(n)
def find_uniq(nums: list[int]) -> int: nums_table = set() for i in nums: if i not in nums_table: nums_table.add(i) else: nums_table.remove(i) return list(nums_table)[0] сразу написал сет, но до xor так же не догадался :\
Scala вместо if использует тернарный оператор
Если в раст есть тип Option<T>, то это значит что там есть монады? Необычно что Scala-разрабы отходят от сложившейся традиции указывать тип в треугольных скобках и решили делать это в квадратных скобочках (Option<T> vs Option[T]).
в раст да есть, монады можно в любой язык занести, вопрос в том насколько удобно это будет
Топовый контент для подготовки к интервью!!!! Спасибо вам!!!!
a = [1, 1, 2, 2, 3, 5, 5, 8, 8, 13, 13] for e1 in a: cn = 0 for e2 in a: if e1 == e2: cn += 1 if cn == 1: print(e1) Вот так решил
я новичок в пайтон, я когда смотрю такие видосы, пытаюсь сначала решить задачу сам. И вроде получается, но потом когда смотрю решение, понимаю что я чего-то не понимаю n = int(input()) s = [int(input()) for i in range(n)] for i in s: if s.count(i) <2: print(i,end = ' ') Разве мы не можем просто примитивно сделать вот так?
Проходить співбесіду в терористичну компанію. 🫤 Завдання від путіна як побудувати табори смерті, ось такі задачі там треба вирішувати
0:58 Сгруппировать по значению, и найти запись с количеством вхождений 1.
сложность какая у группировки по значениям?
Извините за глупый вопрос, но что такое val в вашем коде?) Для чего вы пишите перед переменной val?
А вот мое решение на VBA, тоже рекурсивное. Оно учитывает варианты когда веса заданы отрицательные. И собирает в один лист (коллекцию) все узлы максимальной ветки: Public Function FindMaxBranch(BinTree As BinTreeNode, _ Optional ByRef total As Long) As Collection Dim ListL As Collection, ListR As Collection Dim totalL As Long, totalR As Long If BinTree Is Nothing Then Exit Function Set ListL = FindMaxBranch(BinTree.Left, totalL) Set ListR = FindMaxBranch(BinTree.Right, totalR) total = totalL Select Case True Case ListL Is Nothing And ListR Is Nothing: Set FindMaxBranch = New Collection Case ListR Is Nothing: Set FindMaxBranch = ListL Case ListL Is Nothing Or totalR > totalL: Set FindMaxBranch = ListR: total = totalR Case Else: Set FindMaxBranch = ListL End Select FindMaxBranch.Add BinTree total = total + BinTree.Weight End Function
Сразу решил через Xor
Решение конечно вообще неожиданное
Проблема Яндекс собеседования, что им нужно их решение, а не то что можно рассуждать.
Если работаешь 5/2, когда ходить по собеседованиям?
Это очень неудачная реализация, которая убивает весь смысл этой сортировки. Уже на 10 тысячах элементов такая реализация выбросит вам ошибку памяти. Из за супер раздутого стека в методе merge(), этот метод не нужно делать рекурсивным, там лучше будет каждый раз создавать новый результат и проходится по элементам простым циклом, а остаток кидать в конец массива. С этим решением вы на том же литкоде не пройдете тесты. Мир ✌
Верно, список создается не в стеке - а в куче - а в целом все по делу и верно. Зачем я показал именно эту реализацию? Она наглядная - новичок не отвлекается на оптимизации а просто познает идею алгоритма. Все что касается Ваших пунктов - я согласен!
Подскажите, какими материалами пользовались для изучения алгоритмов? Хочу к ним на фронта попасть)
кормэн - алгоритмы построение и анализ
Можно глупый вопрос? В 45 строчке кода мы объявляем List(Frac(x+1), Division). А почему у Frac только один параметр - числитель (x+1)? Почему при этом всё работает?) И даже компилятор не ругается, при том что параметров по умолчанию для Frac у нас нет
Very similar to leetcode 540. Single Element in a Sorted Array. First sort and then solution for leetcode for 540(complexity log n, binary search): def my_func(l): left = 0 right = len(l) - 1 while left <= right: mid = left + ((right - left) // 2) if ((mid-1<0 or l[mid-1] != l[mid]) and (mid+1 == len(l) or l[mid] != l[mid+1])): return l[mid] leftVals = mid -1 if l[mid-1] == l[mid] else mid if leftVals % 2: right = mid - 1 else: left = mid + 1
HashSet<int> set = new(); for (int i = 0; i < nums.Length; ++i) { if (set.Contains(nums[i])) { set.Remove(nums[i]); } else { set.Add(nums[i]); } } return set.ToArray()[0];
как же вы тихо говорите )
Интересно, зачем вообще так углубляться в скорость решения задачи, если питон вообще не про скорость?) во всяком случае лезть в бинарный код перебор по-моему) Вы и так решили здорово, главное хоть как-то решить, и желательно, не O(n^2).
Вот смотрю я на этот Scala, рассказываете про его фишечки типа параметры по умолчанию, sealed, object и понимаю, что эти штуки есть в Kotlin. Scala появился в 2003г., Kotlin - в 2011г. Похоже, что Kotlin у них позаимствовал некоторые вещи.
День добрый , какую сборку линукса используете ?
linux mint
Задание от яндекса, как и сам яндекс - говно, если ты не знаешь конкретного решения именно этого задания, то хрен его решишь.
Чел, у тебя круто получается
О, а я догадался до xor-a. Где тут контракты подписывают? 😊
Концептуально максимально близко к языку Rust (который похоже много от Scala перенял)
Решение будет некорректным в случае наличия отрицательных ключей в дереве. Тогда максимальное поддерево не обязано начинаться корнем. В случае неотрицательных ключей такая ветка всегда будет начинаться от корня
в поиск максимума на строках 24 - 27 надо само value добавить, тогда должно отработать правильно даже при наличии отрицательных значений
Решение 2 не совсем линейно. Даже в лучшем случае, если реализация сет через хэш таблицы, то линейность только по вероятности.
Если не линейное, то какое?
@@wolf_code, по умолчанию под сложностью подразумевают сложность для ДМТ (детерминированная машина Тьюринга). Самый быстрый алгоритм реализации, известный мне, это дерево, с которым сложность 2го алгоритма n log n С хэш таблицами в худшем случае может получиться n^2 (на сколько понимаю). Худший случай и определяет сложность реализации. Если бы Вас просили написать алгоритм линейный в среднем (по вероятности), то решение корректно. Но тогда нужно было об этом было сказать в видео.
@@wolf_code, хотя и хэш таблицу можно модифицировать до log n (в худшем случае) при вставке/удалении/проверке.
@@igortunev6163 как работает хэш таблица по вашему? Конкретно реализация ее в библиотеке java? Там никак невозможна деградация поиска и вставки до линейного времени
@@wolf_code, теоретическая модель допускает линейность. В java, видимо, модифицированная версия. Например, можно подобрать множество чисел, на котором хэш функция будет выдавать один и тот же адрес (на список). Тогда значения придётся класть в один список, сложность поиска в котором линейна от его длины (поиск необходим для сетов даже при вставке). Отсюда и линейность в худшем случае. Но можно вместо списка использовать, опять же, дерево или вложенный хэш и рассуждения повторяются. Те операции быстрее чем за log n, скорей всего не реализуете (мне такого не известно). Ну, или предложите тогда?
b = a.sorted For i in b: If index(i) mod 2 == 0: If b[index(i)+1] - b[index(i)] != 0: print(i) Break; Сложность O(n), считая сортировку, в памяти только массив. Не уверен в синтаксисе, уже 2 года работаю только с sql, но мысль думаю понятна)
с чего вдруг сортировка за линейное время?
@@wolf_code Согласен, в pyton сортировка n*logn, не линейная, но тоже неплохо.
Выход за предел масива справа в коде.
Like!
Гайз подписывайтесь на мой телеграм канальчик - там кайфуха и объявления стримов t.me/wolfdump