
Evgeniy
06.02.2017
23:21:31

Pavel
06.02.2017
23:21:33

Nikolay
06.02.2017
23:21:38
:D Cпс
ну, это вопрос собеседования на джуниора. Вкратце - в коде две проблемы
первая - рекурсивное дерево глубокое, второе - отсутствие tailrec в питоне

Google

Nikolay
06.02.2017
23:22:13
правильно на питоне фибоначчи писать генераторами
или циклом

Aragaer
06.02.2017
23:22:21
а хотя не, чо, нормально считает
но правда последовательность все-таки начинается с двух единиц, а не с нуля

53r63rn4r
06.02.2017
23:23:03
И как тогда правильно написать эту _штуку_

subject_89P13
06.02.2017
23:23:07
вот я как-то предпочитаю не пушить свой код в мастер, пока не покажу его как минимум 1-2 другим людям, выслушаю их мнение о том, что я тут натворил, исправлю/обдумаю замечания и не буду в полной уверенности, что если вдруг я слягу с насморком, то найдется кто-нибудь, кто сможет за меня этот код модифицировать без мата
Вопрос в том, как найти оптимальное количество людей, которые должны разбираться в модуле, чтобы заменить друг друга.

53r63rn4r
06.02.2017
23:23:24

Nikolay
06.02.2017
23:23:26

Aragaer
06.02.2017
23:23:44
>>> map(fibonacci, range(10))
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

Nikolay
06.02.2017
23:23:48
про генераторы в следующих лекциях

Evgeniy
06.02.2017
23:24:19

Aragaer
06.02.2017
23:24:34

Google

Rocket
06.02.2017
23:24:43
О, гениальная идея мне в голову сейчас пришла. Значит пора идти спать ?

Nikolay
06.02.2017
23:24:55

Stanislav
06.02.2017
23:25:18

Nikolay
06.02.2017
23:25:21
а в случае питона - то и вообще практически нигде

Aragaer
06.02.2017
23:25:31
так я не понял, в чем проблема-то?

Tema
06.02.2017
23:25:34
Кто какой редактор использует под mac ?

Nikolay
06.02.2017
23:25:45

Evgeniy
06.02.2017
23:25:51

Stanislav
06.02.2017
23:25:53
и это только начало

Nikolay
06.02.2017
23:25:56
я выше объяснил конкретно, какие ошибки

Aragaer
06.02.2017
23:26:11
ну он корректно все считает

Nikolay
06.02.2017
23:26:26
“все” он не считает корректно

53r63rn4r
06.02.2017
23:26:39
...Всё равно на кодварсе надо быстрее решить..

subject_89P13
06.02.2017
23:26:53

Stanislav
06.02.2017
23:26:54

Aragaer
06.02.2017
23:27:10
а, оно ругается, что не успевает посчитать?
мемоизацию прикрути 8)

Nikolay
06.02.2017
23:27:30

Google

Nikolay
06.02.2017
23:27:44
но в целом согласен, косяк есть, хоть и не супер критичный

53r63rn4r
06.02.2017
23:27:55

Rocket
06.02.2017
23:28:05

Nikolay
06.02.2017
23:28:09
не спасет мемоизация

Evgeniy
06.02.2017
23:28:20

Nikolay
06.02.2017
23:28:23
точнее, спасет, но не в питоне и не в этом коде

Aragaer
06.02.2017
23:28:29
http://stackoverflow.com/questions/1988804/what-is-memoization-and-how-can-i-use-it-in-python - вот смотри как раз второй ответ

53r63rn4r
06.02.2017
23:28:32
def mem_fib(n, _cache={}):
'''efficiently memoized recursive function, returns a Fibonacci number'''
if n in _cache:
return _cache[n]
elif n > 1:
return _cache.setdefault(n, mem_fib(n-1) + mem_fib(n-2))
return n
Да, это же нашел :(

Nikolay
06.02.2017
23:28:49

Nikolay
06.02.2017
23:29:01
правильный ответ - написать генератор
версия рекурсии с мемоизацией выпадет в стековерфлоу через некоторое время

Aragaer
06.02.2017
23:29:42
ну вообще да, быстро фибоначчи надо считать по формуле

Stanislav
06.02.2017
23:29:53

Tema
06.02.2017
23:29:55

53r63rn4r
06.02.2017
23:30:29

Nikolay
06.02.2017
23:30:34

Evgeniy
06.02.2017
23:30:36

Google

Nikolay
06.02.2017
23:30:42
то, что надо всем вместе над языком работать?

Pavel
06.02.2017
23:31:08

Tema
06.02.2017
23:31:13
:)

Nikolay
06.02.2017
23:31:23
человек пообещал вскрыть нарыв и показать, что пеп8 говно, комьюнити говно, а он один в белом пальто стоит красивый
на деле на пеп8 слился, а на втором вопросе тыкает в баги, которые мог бы сам пофиксить вместо подгорания пуканчика

Aragaer
06.02.2017
23:32:32
>>> fib(70)
190392490709135
еще раз - твоя реализация для 0 вернет 0
а должна возвращать 1

Admin
ERROR: S client not available

subject_89P13
06.02.2017
23:33:33

b0g3r
06.02.2017
23:33:53

Nikolay
06.02.2017
23:34:08
но проблему с рекурсией он не решает, насколько я понимаю

Aragaer
06.02.2017
23:34:26
>>> max(map(fib, range(70)))
117669030460994

b0g3r
06.02.2017
23:34:27
Вот, помнится такое

Aragaer
06.02.2017
23:34:46
и да, тут максимальное это 69-е, а не 70-е
проблему с рекурсией решает формула через фи
но кэширующий декоратор все равно спасает - по крайней мере рекурсия становится без ветвлений

Google

Nikolay
06.02.2017
23:36:33
сколько мне раз еще объяснить?

Aragaer
06.02.2017
23:37:07
без него рекурсия разрастается вширь

Stanislav
06.02.2017
23:37:12

Aragaer
06.02.2017
23:37:17
и число вызовов растет как квадрат от аргумента
с мемоизацией - линейно

Nikolay
06.02.2017
23:37:35

Aragaer
06.02.2017
23:37:39
а, даже не квадрат, экспонента

Nikolay
06.02.2017
23:37:53
подумай головой уже и не советуй человеку плохого

Aragaer
06.02.2017
23:37:55
как там таймит правильно делать?

Stanislav
06.02.2017
23:38:24

Nikolay
06.02.2017
23:38:46

Stanislav
06.02.2017
23:38:50
про пеп я не слился если ты сделал такой вывод то у тебя проблемы с логическими связями и выводами

Nikolay
06.02.2017
23:39:02

Stanislav
06.02.2017
23:39:28
ну гвиду например взяли в дропбокс на зп и закрывают глаза на его трату времени на аппрувы наркомании в новых пепах

Pavel
06.02.2017
23:39:50
как там таймит правильно делать?
timeit.timeit("код который будет выполнятся каждый раз", "код, который нужен для инициализации", number=сколько_раз_выполнять_код)

Nikolay
06.02.2017
23:39:58

Stanislav
06.02.2017
23:40:20
ну а у меня возможности оторваться от моей круглосуточной работы нет

Nikolay
06.02.2017
23:40:50

Aragaer
06.02.2017
23:40:57
мм.. да, я наконец сообразил, как сделать через цикл

Nikolay
06.02.2017
23:41:44
сорян