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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.02.2017, 20:04   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
:) Помню дали задачку, вывести ряд Фибоначи. Нарисовал рекурсию. Не понравилось. Видать не поняли.
Цитата:
Сообщение от Silence Посмотреть сообщение
ЗЫ. Помню дали задачку, вывести ряд Фибоначи. Нарисовал рекурсию. Не понравилось. Видать не поняли.
Рекурсия для Фибоначчи?
Без дополнительного кэширования полученных результатов?
И без дополнительных комментариев почему именно так?

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

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

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

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

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

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

Последний раз редактировалось Silence; 09.02.2017 в 21:43.
Старый 09.02.2017, 23:16   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от eugene egorov Посмотреть сообщение
А про глубину стека пусть постановщик ТЗ думает.....
)))))

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

Свое мнение не изменил.
Старый 09.02.2017, 23:35   #5  
Silence is offline
Silence
Участник
Аватар для Silence
 
287 / 27 (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
 
877 / 649 (23) +++++++
Регистрация: 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  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от 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
Участник
 
404 / 339 (12) ++++++
Регистрация: 15.06.2004
Адрес: москва
Цитата:
Сообщение от Silence Посмотреть сообщение
Задача стояла именно вывести ряд. Не до какого-то значения,не какое-то число, а именно ряд без каких либо ограничений. Их не было в условии задачи.
Так это задача программиста выбрать подходящий способ решения. Рассмотреть несколько возможных вариантов решений, оценить их плюсы и минусы и задать уточняющие вопросы. Постановщик может не знать об ограничениях, или умышленно умолчать, чтобы посмотреть, как человек будет выкручиваться при недостатке информации и нечетких требованиях.
За это сообщение автора поблагодарили: mazzy (2).
Старый 10.02.2017, 12:56   #9  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Задача была вывести ряд Фибоначчи. Человек справился. Но я бы тоже на их месте подумал, стоит ли брать к себе человека, решающего задачи путем рекурсии.

"Шурик, вы комсомолец? Это же не наш метод!" ©
__________________
// no comments
Старый 10.02.2017, 13:05   #10  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от dech Посмотреть сообщение
стоит ли брать к себе человека, решающего задачи путем рекурсии.
рекурсия сама по себе не плоха.

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

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

В идеале, конечно, лучше писать быстро, чисто, выразительно, с оптимальной сложностью, с видением всех подводных камней, но, я считаю, что в первом приближении задачу лучше решить хорошо, а потом уже заниматься оптимизацией.
За это сообщение автора поблагодарили: ta_and (3).
Старый 10.02.2017, 14:17   #12  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от 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  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от AP-1055D Посмотреть сообщение
задачу лучше решить хорошо
...и главный вопрос этой задачи на собеседовании - выяснить а что именно считает данный кандидат хорошим, выяснить его систему ценностей. )
Старый 10.02.2017, 15:28   #14  
Удвой Покуров is offline
Удвой Покуров
Участник
 
461 / 228 (8) ++++++
Регистрация: 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
 
877 / 649 (23) +++++++
Регистрация: 14.10.2004
Поэтому самый лучший способ заполучить нужную работу - запросить меньше денег, чем объявил работодатель.
Потому что все равно ты не догадаешься, что у работодателя в голове сидит золотое сечение

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

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

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

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

Прочь грусть, прочь уныние, прочь тоску... ))))
Старый 10.02.2017, 15:53   #18  
Удвой Покуров is offline
Удвой Покуров
Участник
 
461 / 228 (8) ++++++
Регистрация: 03.04.2011
Это свободная страна - пусть спрашивают что хотят, хоть дату смерти Пушкина (сегодня 180 лет, кстати, с этой печальной даты).
Если хотят взять светлую голову - стажера, то данная задача - прекрасный вариант. Как и вопрос "сколько заправок в Челябинске".
Есть ищут человека со знанием системы, я бы задавал несколько иные вопросы, исходя из собственного опыта.
Старый 10.02.2017, 15:56   #19  
Удвой Покуров is offline
Удвой Покуров
Участник
 
461 / 228 (8) ++++++
Регистрация: 03.04.2011
Цитата:
Сообщение от mazzy Посмотреть сообщение
Просто, если человек не знает как связан ряд Фибоначчи и золотое сечение...Это характеристика кандидата.
Я не думаю, что тот же EVGL знал что это такое, когда в Клумбе начинал программировать. И я не думаю, что это характеризует его как плохого разработчика или консультанта.
Старый 10.02.2017, 15:58   #20  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Прекрасный пример ИЛИ-ИЛИ логики. ))))
Кстати, тоже отличный маркер и характеристика кандидата.

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


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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:12.