@ru_python

Страница 2159 из 9768
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
И как тогда правильно написать эту _штуку_

Nikolay
06.02.2017
23:23:26
и зачем тебе нужен такой развернутый пример. ты никогда не ловил IndexError/KeyError за карьеру чтоли ? для тебя это чтото новое ?
ловил, но в чем твой пойнт? тебе не нравится, что питон тебя не тыкает носом, где именно KeyError?

Генераторами?
напиши циклом сначала

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
Вопрос в том, как найти оптимальное количество людей, которые должны разбираться в модуле, чтобы заменить друг друга.
Это и называется bus factor - каково минимальное число людей должно попасть под автобус, чтобы никто не знал, как работает какой-нибудь кусок кода

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

Nikolay
06.02.2017
23:24:55
Правильно где угодно писать по формуле)
правильно где попало не использовать рекурсию)

Stanislav
06.02.2017
23:25:18
ловил, но в чем твой пойнт? тебе не нравится, что питон тебя не тыкает носом, где именно KeyError?
мне не не нравится. я считаю это реальным косяком который нужно убирать

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
Кто какой редактор использует под mac ?
Какая разница?) Что удобно, то и используй.

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
но в целом согласен, косяк есть, хоть и не супер критичный

Rocket
06.02.2017
23:28:05
сообщество считает что так и надо, кодеркам надо ссать в лицо и заставлять рефакторить любое двойное [][] в отдельные строки
А еще можно реализовать такой dict, который позволяет доступаться до элементов через свойства.

Nikolay
06.02.2017
23:28:09
мемоизацию прикрути 8)
так, мальчик, ты либо дело говори, либо не влезай :)

не спасет мемоизация

Evgeniy
06.02.2017
23:28:20
...Всё равно на кодварсе надо быстрее решить..
Возьми возведение матрицы в степень, выведи из неё формулы для 2n из n, и считай быстрым удвоением. Ну или нагугли если в алгебру лень

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
но в целом согласен, косяк есть, хоть и не супер критичный
это только цветочки просто https://bugs.python.org/issue18370 https://bugs.python.org/issue16806 https://bugs.python.org/issue18374

Tema
06.02.2017
23:29:55
Какая разница?) Что удобно, то и используй.
Мне - atom удобно, но я так не нашёл там плагинов для дебага и рефакторинга. Вот и спрашиваю... может все чём-то крутым пользуются, а я в танке...

53r63rn4r
06.02.2017
23:30:29


Nikolay
06.02.2017
23:30:34
это только цветочки просто https://bugs.python.org/issue18370 https://bugs.python.org/issue16806 https://bugs.python.org/issue18374
хорошо, окей. Ну, это все поправимо. А что ты донести пытаешься?

Google
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
Мне - atom удобно, но я так не нашёл там плагинов для дебага и рефакторинга. Вот и спрашиваю... может все чём-то крутым пользуются, а я в танке...
Чем меньше инструментов и чем они проще, тем лучше. Попробуй саблиму. Там удобнее все настроить. Еще есть пайчарм, но он тебе пока не нужен, судя по вопросам:)

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
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
на деле на пеп8 слился, а на втором вопросе тыкает в баги, которые мог бы сам пофиксить вместо подгорания пуканчика
кто меня будет обеспечивать пока я их буду фиксить ? комьюнити то всёравно оно привыкло вытирать монитор от плевков из рантайма

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=сколько_раз_выполнять_код)

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
мм.. да, я наконец сообразил, как сделать через цикл
вы оба только что не прошли собеседование на джуниора

сорян

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