Хелп с задачкой на Python
1200
35
Решаю на codewars.com задачки, вот спустя 10 решенных дошёл к этому: (собстна по факту я решил, но читайте)
Your goal in this kata is to implement a difference function, which subtracts one list from another and returns the result.
It should remove all values from list a, which are present in list b.
Для тех, кто не понимает казахский: нужно написать функцию от 2 аргументов a и b типа list, такую, что если в списке a нашелся элемент из списка b , то со списка a он и ему равные убираются. (в некст спойлере внизу пример аргументов и того, что от них получается)
Вроде как не сложно, хотя я потратил пол часа чтобы понять и написать на листочке алгоритм как оно все работает
И ещё так же, чтобы написать код.
В итоге с моим написанным алгоритмом пришлось для этой задачки создавать еще одну функцию delete(A, n) , которая выдает новый список C который равняется A без A итых = n. delete([2, 3, 3, 1], 3) = [2, 1]
Ну и собстна код
И вроде все идеально (хоть и код офк убогий, уверен какой нить хацкер за 2 если не за 1 строчку уложился бы, но я треню алгоритмы а не кодерство)
Запускаю, и рил показывает, что все найс
(но это онли 5 базовых тестов)
Спойлер:
На нажимаю Attemp (которая запускает еще миллиард разных рандомных тестов)
И найс, минус два часа жизни. Как видите, ошибки только с списками, которые причем содержат уже в самом результате None
что за рофл? у меня рил горит. Где я обосрался, есть ли тут проффешионал людишки? Спасибо
Спойлер:
zzzwebxxx сказал(а):↑Превращаешь в кортеж и делаешь diff между кортежами. ез
upd. вспомнил)
Нажмите, чтобы раскрыть...да я в курсе, что мой способ плохой, он самый нубский. Но я про то, почему у меня выдает не то именно с теми, в которых должно где-то каким-то образом выйти None.
Тем более не особо то и знаю, что это. я по лекциям Тимофея Хирьянова учусь
a = [1, 2, 3, 4, 5]
b = [1, 3, 5, 2, 1]
def kek(a, b):
for item in b:
if b in a:a[a.index(b)] = None
a = [item for item in a if item is not None]
zzzwebxxx сказал(а):↑Превращаешь в кортеж и делаешь diff между кортежами. ез
upd. вспомнил)
Нажмите, чтобы раскрыть...Ну множества сработают если нет повторов, тут именно списки
Graundefined сказал(а):↑a = [1, 2, 3, 4, 5]
b = [1, 3, 5, 2, 1]
def kek(a, b):
for item in b:
if b in a: a[a.index(b)] = None
a = [item for item in a if item is not None]
Ну множества сработают если нет повторов, тут именно списки
Нажмите, чтобы раскрыть...Если список превратить в множество, все повторы удаляться
EnjoyThePain сказал(а):↑Решаю на codewars.com задачки, вот спустя 10 решенных дошёл к этому: (собстна по факту я решил, но читайте)
Your goal in this kata is to implement a difference function, which subtracts one list from another and returns the result.
It should remove all values from list a, which are present in list b.
Для тех, кто не понимает казахский: нужно написать функцию от 2 аргументов a и b типа list, такую, что если в списке a нашелся элемент из списка b , то со списка a он и ему равные убираются. (в некст спойлере внизу пример аргументов и того, что от них получается)
Вроде как не сложно, хотя я потратил пол часа чтобы понять и написать на листочке алгоритм как оно все работает
И ещё так же, чтобы написать код.
В итоге с моим написанным алгоритмом пришлось для этой задачки создавать еще одну функцию delete(A, n) , которая выдает новый список C который равняется A без A итых = n. delete([2, 3, 3, 1], 3) = [2, 1]
Ну и собстна код
И вроде все идеально (хоть и код офк убогий, уверен какой нить хацкер за 2 если не за 1 строчку уложился бы, но я треню алгоритмы а не кодерство)
Запускаю, и рил показывает, что все найс
(но это онли 5 базовых тестов)
Спойлер:
На нажимаю Attemp (которая запускает еще миллиард разных рандомных тестов)
И найс, минус два часа жизни. Как видите, ошибки только с списками, которые причем содержат уже в самом результате None
что за рофл? у меня рил горит. Где я обосрался, есть ли тут проффешионал людишки? Спасибо
Спойлер:
Нажмите, чтобы раскрыть...кинь ссылку на задачу
EnjoyThePain сказал(а):↑Решаю на codewars.com задачки, вот спустя 10 решенных дошёл к этому: (собстна по факту я решил, но читайте)
Your goal in this kata is to implement a difference function, which subtracts one list from another and returns the result.
It should remove all values from list a, which are present in list b.
Для тех, кто не понимает казахский: нужно написать функцию от 2 аргументов a и b типа list, такую, что если в списке a нашелся элемент из списка b , то со списка a он и ему равные убираются. (в некст спойлере внизу пример аргументов и того, что от них получается)
Вроде как не сложно, хотя я потратил пол часа чтобы понять и написать на листочке алгоритм как оно все работает
И ещё так же, чтобы написать код.
В итоге с моим написанным алгоритмом пришлось для этой задачки создавать еще одну функцию delete(A, n) , которая выдает новый список C который равняется A без A итых = n. delete([2, 3, 3, 1], 3) = [2, 1]
Ну и собстна код
И вроде все идеально (хоть и код офк убогий, уверен какой нить хацкер за 2 если не за 1 строчку уложился бы, но я треню алгоритмы а не кодерство)
Запускаю, и рил показывает, что все найс
(но это онли 5 базовых тестов)
Спойлер:
На нажимаю Attemp (которая запускает еще миллиард разных рандомных тестов)
И найс, минус два часа жизни. Как видите, ошибки только с списками, которые причем содержат уже в самом результате None
что за рофл? у меня рил горит. Где я обосрался, есть ли тут проффешионал людишки? Спасибо
Спойлер:
Нажмите, чтобы раскрыть...чел у тебя там ошибка в коде, смени язык на нормальный
Mooneater сказал(а):↑Посмотрел твое решение. Это странно, что тесты не проходят: в списках в результатах откуда-то берется None, хотя есть проверка на него, и у меня на компьютере вроде все работает как надо
P.S. сет тут никак не поможет
Нажмите, чтобы раскрыть...Да, я тоже вот поэтому и создал тему. Вроде это вообще не возможно, только в моей функции 1-ой он используется и тут же убирается
Hy6o_Hy6 сказал(а):↑кинь ссылку на задачу
Нажмите, чтобы раскрыть...вот вроде
https://www.codewars.com/kata/523f5d21c841566fde000009/train/python/5eb45319c752ac0028ecfa5a
Mooneater сказал(а):↑P.S. сет тут никак не поможет
Нажмите, чтобы раскрыть...Если я правильно понял задачу, то поможет.
Спойлер: "тык"def remove_same_elements(a, b):
return list(set(a)-set(b))a = [1, 2, 3, 4, 5, 6, 7, 8]
b = [1, 3, 5, 7, 10]print(remove_same_elements(a,b))Не самое элегантное решение конечно, но всё же.
EnjoyThePain сказал(а):↑Да, я тоже вот поэтому и создал тему. Вроде это вообще не возможно, только в моей функции 1-ой он используется и тут же убирается
вот вроде
https://www.codewars.com/kata/523f5d21c841566fde000009/train/python/5eb45319c752ac0028ecfa5a
Нажмите, чтобы раскрыть...Добавь в array_diff перед циклами
x = a.copy()
замени делит на x = delete(x, j)
и конец на return x
Тема закрыта
-
ЗаголовокОтветов ПросмотровПоследнее сообщение
-
Сообщений:1
Просмотров:0
-
Сообщений:4
Просмотров:4
-
xxxDevil666xxx 17 Jun 2024 в 17:02Сообщений: 13 17 Jun 2024 в 17:02
Сообщений:13
Просмотров:16
-
Сообщений:4
Просмотров:6
-
Сообщений:16
Просмотров:22


