Бред

Ответить в тред Ответить в тред
Check this out!
Аноним 20/01/22 Чтв 20:11:57 2617097901
image 257Кб, 600x600
600x600
Двачаны, собеседусь на питониста
дали кое какие задание и одно из них мне непонятно. Просто объясните что от меня хотят, писать за меня не надо.

Дано: список dict-объектов вида вида {"key": "value"}, например [{"key1": "value1"}, {"k1": "v1", "k2": "v2", "k3": "v3"}, {}, {}, {"key1": "value1"}, {"key1": "value1"}, {"key2": "value2"}].Напишите функцию, которая удаляет дубликаты из этого списка. Для примера выше возвращаемое значение может быть равно [{"key1": "value1"}, {"k1": "v1", "k2": "v2", "k3": "v3"}, {}, {"key2": "value2"}].Обязательное условие: функция не должна иметь сложность O(n^2).
Аноним 20/01/22 Чтв 20:13:51 2617098792
бамп
Аноним 20/01/22 Чтв 20:14:48 2617099293
бамп
Аноним 20/01/22 Чтв 20:15:17 2617099474
На кодфорсе подобные задачи 1200 птс. Нихуя себе насколько же ты никчёмный что даже не можешь подобную хуйню решить. Проиграл с "питониста"
Аноним 20/01/22 Чтв 20:15:23 2617099575
бамп
Аноним 20/01/22 Чтв 20:16:33 2617100056
Пошёл нахуй отсюда, еблан.
Аноним 20/01/22 Чтв 20:17:03 2617100297
Аноним 20/01/22 Чтв 20:17:16 2617100398
Пизда тупой
Аноним 20/01/22 Чтв 20:18:26 2617100989
>>261710029
жопу свою ставишь, что set входного говна не O(n2)?
Аноним 20/01/22 Чтв 20:21:35 26171023410
>>261709947
Что, пограмисты изобрели себе ммр? А то хуйня какая-то, джуны-сеньоры, ничего не понятно, а так приходишь: "У меня 8700 ммр в питоне" и всем сразу понятно всё.
Аноним 20/01/22 Чтв 20:25:04 26171038211
>>261710098
да мне похуй, я кодмакака
Аноним 20/01/22 Чтв 20:26:30 26171044412
for i in x:
for j in x:
if i == j:
del x[x.index(j)]

#[{'key1': 'value1'}, {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}, {}, {}, {'key1': 'value1'}, {'key1': 'value1'}, {'key2': 'value2'}]
#[{'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}, {}, {'key2': 'value2'}]

В чем он неправ?
Аноним 20/01/22 Чтв 20:26:50 26171046413
>>261709790 (OP)
>>261710098
>>261710382
кстати лол, оп, ебани какой нибудь самый мега уебанский алгоритм O(nn!). не, ну а хуле, не O(n2) же
Аноним 20/01/22 Чтв 20:33:11 26171075314
>>261709790 (OP)
Создаешь в функции пустой лист, делаешь проход по входному листу, если элемент входного листа новый - пихаешь во внутренний лист. Скорее всего это будет O(n^2), поэтому делай рекурсией, лол.
Аноним 20/01/22 Чтв 20:33:41 26171078715
>>261710444
>функция не должна иметь сложность O(n^2)
Хотя о чём это я, сложности какие-то. Ебаните новый кукурайзен, и будет считать нормально, ёпта!
Аноним 20/01/22 Чтв 20:39:36 26171107316
>>261709790 (OP)
Бля да в словарь эту хуйню пихаешь и все удаляется ебать
Аноним 20/01/22 Чтв 20:42:12 26171118817
print(x)
xi=0
xj=1
for i in x:
xi=xi+1
for j in x:
if i == j and xi!=xj:
xj=xj+1
del x[x.index(i)]
print(x)

