AXForum  
Вернуться   AXForum > Прочие обсуждения > Курилка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.02.2017, 20:04   #1  
online
mazzy
Administrator
Аватар для mazzy
Most Valuable Professional
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
28,614 / 3400 (171) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
:) Помню дали задачку, вывести ряд Фибоначи. Нарисовал рекурсию. Не понравилось. Видать не поняли.
Цитата:
Сообщение от Silence Посмотреть сообщение
ЗЫ. Помню дали задачку, вывести ряд Фибоначи. Нарисовал рекурсию. Не понравилось. Видать не поняли.
Рекурсия для Фибоначчи?
Без дополнительного кэширования полученных результатов?
И без дополнительных комментариев почему именно так?

мне бы тоже не понравилось.
Старый 09.02.2017, 20:58   #2  
eugene egorov is offline
eugene egorov
Участник
Аватар для eugene egorov
 
267 / 91 (4) ++++
Регистрация: 05.06.2002
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
Рекурсия для Фибоначчи?
Без дополнительного кэширования полученных результатов?
И без дополнительных комментариев почему именно так?

мне бы тоже не понравилось.
А по моему логично....в ТЗ именно так сказано - "каждое последующее число равно сумме двух предыдущих чисел"....и почему не рекурсия А про глубину стека пусть постановщик ТЗ думает.....
__________________
любитель портвейна и снов с прокисшей капустой в усах
За это сообщение автора поблагодарили: Silence (1).
Старый 09.02.2017, 21:06   #3  
Silence is offline
Silence
Участник
Аватар для Silence
 
276 / 25 (1) +++
Регистрация: 29.09.2004
Адрес: г. Москва, Зеленоград
Цитата:
Сообщение от mazzy Посмотреть сообщение
Рекурсия для Фибоначчи?
Без дополнительного кэширования полученных результатов?
И без дополнительных комментариев почему именно так?

мне бы тоже не понравилось.
Задача стояла именно вывести ряд. Не до какого-то значения,не какое-то число, а именно ряд без каких либо ограничений. Их не было в условии задачи.

Кеширование конечно хорошо, но бесполезно. Ибо ряд бесконечен и программа все равно упадет из-за переполнения. Или Вы предлагаете после достижения результата в N-1 знаков, где N = кол-во не влезающее в память, разбивать результат на части и обсчитывать их отдельно, после чего выводить потоком на экран? (Точнее на бумажку, так как предлагалось писать код на листе А4) А потом так же поступать и с отдельными частями результата ибо и они переполнятся. А это рекурсия.

Цитата:
Сообщение от eugene egorov Посмотреть сообщение
А по моему логично....в ТЗ именно так сказано - "каждое последующее число равно сумме двух предыдущих чисел"....и почему не рекурсия А про глубину стека пусть постановщик ТЗ думает.....
Вот-вот. Дали задачу которая в любом случае приведет к ошибке и удалились.
Единственный логичный выход, по моему, это сделать так же. Удалиться. )

Цитата:
Сообщение от mazzy Посмотреть сообщение
И без дополнительных комментариев почему именно так?
Видится мне код из трех строчек включая декларативную часть с тремя десятками комментариев...
__________________
Бывает, что человек молчит, когда ничего не знает о данном предмете, но чаще – когда знает о нем все. (Джордж Бернард Шоу)

Последний раз редактировалось Silence; 09.02.2017 в 21:43.
Старый 09.02.2017, 23:16   #4  
online
mazzy
Administrator
Аватар для mazzy
Most Valuable Professional
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
28,614 / 3400 (171) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Цитата:
Сообщение от eugene egorov Посмотреть сообщение
А про глубину стека пусть постановщик ТЗ думает.....
)))))

Цитата:
Сообщение от Silence Посмотреть сообщение
Задача стояла именно вывести ряд. Не до какого-то значения,не какое-то число, а именно ряд без каких либо ограничений. Их не было в условии задачи.
Я отлично прочитал и понял первоначальную формулировку.
Спасибо за разъяснения.

Свое мнение не изменил.
Старый 09.02.2017, 23:35   #5  
Silence is offline
Silence
Участник
Аватар для Silence
 
276 / 25 (1) +++
Регистрация: 29.09.2004
Адрес: г. Москва, Зеленоград
Цитата:
Сообщение от mazzy Посмотреть сообщение
Свое мнение не изменил.
Т.е. Вы считаете, что для бесконечного цикла нужно писать нечто вроде:
X++:
while (true)
???

Или Вы думаете, нужно было объяснить, что задача поставлена не верно? Сомневаюсь, что ждали именно этого.

