def func(lst1, lst2): return sort(lst1 + lst2, key=lambda(x, int(x.split(" ")[0]))). Первое, что пришло в голову после того, как ознакомился с условием)
Фаааак... Парень потом прямо говорит, что через кучу надо решать эту задачу 😂😂😂 когда писал решение ещё не досмотрел до конца. Если без merge готового делать, то нужно да через кучу в цикле перебирать итераторы. Делал подобное когда-то... Там значения только из файлов приходили. После каждой итерации вызываем хипифай и берëм значение, и делаем некст соотв. итератору.
В первой задаче можно определить класс передать параметры в конструктор все три значения, перопределить методы сравнения и в результирующей функций сплитит строки и передавать аргументом в класс и накинуть аргумент sort(key=instance.timestamp) Незнаю будет ли работать, накинул из головы
При всём уважении объясните мне, пожалуйста, почему эту задачу не решили банальным сложением списков и сортировкой с ключом по анонимной функции lambda, в которой мы каждый список сплитуем и сортируем по первому элементу сплита? Тогда будет всего 4-6 строчек кода. Или я неправильно задачу понял?
@@shoggot282я в этом году егэ сдавал. Сделал 27, только для б пункта не успел, остальное все сделал. Егэ изи, но оно очень тупое, для проверки программирования…
комментаторы смешные, толи не понимают задачи, толи не понимают ограничения. какие result.append( some_list [ i ] )? у вас память бесконечная? только result.append( some_list . pop( 0 ) какие return sorted? опять память кокой sort ( some_list )? n log n, а надо за n да, и на верхнем уровне список дополняется до длины int ( log ( len ( spisok_spiskov ) ) ) + 1 пустыми списками, поверх итеративно merge через for (1, len (spisok_spiskov ), 2) --> сокращение списка до 1 за log n
@@riserlarens7634 здесь просто не успели так как времени потеряли кучу на разбор плохого решения, да и вообще собес (алго секция) это про чек алгоскилов
@@НикитаБуров-ъ6р, не успели что? Никто не говорил что это алго секция, просто кодинг. Вдруг они просто хотели проверить знания питона, а не алгоритмов, кто знает)
Чего??А Джанго у тебя не на питоне написана)))Один хрен сначала питон спрашиваю базовый(если на джуна идешь) , потом к джанго переходят , мидлвары, orm джанговская + rest ( без него хрен найдешь вакансию) , + http,smtp,https что и как куда и где, зачем и тд и тп
@@Алексей-ъ4д5юкакой смысл в алго-собесе, если можно сортировать функцией из стандартной библиотеки? да и сильно неэффективно вышло бы, важна оптимальность решения по скорости и по памяти
@@arthurlouiskarl какой алгособес джуну? ладно бы он основной функционал еще показал, что он понимает, что есть другие способы. то, что он выдал в видосе, это базовый гигачад пришедший из сей. смысл в питоне и куче его полезных функций и либ, если ты не в состоянии показать это хотя бы в самом начале, прежде чем начнешь что-то подобное лепить? я не говорю, что он это сделал неправильно, я говорю, что я бы на собесе джуна алгоритмы проверял во вторую очередь. возможно перед видео они уже что-то обсудили и оценили, поэтому решили сразу так, но у зрителя такой информации нет. почему сразу не прыгнуть к torch GPU сорту, который самый быстрый на данный момент? Это даже больше вопрос не к джуну, а к интервьюеру
a = '1111 name2 1111' b = '1111 name1 1111' c = '3333 name3 5555' d = '3333 name4 2222' g = '2222 name4 5555' def sort(*args): res = [] for arg in args: res.append(arg) return sorted(res, key = lambda x: (int(x.split(' ')[0]),int(x.split(' ')[2]),int( x.split(' ')[1])) print(sort(a, b, c, d, g)) вот что я придумал буквально за 10 минут (изучаю python месяца 3)
на словах от интервьювера о том что общения с людьми будет меньше, видео можно закрывать. Из кодера можно сделать любую обезьяну, зачем нанимать для этого людей.
Сам еще даже не джун и не стажер Если я верно понял, то на вход функция получает строки текстовые, почему начали говорить о листах не ясно...(p.s. свой пример делал из 3 строк) Вижу такое решение, вводим на вход функции 3 строки, их сплитуем и делаем из них те самые листы..) Делаем общий лист добавляя в него под листы тех самых строк, и вызываем built-in функцию Sorted и сортировку по ключу делаем ( через анонимку ключом указываем 0 элемент листа т.е. тот timestamp) выдаем на выход функции.. Если я что то натупил то поправьте.. def mergeandsort(fR: str, lR:str , nR: str)->list: fR=fR.split() lR=lR.split() nR=nR.split() result=list() result.append(fR) result.append(lR) result.append(nR) return sorted(result,key= lambda x: int(x[0]),reverse=False)
Вы неправильно поняли суть задачи. С каждого датчика приходят список строк. Каждая строка это три значения разделенные пробелом. То есть в первом списке может быть например 1500 строк формата "1827361 name_metrik 1231712". А во втором списке может быть например 20000 строк такого же формата. Нужно сделать список, в котором будет 21500 строк, но они ещё и должны быть отсортированы по первому значению. Попробуйте решить)
def merge_ordered_lists(metric, *args): return sorted(value for values in args for value in values if value.split()[1] == metric ) # time O(n log n), space O(n)
в данном случае на мой взгляд доли секунд компенсируются простой, если бы стоял вопрос оптимизации под нагрузку, тогда бы это имело место. приведенный мной вариант это первое, что должен написать питонист, все таки для выполнения хайлоад задач есть другие инструменты@@eeeeeeee133
Ребят, если вам понравился видосик, то поставьте ему лайк! По братски :)
Ваша поддержка нереально много для нас значит!
def func(lst1, lst2):
return sort(lst1 + lst2, key=lambda(x, int(x.split(" ")[0]))).
Первое, что пришло в голову после того, как ознакомился с условием)
тут даже сплитить не нужно, строки и так сортируются правильно
Задача в две строки решается (можно в одну). Вначале сплит, потом heapq. merge листов. И можно любое количество датчиков обработать через *args.
Фаааак... Парень потом прямо говорит, что через кучу надо решать эту задачу 😂😂😂 когда писал решение ещё не досмотрел до конца. Если без merge готового делать, то нужно да через кучу в цикле перебирать итераторы. Делал подобное когда-то... Там значения только из файлов приходили. После каждой итерации вызываем хипифай и берëм значение, и делаем некст соотв. итератору.
Спасибо за видос. Очень интересное интервью
Интересный собес! По поводу задачи на слияние двух отсортированных последовательностей, то на ум сразу пришел Two Pointers
Ну это не наши методы) В смысле не методы питонистов
Не могли бы добавить тест-кейсы задачи? Интересно попробовать самому решить🙂
Благодарю, качественно.
В первой задаче можно определить класс передать параметры в конструктор все три значения, перопределить методы сравнения и в результирующей функций сплитит строки и передавать аргументом в класс и накинуть аргумент sort(key=instance.timestamp)
Незнаю будет ли работать, накинул из головы
При всём уважении объясните мне, пожалуйста, почему эту задачу не решили банальным сложением списков и сортировкой с ключом по анонимной функции lambda, в которой мы каждый список сплитуем и сортируем по первому элементу сплита? Тогда будет всего 4-6 строчек кода. Или я неправильно задачу понял?
Что за кринжатина, 30 минут ковырять задачу которая легче чем задача 26 из егэ. Кликбейтный заголовок ...
иди порешай егэ братик обязательно поможет там еще 27 я слышал есть вапще страх вот решишь и точно на работу устроишься
@@shoggot282я в этом году егэ сдавал. Сделал 27, только для б пункта не успел, остальное все сделал. Егэ изи, но оно очень тупое, для проверки программирования…
ещё бы увидеть, что там за задача, а то на слух сложно
это надо быть надмозгом созать i и j коунтеры и затем делать цикл в цикле c i и j
ilst = ['222 str data', '444 str data', '555 str data', '888 str data']
jlst = ['555 str data', '999 str data', '1400 str data']
klst = ['2 str data', '3 str data', '51 str data']
res = []
def sort_data(*args):
if max(len(lst) for lst in list(args)) == 0:
return
lists = [lst for lst in list(args) if len(lst) != 0]
first_items = [int(lst[0].split(' ')[0]) for lst in lists]
min_idx = 0
for idx in range(len(first_items)):
if first_items[idx] < first_items[min_idx]:
min_idx = idx
res.append((lists[min_idx]).pop(0))
return sort_data(*args)
sort_data(ilst, jlst, klst)
print(res)
😅
комментаторы смешные, толи не понимают задачи, толи не понимают ограничения.
какие result.append( some_list [ i ] )? у вас память бесконечная? только result.append( some_list . pop( 0 )
какие return sorted? опять память
кокой sort ( some_list )? n log n, а надо за n
да, и на верхнем уровне список дополняется до длины int ( log ( len ( spisok_spiskov ) ) ) + 1 пустыми списками, поверх итеративно merge через for (1, len (spisok_spiskov ), 2) --> сокращение списка до 1 за log n
так никто не просил писать эффективный код)
@@riserlarens7634 здесь просто не успели так как времени потеряли кучу на разбор плохого решения, да и вообще собес (алго секция) это про чек алгоскилов
@@НикитаБуров-ъ6р, не успели что? Никто не говорил что это алго секция, просто кодинг. Вдруг они просто хотели проверить знания питона, а не алгоритмов, кто знает)
@@riserlarens7634 мб мб, но если кандидат плывет то нет и смысла копать глубже, а если тянет - будут копать до предела компетенций
чотенько! лайк от СЕООНЛИ!
Как Кирилла меня задело написание имени а одной буквой Л 😂😂😂
если идти не на питон разраба а на джанго то будут ли такие задачи?
Там похожие но чуть сложнее и с вводными данным разными и валидацией
Чего??А Джанго у тебя не на питоне написана)))Один хрен сначала питон спрашиваю базовый(если на джуна идешь) , потом к джанго переходят , мидлвары, orm джанговская + rest ( без него хрен найдешь вакансию) , + http,smtp,https что и как куда и где, зачем и тд и тп
Это так что первое в голову пришло по вопросам
А что обычный extend изначально был запрещен? К чему сложности через while?
Если написать просто extend, то условие отсортированности результирующего массива не будет соблюдаться
@@VaeVictisDanil а что sorted запрещен?
Тогда следующим вопросом было бы что-то про "о большое"? 😀
@@Алексей-ъ4д5юкакой смысл в алго-собесе, если можно сортировать функцией из стандартной библиотеки? да и сильно неэффективно вышло бы, важна оптимальность решения по скорости и по памяти
@@arthurlouiskarl какой алгособес джуну? ладно бы он основной функционал еще показал, что он понимает, что есть другие способы. то, что он выдал в видосе, это базовый гигачад пришедший из сей. смысл в питоне и куче его полезных функций и либ, если ты не в состоянии показать это хотя бы в самом начале, прежде чем начнешь что-то подобное лепить? я не говорю, что он это сделал неправильно, я говорю, что я бы на собесе джуна алгоритмы проверял во вторую очередь. возможно перед видео они уже что-то обсудили и оценили, поэтому решили сразу так, но у зрителя такой информации нет. почему сразу не прыгнуть к torch GPU сорту, который самый быстрый на данный момент? Это даже больше вопрос не к джуну, а к интервьюеру
def neuro_lists_merge(_list1, _list2):
_list1.extend(_list2)
return sorted(_list1, key=lambda x: int(x.split()[0])) 🤷♀
Какое решение оптимальное?
a = '1111 name2 1111'
b = '1111 name1 1111'
c = '3333 name3 5555'
d = '3333 name4 2222'
g = '2222 name4 5555'
def sort(*args):
res = []
for arg in args:
res.append(arg)
return sorted(res, key = lambda x: (int(x.split(' ')[0]),int(x.split(' ')[2]),int( x.split(' ')[1]))
print(sort(a, b, c, d, g))
вот что я придумал буквально за 10 минут (изучаю python месяца 3)
@@kurisug8867 Сложность nlogn ,а в видосе делают за линейное , что быстрее
@@kurisug8867 Это код не работает. Более того, задача была не об этом. Изначально приходят отсортированные списки, в которых хранятся данные.
на словах от интервьювера о том что общения с людьми будет меньше, видео можно закрывать. Из кодера можно сделать любую обезьяну, зачем нанимать для этого людей.
Спрм в жп
Это невозможно смотреть, пол часа ненужных англицизмов с объяснениями почему я выбрал эту работу? 🥴🤢
Сам еще даже не джун и не стажер
Если я верно понял, то на вход функция получает строки текстовые, почему начали говорить о листах не ясно...(p.s. свой пример делал из 3 строк)
Вижу такое решение, вводим на вход функции 3 строки, их сплитуем и делаем из них те самые листы..)
Делаем общий лист добавляя в него под листы тех самых строк, и вызываем built-in функцию Sorted и сортировку по ключу делаем ( через анонимку ключом указываем 0 элемент листа т.е. тот timestamp)
выдаем на выход функции..
Если я что то натупил то поправьте..
def mergeandsort(fR: str, lR:str , nR: str)->list:
fR=fR.split()
lR=lR.split()
nR=nR.split()
result=list()
result.append(fR)
result.append(lR)
result.append(nR)
return sorted(result,key= lambda x: int(x[0]),reverse=False)
Вы неправильно поняли суть задачи. С каждого датчика приходят список строк. Каждая строка это три значения разделенные пробелом. То есть в первом списке может быть например 1500 строк формата "1827361 name_metrik 1231712". А во втором списке может быть например 20000 строк такого же формата. Нужно сделать список, в котором будет 21500 строк, но они ещё и должны быть отсортированы по первому значению. Попробуйте решить)
это что за трэш контент ? задача в 4-5 строк решается
Чел в кепке похож на Тома Холланда
Это он и есть
Фу, 🤮
def merge_sorted_lists(list1, list2):
return sorted(list1 + list2, key=lambda x: x.split()[0])
та же фигня)
def merge_ordered_lists(metric, *args):
return sorted(value
for values in args
for value in values
if value.split()[1] == metric
) # time O(n log n), space O(n)
кринжа сишного навалил)))
result.extend([list1,list2])
return sorted(result)
Интересно как он будет string сравнивать, по лексикографическому порядку?
@@ussenUtebayev
так как таймштамп стоит в начале строки, то и сортировать будет по нему, а именно по возрастанию аски кодов
merge sort 2 отсортированных массивов за n происходит, твой вариант за n log n
Таймстемпы будут одинаковой длины ещё очень долго (раньше кончится инт32, чем достигнет 10 миллиардов).
Но да, формально надо приводить к числу.
в данном случае на мой взгляд доли секунд компенсируются простой, если бы стоял вопрос оптимизации под нагрузку, тогда бы это имело место. приведенный мной вариант это первое, что должен написать питонист, все таки для выполнения хайлоад задач есть другие инструменты@@eeeeeeee133