@ru_python

Страница 538 из 9768
Sharkus
18.04.2016
19:34:31
Декартовы координаты, вся фигня.

Rick
18.04.2016
19:35:11
ну я

ну

Sharkus
18.04.2016
19:35:15
x - горизонталь, y - вертикаль. Или наоборот, если угодно. Но они принадлежат только _одному_ из направлений. И пофиг, которое из них длиннее.

Google
Rick
18.04.2016
19:35:19
ок

Cykooz
18.04.2016
19:35:29
Вот более полное решение (надо сначала отсортировать габариты басейна что бы в n была длина короткой стороны): n, m = min(n, m), max(n, m) print min(x, y, n - x, m - y)

Sharkus
18.04.2016
19:35:45
Хватит подсовывать min человеку.

Потом докатится до itertools.permutations, вообще не понимая, что там внутри.

Sergey
18.04.2016
19:36:08
list(map(lambda i, val: val**2, enumerate(range(10000)))) Не работает. Передает только 1 аргумент в lambda

Cykooz
18.04.2016
19:36:16
Ну считайте это алгоритмом - пускай дальше min и max заменит на if...else

Pavel
18.04.2016
19:36:17
надо собрать четыре расстояния в массив и отортировать пузырьком.

Rick
18.04.2016
19:38:30
n, m = min(n, m), max(n, m) print min(x, y, n - x, m - y) я сделал так же (но 49 строками )

Pavel
18.04.2016
19:38:31
надо собрать четыре расстояния в массив и отортировать пузырьком.
ну или не сортировтаь, а решить задачу "найти минимум в массиве".

Kolyann
18.04.2016
19:38:45
Потом докатится до itertools.permutations, вообще не понимая, что там внутри.
а потом попытается понять, а ему в лицо бином ньютона

Sharkus
18.04.2016
19:38:51
n, m = min(n, m), max(n, m) print min(x, y, n - x, m - y) я сделал так же (но 49 строками )
Если бы ты сделал так же, то у тебя бы оно работало на всех вариантах :)

Rick
18.04.2016
19:38:53
но моя программа прямая

линейная

Google
Rick
18.04.2016
19:39:07
в этом вся беда

Kolyann
18.04.2016
19:39:40
Так а что тебе нужно?

Решить это последовательным алгоритмом?

Rick
18.04.2016
19:40:25
ну или указать , что в моем не так

если там вообще хоть что-то так

Kolyann
18.04.2016
19:40:51
if abs(M-X) > abs(N-Y): return abs(M-X): else: return abs(N-Y)

если нужно без мин, но можно юзать абс

Rick
18.04.2016
19:41:11
абс это модуль?

Artem
18.04.2016
19:41:26
да

Rick
18.04.2016
19:41:30
математический модуль

Kolyann
18.04.2016
19:41:34
да

Rick
18.04.2016
19:41:35
зачем он?

там никогда не будет отрицательного числа

Kolyann
18.04.2016
19:42:04
а не, с модулем так не прокатит

Sharkus
18.04.2016
19:42:17
Разверни n, m = min(n, m), max(n, m) в if n > m: n, m = m, n да и всё. И далее по тексту.

Kolyann
18.04.2016
19:42:17
в общем смотри, тебе нужно выбрать самое маленькое из всех вариантов

Kolyann
18.04.2016
19:42:27
M - X N - Y X Y

Sharkus
18.04.2016
19:42:35
Задрали вы с сортировками :)

Google
Kolyann
18.04.2016
19:42:49
можно сравнивать их попарно по очереди

Sharkus
18.04.2016
19:42:53
Обычный, блин, поиск максимума-минимума.

Rick
18.04.2016
19:42:54
49 строк ерунды

а хотя не

Cykooz
18.04.2016
19:43:31
Задрали вы с сортировками :)
Ну что делать, мы тут все матёрые программеры с опытом >10 лет - мы терперь не можем лапшу из if..else :)

Rick
18.04.2016
19:43:39
нужно же еще учитывать что больше n или m

Sharkus
18.04.2016
19:43:48
Разверни n, m = min(n, m), max(n, m) в if n > m: n, m = m, n да и всё. И далее по тексту.

Pavel
18.04.2016
19:43:54
если там вообще хоть что-то так
для поиска минимума вчетырёх перменных нужно три ифа (сравить 1 и 2, 3 и 4, 1-2 и 3-4), а у тебя их 15.

Sharkus
18.04.2016
19:43:55
Вот тебе и весь учёт.

Rick
18.04.2016
19:44:35
n, m = m, n что дает эта строка?

Sharkus
18.04.2016
19:44:38
Можно даже делать по-паскалевски, с третьей переменной для обмена.

Sharkus
18.04.2016
19:45:02
Операция обмена значений в одну строку. Даже не пробуй так в паскале :)

Rick
18.04.2016
19:45:38
а, понял, псиб

Sharkus
18.04.2016
19:46:16
Потом, когда у тебя в N будет гарантированно наибольшее, или наименьшее - что там тебе нужно в задании - уже спокойно можно сравнить x, y, n-x, m-y

Rick
18.04.2016
19:46:42
да, я уже дошел до этого