ЗЫ. Наверное это не то место для таких дискуссий
__________________
Бывает, что человек молчит, когда ничего не знает о данном предмете, но чаще – когда знает о нем все. (Джордж Бернард Шоу)
Старый 10.02.2017, 00:14   #6  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
698 / 523 (19) +++++++
Регистрация: 14.10.2004
Прочитал, что такое "Фибоначчи" в википедии и написал такой джоб. В аксапте не проверял
Прерывается через CTRL + BREAK/
Без рекурсии.
X++:
x = 0;
y = 1;
info(int2str(x));
info(int2str(y));
while (true)
{
    info(int2str(x + y));
    [x, y] = [y, x + y];
}
Старый 10.02.2017, 00:50   #7  
online
mazzy
Administrator
Аватар для mazzy
Most Valuable Professional
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
28,614 / 3400 (171) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Цитата:
Сообщение от Silence Посмотреть сообщение
Т.е. Вы считаете, что для бесконечного цикла нужно писать нечто вроде:
Я знаю, что эта задача является классической.
Разбирается во всевозможных статьях. Начиная от школьных обучающих курсов до многотомника Кнута.

Сходу можно привести 4-5 решений. Где-то видал статью с 15 способами. Один из них, где время расчета меньше O(n).

рекурсию привести конечно можно.
но оговорив область применимости, влияние повторных расчетов на производительность и прочие недостатки.

while(true)...
му-ха-ха-ха!!!! хороший панк-юмор

Цитата:
Сообщение от Ace of Database Посмотреть сообщение
и написал такой джоб
да, это один из способов решения.
в памяти хранятся только два последних значения, повторных вычислений нет, время выполнения линейное.

момент, который не оговорен - целочисленные значения.
для такого случая было бы хорошо оговорить область применимости )))
в обычных системах, скорее всего, выполнение прервется по переполнению раньше, чем пользователь нажмет CTRL + BREAK/
в аксапте приведенный алгоритм, скорее всего, будет просто выдавать неправильные (отрицательные) значения начиная с некоторого числа, причем достаточно близкого к началу последовательности.

если программист не оговорил хотя бы в комментарии область применимости... и не предупредил, что она будет настолько маленькой...

с точки зрения аксапты, я бы обратил внимание, что автор использует int2str вместо strfmt. Это была бы тема для дополнительных вопросов.

свое мнение не изменил - мне бы тоже не понравилось.

Последний раз редактировалось mazzy; 10.02.2017 в 01:05.
Старый 10.02.2017, 12:06   #8  
AlexeyS is offline
AlexeyS
Участник
 
324 / 222 (8) ++++++
Регистрация: 15.06.2004
Адрес: москва
Цитата:
Сообщение от Silence Посмотреть сообщение
Задача стояла именно вывести ряд. Не до какого-то значения,не какое-то число, а именно ряд без каких либо ограничений. Их не было в условии задачи.
Так это задача программиста выбрать подходящий способ решения. Рассмотреть несколько возможных вариантов решений, оценить их плюсы и минусы и задать уточняющие вопросы. Постановщик может не знать об ограничениях, или умышленно умолчать, чтобы посмотреть, как человек будет выкручиваться при недостатке информации и нечетких требованиях.
За это сообщение автора поблагодарили: mazzy (2).
Старый 10.02.2017, 12:56   #9  
dech is offline
dech
Участник
Аватар для dech
 
438 / 189 (7) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Задача была вывести ряд Фибоначчи. Человек справился. Но я бы тоже на их месте подумал, стоит ли брать к себе человека, решающего задачи путем рекурсии.

"Шурик, вы комсомолец? Это же не наш метод!" ©
__________________
// no comments
Старый 10.02.2017, 13:05   #10  
online
mazzy
Administrator
Аватар для mazzy
Most Valuable Professional
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
28,614 / 3400 (171) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Цитата:
Сообщение от dech Посмотреть сообщение
стоит ли брать к себе человека, решающего задачи путем рекурсии.
рекурсия сама по себе не плоха.

а вот решающего задачи путем с экспоненциальным ростом времени выполнения и потреблением памяти. причем этот человек, не комментирует почему выбрал этот способ... это да.
За это сообщение автора поблагодарили: Diman (1).
Старый 10.02.2017, 14:07   #11  
AP-1055D is offline
AP-1055D
Участник
 
325 / 78 (3) ++++
Регистрация: 01.06.2011
Замечу, что решение с помощью рекурсии является точной имплементацией определения чисел Фибоначчи.

На одном собеседовании я показывал ещё два способа, с помощью которых можно решить эту задачу, хотя начал с рекурсии.

В идеале, конечно, лучше писать быстро, чисто, выразительно, с оптимальной сложностью, с видением всех подводных камней, но, я считаю, что в первом приближении задачу лучше решить хорошо, а потом уже заниматься оптимизацией.
За это сообщение автора поблагодарили: ta_and (3).
Старый 10.02.2017, 14:17   #12  
online
mazzy
Administrator
Аватар для mazzy
Most Valuable Professional
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
28,614 / 3400 (171) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Цитата:
Сообщение от AP-1055D Посмотреть сообщение
Замечу, что решение с помощью рекурсии является точной имплементацией определения чисел Фибоначчи.
конечно же нет.
числа фибоначчи определяются через золотое сечение. именно этим они и интересны.
рекуррентная последовательность - это следствие из определения.

кстати, именно возврат к исходному определению через золотое сечение и позволяет перейти от суммирования последовательности к умножению матриц достигнуть производительности < O(n)


https://ru.wikipedia.org/wiki/%D0%A7...87%D1%87%D0%B8