T ГЕНИЙ?
Аноним 20/01/22 Чтв 20:45:12 26171130118
>>261710753
> делай рекурсией, лол
Будет то же самое.
>>261711188
>>261710444
Школоло-эксперты, вы хоть знаете, что такое O большое?
Аноним 20/01/22 Чтв 20:46:31 26171136519
>>261709790 (OP)
Как вообще понять что такое сложность алгоритма? Для этого надо знать дискретку или это самостоятельная дисциплина?
Аноним 20/01/22 Чтв 20:49:20 26171150720
>>261711365
Раз такой умный возьми да напиши
Аноним 20/01/22 Чтв 20:52:15 26171164721
16031849518840.gif 35Кб, 112x112
112x112
>>261709790 (OP)
А что если просто рассортировать массив по размеру словарей, а потом заебенить бинарный поиск? Уже как минимум будет меньше n^2
Аноним 20/01/22 Чтв 20:52:33 26171167122
>>261709790 (OP)
Напишу в нескольких вариантах-так что твои работодатели охуеют,за все 5к на карту
Аноним 20/01/22 Чтв 20:52:45 26171168623
>>261711507
В смысле? Что написать? Я спросил, как понять, т.е. что читать надо, что знать надо чтобы познать эту дисциплину?
Аноним 20/01/22 Чтв 20:54:36 26171178024
Аноним 20/01/22 Чтв 20:55:58 26171184225
>>261711365
Отдельная дисциплина, "теория сложности"
Аноним 20/01/22 Чтв 20:56:13 26171185726
>>261710098
лист в сет за o(n) перекидывается, мань. сет в лист еще за один n
20/01/22 Чтв 20:58:39 26171199327
Аноним 20/01/22 Чтв 20:59:39 26171204628
>>261709790 (OP)
Куда собеседование то? Сомневаюсь что в реальном коде будет такой дурацкий шмоток словарей и да ещё их сортировка будет требовать дополнительной оптимизации. Это же всё на стадии организации данных пресекается.
Аноним 20/01/22 Чтв 21:01:54 26171217229
>>261712046
Хуй его знает, зовут django писать вроде как. ВОпросы по джанго я закрыл
а тут это
Аноним 20/01/22 Чтв 21:04:59 26171233430
>>261711780
Загугли timsort и binary search. Если ты не тупой, то сделаешь все по гайдам, а, возможно, и как-то упростишь.
https://habr.com/ru/company/otus/blog/565640/
Суть такова: сортируешь по тимсорту, а потом этот самый лист пробегаешь по бинарному поиску.
Выходит время n * log ^ 2 (n), если я не ошибаюсь.
Аноним 20/01/22 Чтв 21:05:44 26171238631
def delete_dub(old_dict):
new_dict = []
for i in old_dict:
if i not in new_dict:
new_dict.append(i)
return new_dict

ЧТО ДУМОЕТЕ?
оп
Аноним 20/01/22 Чтв 21:07:04 26171245632
как понять какой у меня сложности код?
Аноним 20/01/22 Чтв 21:10:22 26171262033
>>261712386
Тебе написали - кидай в сет, это самое быстрое решение из всех
Аноним 20/01/22 Чтв 21:10:26 26171262534
>>261712386
>new dict
>list
Мы вам перезвоним
Аноним 20/01/22 Чтв 21:15:02 26171285635
>>261712386
Анон, я думал тебе правда нужна помощь, а ты троллишь
Аноним 20/01/22 Чтв 21:15:53 26171291636
Стикер 0Кб, 400x388
400x388
Аноним 20/01/22 Чтв 21:18:12 26171303937
>>261709790 (OP)
>Просто объясните что от меня хотят
От тебя хотят избавиться таким способом.

>функция не должна иметь сложность O(n^2)
Можешь написать йоба функцию, которая будет еще медленнее и ржать им в лицо.

Либо тебя реально наебывают, либо ты собеседуешься у таких же даунов. Тебе минимум нужно посмотреть весь массив это уже n. Дальше тебе нужно хранить информацию об уникальных копиях и сверяться с ней каждый раз. Единственный тут вариант это создать второй массив и двоичным поиском проверять есть твой объект в нем или нет. Если его там нет, то у тебя сразу будет отсортированное место вставки, тогда ты часть массива двигаешь вправо, и вписываешь туда новый объект. Но в любом случае это около n^2, потому что тебе нужно n раз поискать log2(n) (на самом деле меньше, потому что n = [0; n]) + переписать массив в худшем случае n раз вправо, а это опять читать элементы и записывать элементы.