Sharkus
18.04.2016
19:48:01
И в конечном итоге на одних ифах получишь что-то типа: min_val = x if y < min_val: min_val = y if (n - x) < min_val: min_val = n - x if (m -y ) < min_val: min_val = m - y print(min_val)

Sergey
18.04.2016
19:48:31
import timeit тебе в помощь. Померь и расскажи.
Проверил вот такой код: with_map = 'list(map(lambda i: i**2, range(10000)))' with_forin = '[i**2 for i in range(10000)]' Результаты: 4.850182843001676 3.9560614579968387 Вывод: надо меньше вы*бываться:)

Google
Cykooz
18.04.2016
19:50:22
Если там ещё внутри lambda заюзать setattr, то результат будет ещё плачевнее

Sharkus
18.04.2016
19:50:36
Я ВЕРИЛ В ЛЯМБДУ!
БОЛЬШЕ ВЫЗОВОВ БОГУ ВЫЗОВОВ.

Sergey
18.04.2016
19:50:40
Я ВЕРИЛ В ЛЯМБДУ!
Я если честно тоже до последнего думал что вариант с map быстрее будет:)

Sharkus
18.04.2016
19:51:16
Ехал вызов через вызов А тут хренакс - и фор быстрее.

trump ? trump ? hillary
18.04.2016
19:52:44
Я ВЕРИЛ В ЛЯМБДУ!
ЭТО ВСЕ ПТОМУ ЧТО ОНИ ФАЛЬШИВЫЕ

Admin
ERROR: S client not available

trump ? trump ? hillary
18.04.2016
19:55:11
partial application??????

Cykooz
18.04.2016
19:56:34
Уже была в интернетах заметка что list comprehension с if внутри стабильно бысрее map + filter, но просто map иногда обгоняет простой list comprehension.

Sergey
18.04.2016
19:57:42
with_map = 'list(map(lambda i: i**2, range(10000)))' with_forin = 'for i in range(10000): i **= 2' -- 0.46259754900529515 0.3656476830074098 Вывод: list comprehension практически не влияет на результат

Cykooz
18.04.2016
19:58:57
Хм, смущает то что в первом варианте формируется в памяти результат в виде списка, а во втором - нет.

Sergey
18.04.2016
19:59:24
Т.е. вариант с list comprehension более честный.

Cykooz
18.04.2016
20:00:28
Надо наверное решать исходную задачу - есть список объектов, надо в цикле присвоить полю value каждого объекта какое то значение.

Sergey
18.04.2016
20:01:36
class Obj: value = 0; objinst = Obj(); list(map(lambda i: setattr(objinst, \'value\', i**2), range(10000))) -- free variable 'Obj' referenced before assignment in enclosing scope Что я сделал не так?

Cykooz
18.04.2016
20:12:24
Хм, сложно сказать, я не мастер писать однострочники на питоне :)

Google
Cykooz
18.04.2016
20:13:09
Наверное оно решило, что objinst = Obj() находится внутри определения класса

Roman
18.04.2016
20:15:24
У map перед list comprehension есть пара плюсов

Есть ленивый imap

Pavel
18.04.2016
20:15:37
class Obj: value = 0; objinst = Obj(); list(map(lambda i: setattr(objinst, \'value\', i**2), range(10000))) -- free variable 'Obj' referenced before assignment in enclosing scope Что я сделал не так?
зачем писать код в одну строку, если в timeit можно скормить многострочную строку в трёх кавычках?

Roman
18.04.2016
20:16:06
И map - удобный интерфейс ко всякой параллельной шняге

Sergey
18.04.2016
20:18:40
map: class Obj: value = 0 objinst = Obj() list(map(lambda i: setattr(objinst, \'value\', i ** 2), range(10000))) forin: class Obj: value = 0 objinst = Obj() for i in range(10000): objinst.value = i ** 2 result: 67.91241029300727 46.80860149599903

Cykooz
18.04.2016
20:18:40
Есть ленивый imap
Это в какой версии питона? map сам по себе возвращает "ленивый" итератор, и пока по нему не проитерироваться ничего делаться не будет. Для list comprehensions тоже есть ленивый вариант - надо просто [] заменить на ()

В общем map в данной задаче сразу был неуместен, т.к. он в паре с list() генерирует ненужный список и тратит на это время.

Cykooz
18.04.2016
20:23:32
Можно скопировать текст из чата и запилить статейку в блоге :)

Artem
18.04.2016
20:24:22
Good news, everyone! Your bot can win a grant of $25K or more this year. Pavel Durov will be giving away 1 million dollars to bot developers in 2016. Check this post for details: https://telegram.org/blog/botprize

чат, давайте вместе сообразим что-нибудь, грант поделим пропорционально вкладу

Pavel
18.04.2016
20:25:49
Можно скопировать текст из чата и запилить статейку в блоге :)
кто-нибудь когда-нибудь парился на тему того, под какой лицензией выкладываются сообщения в чате? ?

Sharkus
18.04.2016
20:26:27
Public Domain?

Rick
18.04.2016
20:40:16
А кто выбирает полезность бота? И в чем она заключается?

Artem
18.04.2016
20:44:10
Длится весь год или пока не кончится бюджет. Полезность выбирает команда телеграма на свой субъективный взгляд.

ultranoise ?
18.04.2016
20:45:41
хорошие там топики

Страница 538 из 9768