Последний раз редактировалось mazzy; 10.02.2017 в 14:24.
Старый 10.02.2017, 14:21   #13  
online
mazzy
Administrator
Аватар для mazzy
Most Valuable Professional
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
28,614 / 3400 (171) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Цитата:
Сообщение от AP-1055D Посмотреть сообщение
задачу лучше решить хорошо
...и главный вопрос этой задачи на собеседовании - выяснить а что именно считает данный кандидат хорошим, выяснить его систему ценностей. )
Старый 10.02.2017, 15:28   #14  
Удвой Покуров is offline
Удвой Покуров
Участник
 
386 / 160 (6) ++++++
Регистрация: 03.04.2011
Цитата:
Сообщение от mazzy Посмотреть сообщение
...и главный вопрос этой задачи на собеседовании - выяснить а что именно считает данный кандидат хорошим, выяснить его систему ценностей. )
...и самый главный - как решение этой задачи поможет ему в Аксапте

Я, честно, стал опасаться кудесников, которые могут решить подобные задачи, но не знают основных паттернов в Dax - FormLetter'a там или ничего не слышали хорошего про SettleNow.

А еще лучше - по бизнесу задать вопросы. Тогда понятно, кто это - кодер (поставь задачу - я решу, если хорошо разжевать) или Программист (сначала пойму задачу, изучу настройки, часть так / часть из кода, пойму что от меня хотят, как это работает в другом модуле, попробую переубедить или поискать другой воркэраунд или запрограммировать малой кровью).
Как можно заметить, второй - это Программист, которому лень быть консультантом. Т.е. мы получаем 2-в-1. Даже 3 в 1, т.к. отсутствует процесс коммуникации и тестирование легче. Подобные люди стоят хоть и подороже, но в разы эффективнее.
Старый 10.02.2017, 15:40   #15  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
698 / 523 (19) +++++++
Регистрация: 14.10.2004
Поэтому самый лучший способ заполучить нужную работу - запросить меньше денег, чем объявил работодатель.
Потому что все равно ты не догадаешься, что у работодателя в голове сидит золотое сечение

Последний раз редактировалось Ace of Database; 10.02.2017 в 15:43.
За это сообщение автора поблагодарили: AlexSD (3).
Старый 10.02.2017, 15:42   #16  
online
mazzy
Administrator
Аватар для mazzy
Most Valuable Professional
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
28,614 / 3400 (171) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Цитата:
Сообщение от Удвой Покуров Посмотреть сообщение
...и самый главный - как решение этой задачи поможет ему в Аксапте
а почему решение этой задачи должно помогать ему в Аксапте?

Цитата:
Сообщение от Удвой Покуров Посмотреть сообщение
Я, честно, стал опасаться кудесников, которые могут решить подобные задачи, но не знают основных паттернов в Dax - FormLetter'a там или ничего не слышали хорошего про SettleNow.
а почему вы считаете, что спрашивают подобные задачи и не спрашивают паттерны?
Старый 10.02.2017, 15:49   #17  
online
mazzy
Administrator
Аватар для mazzy
Most Valuable Professional
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
28,614 / 3400 (171) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Цитата:
Сообщение от Ace of Database Посмотреть сообщение
Потому что все равно ты не догадаешься, что у него в голове сидит золотое сечение
Му-ха-ха-ха!
Панкуете, ребяты...

Это все равно как не знать героев мультфильма Ну, погоди. Или Тома и Джерри.
Конечно, возможно, что не знают. Ничего плохого в этом нет.

Просто, если человек не знает как связан ряд Фибоначчи и золотое сечение...
Это характеристика кандидата.

Прочь грусть, прочь уныние, прочь тоску... ))))
Старый 10.02.2017, 15:53   #18  
Удвой Покуров is offline
Удвой Покуров
Участник
 
386 / 160 (6) ++++++
Регистрация: 03.04.2011
Это свободная страна - пусть спрашивают что хотят, хоть дату смерти Пушкина (сегодня 180 лет, кстати, с этой печальной даты).
Если хотят взять светлую голову - стажера, то данная задача - прекрасный вариант. Как и вопрос "сколько заправок в Челябинске".
Есть ищут человека со знанием системы, я бы задавал несколько иные вопросы, исходя из собственного опыта.
Старый 10.02.2017, 15:56   #19  
Удвой Покуров is offline
Удвой Покуров
Участник
 
386 / 160 (6) ++++++
Регистрация: 03.04.2011
Цитата:
Сообщение от mazzy Посмотреть сообщение
Просто, если человек не знает как связан ряд Фибоначчи и золотое сечение...Это характеристика кандидата.
Я не думаю, что тот же EVGL знал что это такое, когда в Клумбе начинал программировать. И я не думаю, что это характеризует его как плохого разработчика или консультанта.
Старый 10.02.2017, 15:58   #20  
online
mazzy
Administrator
Аватар для mazzy
Most Valuable Professional
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
28,614 / 3400 (171) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Прекрасный пример ИЛИ-ИЛИ логики. ))))
Кстати, тоже отличный маркер и характеристика кандидата.

На самом деле, в свободной стране никто не запрещает спросить И эту задачи, И задать иные вопросы.
 

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 14:48.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.