Короче, тебя сплавляют методично.
Аноним 20/01/22 Чтв 21:19:35 26171311438
>>261713039
Так еще собеседования не было
это тип опросник небольшой
Аноним 20/01/22 Чтв 21:20:02 26171313239
>>261713039
Алсо, второй вариант, это ты сортируешь за n × log(n) массив и дальше из него линейно выкидываешь в новый массив уникальные копии, это будет n + n × log(n).
Аноним 20/01/22 Чтв 21:21:09 26171319040
>>261713039
Еще один со скиллбокса, которому не рассказали про сеты
Аноним 20/01/22 Чтв 21:22:12 26171324141
start_time = datetime.now()
delete_dub(x)
print(datetime.now() - start_time)

#0:00:00

И чо какого хуя?
Аноним 20/01/22 Чтв 21:22:22 26171325142
>>261713114
Так политкорректность, привыкай.

>>261713190
Мань, ты знаешь сложность поиска в сете? Или ты думаешь он магически и бесплатно сохраняет уникальные копии?
Аноним 20/01/22 Чтв 21:24:10 26171334543
>>261709790 (OP)
const result = [...new Set(
list.map(item => JSON.stringify(item))
)].map(json => JSON.parse(json)

Моя ЗП $5000, задавайте ответы.

Аноним 20/01/22 Чтв 21:26:23 26171345144
Нихуя себе сколько жира из треда вытекает
Аноним 20/01/22 Чтв 21:27:18 26171349945
>>261713345
Если сет не устроит то

const obj = list.map(item => JSON.stringify(item))
.reduce((acc, curr) => (acc[curr] = true, acc), {})
const result = Object.keys(obj).map(json => JSON.parse(json))

Аноним 20/01/22 Чтв 21:27:27 26171350946
>>261709790 (OP)
Собеседования какие-то. Почему до сих пор не запилили какой-нибудь сайт или приложение, где просто в сидят все программисты и пишут код. Потом дружно делят деньги между собой.
Аноним 20/01/22 Чтв 21:28:22 26171356947
Аноним 20/01/22 Чтв 21:28:58 26171359648
>>261713499
Для особо умных: в жс строковые ключи в объекте сохраняются в порядке добавления и он гарантируется.
Аноним 20/01/22 Чтв 21:30:42 26171370249
>>261713499
>const obj = list.map(item => JSON.stringify(item))
>.reduce((acc, curr) => (acc[curr] = true, acc), {})
>const result = Object.keys(obj).map(json => JSON.parse(json))
Это жи не пайтон нихуя
Аноним 20/01/22 Чтв 21:31:44 26171374650
Аноним 20/01/22 Чтв 21:33:19 26171384051
def delete_dub(l):
new_l = []
for i in l:
if i not in new_l:
new_l.append(i)
return new_l

Так чо?
Аноним 20/01/22 Чтв 21:34:35 26171391452
>>261709790 (OP)
>сложность O(n^2).
Поясните это.
Не погромизд.
Аноним 20/01/22 Чтв 21:35:26 26171396453
Аноним 20/01/22 Чтв 21:36:32 26171401754
>>261713251
Господи, какой же ты тупой, я просто хуею.
set(лист) - o(n) на проход листа o(1) на добавление говна в сет (хуевый амортизированный o(n)). o(n) + o(1) (или o(n)) дает o(n).
list(сет) - o(n).
o(n) + o(n) сколько будет?
Аноним 20/01/22 Чтв 21:36:36 26171402155
Аноним 20/01/22 Чтв 21:37:24 26171406056
>>261714021
А теперь поясни так, чтобы понял не погромизд. На пальцах.
Аноним 20/01/22 Чтв 21:37:55 26171407957
КАКИИМ СПОСОБОМ СЛОЖНОСТЬ ТО ОЦЕНИТЬ ТЕПЕРЬ
мимопо
Аноним 20/01/22 Чтв 21:40:53 26171422758
>>261714060
Если только пальцем в жопу. Нельзя так просто взять и объяснить квантовую механику языком, который был придуман одной обезьяной, чтобы объяснить другой обезьяне на какой пальме висят бананы.
Аноним 20/01/22 Чтв 21:44:02 26171439259
>>261713241
Удали миллион объектов и проверь.
Аноним 20/01/22 Чтв 21:44:47 26171442660
>>261714079
Ну смари, у тебя есть коллекция из n элементов.
Чтобы пройтись по ней один раз, ты должен выполнить n процедур. Если ты для каждого из элементов проходишься ещё раз по всем остальным n элементов, то ты вызываешь эту процедуру n * n раз. Это сложность O(n^2). То есть с увеличением числа n количество выполняемых процедур растёт как последовательность {n^2}.
Аноним 20/01/22 Чтв 21:47:13 26171457361
>>261714426
for i in l:
if i not in new_l:

То есть тут я так или иначе пройдусь n^2?
Аноним 20/01/22 Чтв 21:49:06 26171468062
>>261714573
Да. Ну я не уверен в реализации оператора in в питоне, но теоретически он проходится по всему массиву (в худшем случае, сложность всегда считается по худшим случаям), и сравнивает твой элемент со всеми остальными n элементами.
Аноним 20/01/22 Чтв 21:49:15 26171469263
>>261714227
Квантовые сказки это бред.

Что у опа за условие, что можно на каждый байт удваивать время работы? Типа вообще похую?
Аноним 20/01/22 Чтв 21:49:46 26171471364
def remove_duplicates(dano_):
u = {}
for d in dano_: # O(n)
strd = str(d) # O(1)
if not strd in u: # O(1)
u[strd] = d # O(1)

otv = [
v
for k,v in u.items() # O(n)
]
# O(n1112) = O(2n)
return otv
Аноним 20/01/22 Чтв 21:50:05 26171473765
skk.png 20Кб, 800x120
800x120
Аноним 20/01/22 Чтв 21:51:02 26171478566
>>261714713

звездочки в последнем комментарии похерились.
крч сложность O(2n)

python 3.9. порядок элементов словаря сохраняется и гарантируется
Аноним 20/01/22 Чтв 21:54:13 26171498067
image.png 343Кб, 500x500
500x500
Аноним 20/01/22 Чтв 21:55:14 26171502968
new_l = []
for i in l:
if i not in new_l:
new_l.append(i)
return new_l

Как я понял будет: я беру 7 элементов
и делаю цикл в 7 тактов
каждый такт я сравниваю свой новый Лист с текущим значением

это получается: N+N разве нет?
Аноним 20/01/22 Чтв 21:55:37 26171505469
image.png 32Кб, 231x218
231x218
Аноним 20/01/22 Чтв 21:57:42 26171516070
Стикер 0Кб, 512x411
512x411
>>261715029
Что я имею ввиду: первый такт у меня пустой лист , значит IN не будет проходится по листу
второй такт он пройдет 1 элемент
третий такт 2 элемента и тд
Это получается O(n+(n-1)) ВЕРНО?
Аноним 20/01/22 Чтв 21:57:45 26171516671
1313111134.mp4 9679Кб, 1280x720, 00:00:22
1280x720
>>261709790 (OP)
Спасибо ОП, сегодня было много тредов про вкат в айти, и я даже преисполнился немного, что решил продолжить изучение Питона, и тут ты с тредов, где аноны гении решают задачу, суть которой я буквально не понимаю, что лишний раз убедило меня в том, что наверное вот это вот все, вся эта абстрактная хуйня, не для меня, и мне стоит начать изучать что либо другое. Спасибо тебе анон, спасибо вам аноны, что я немного разобрался в себе.

Абу благословил этот пост.
Аноним 20/01/22 Чтв 21:58:01 26171517872
Аноним 20/01/22 Чтв 21:58:24 26171519573
>>261715029
>>261714713
>>261714573
Люди, вы правда думаете. что оператор in волшебным образом возвращает ответ, а не создает новый цикл???
Аноним 20/01/22 Чтв 21:59:16 26171523774
Аноним 20/01/22 Чтв 21:59:19 26171524175
>>261715195
для ключей словаря - нет. В том то и фишка словаря.
Аноним 20/01/22 Чтв 22:01:46 26171535976
Аноним 20/01/22 Чтв 22:01:50 26171536377
Аноним 20/01/22 Чтв 22:01:57 26171537278
>>261715178
Константы приводятся к 1
Сложность оценивается зависимостью операций от переменных, а не постоянных величин.
Аноним 20/01/22 Чтв 22:03:52 26171547579
>>261715372
какая там на самом деле сложность?
Аноним 20/01/22 Чтв 22:04:39 26171552780
>>261715372
То есть даже если взять логарифм по базе 2 или по базе 10 - для оценки сложности разницы нет, потому что график функции растет одинаково.
Аноним 20/01/22 Чтв 22:05:08 26171555781
Аноним 20/01/22 Чтв 22:07:00 26171566582
Так, тут с сетом обосрамс небольшой вышел. Словари не хешируются (^:
Аноним 20/01/22 Чтв 22:07:00 26171566683
Аноним 20/01/22 Чтв 22:08:53 26171577984
>>261715029
>if i not in new_l:
Как язык делает это без цикла, объясните деду, я только паскаль знаю.
Аноним 20/01/22 Чтв 22:10:02 26171583485
>>261715779
python
Это залупа все под капотом делает
а под капотом там c++
Аноним 20/01/22 Чтв 22:11:27 26171591186
>>261715527
Да, даже есть формула
log a (n) = log b (n) / log b (a) , это показвает, что можно выбрать абсолютно любое подлогарифмическое число.
>>261715241
То есть даже на большом количестве входных данных, пайтон моментально вернет результат?
Аноним 20/01/22 Чтв 22:11:37 26171591587
ПОКА ВВЫ ЗДЕСЬ
как правильно ответить на этот вопрос
Какие способы параллельной обработки запросов на Django вы знаете?
Аноним 20/01/22 Чтв 22:11:57 26171593388
>>261715911
> данных пайтон
быстрофикс
Аноним 20/01/22 Чтв 22:13:57 26171604189
>>261715911
не моментально.
ключи словаря - HashMap. Время поиска по ней не зависит от кол-ва элементов - константно. Т.е. O(1)
Аноним 20/01/22 Чтв 22:13:58 26171604290
>>261709790 (OP)
Пошел нахуй выродок брухлявой проститутки. Чтобы вы все вайтишники горели в аду.
Запомни меня сука, я тот кто завалит тебя и таких как ты на собеседовании спрашивая про ебучие обходы деревьев и мне будет расрать что ты не будешь заниматься этим на работе.
Моя задача - чтобы ты сдох от голода мразь
Аноним 20/01/22 Чтв 22:20:20 26171637291
ну крч я отправил задание
меня пошлют нахуй?
оп
Аноним 20/01/22 Чтв 22:20:55 26171640592
>>261716041
Что ж, мне на лекциях по шарпу про это не рассказывали.
В любом случае, не думаю, что код, который может написать любой школьник, ожидают на собесе
Аноним 20/01/22 Чтв 22:21:13 26171642393
sadas.png 19Кб, 516x101
516x101
Аноним 20/01/22 Чтв 22:27:02 26171673594
Чем эта задача принципиально отличается от любой другой, где нужно убрать дубликаты из листа? Тип элемента влияет?
Аноним 20/01/22 Чтв 22:29:56 26171688295
Что тебе непонятно? Удалить дубликаты из списка словарей. Даже я (тупой, вечный джун) все понял. Или ты о-символики не знаешь?
Аноним 20/01/22 Чтв 22:32:57 26171704496
>>261711365
Временная сложность это предел роста времени работы алгоритма при стремлении к бесконечности размера исходных данных.

Соответственно, алгоритмы бывают логарифмическими (при поиске в бинарном дереве обычно бывает именно логарифмическая сложность), полиномиальными, экспоненциальными и т.д. Здесь мы дрочим на медленность, т.е. если мой алгоритм линейный, а твой экспоненциальный, то ты обосрался.
Аноним 20/01/22 Чтв 22:48:55 26171780197
>>261714060
n это примерное количество элементов с которыми надо что-то сделать
O(log(n)) или O(n^2) это сколько раз прийдётся использовать каждый из них. Идеал - O(1), наихудший вариант (примерно) - O(n*n!)
Чтоб понять, насколько это плохой случай - https://ru.wikipedia.org/wiki/Bogosort
Аноним 20/01/22 Чтв 22:57:29 26171817298
>>261709790 (OP)
сортируй и удаляй один из соседних одинаковых. n log n
20/01/22 Чтв 23:06:37 26171861299
Аноним 20/01/22 Чтв 23:33:56 261719811100
>>261714060
>так, чтобы понял не погромизд. На пальцах
Средний видишь?
Настройки X
Ответить в тред X
15000
Макс объем: 20Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
X
Ваш шидевор X
Стикеры X
Избранное / Топ тредов