Задача про Буратино и яблоки
От: Handie  
Дата: 22.06.12 07:05
Оценка: 12 (3) +1 :))) :))) :))) :)
Для пятницы, есть очень интересная задача, которую задают кадидатам на собеседованиях. Цитирую

сам любил задавать под конец собеседования тупые задачки типа "Буратино дали 5 яблок, потом 2 забрали, сколько яблок осталось у Буратино", но сразу предупреждал что задачки программерско-кодерские, и решение надо искать именно с точки зрения программерской.


Задачка оказалась совсем не простой. Главное в задаче что? Правильно — выбрать язык программирования и применить паттерны, показать так сказать класс программирования. Тут есть несколько походов.

1) Объектно ориентированный. Во первых надо создать класс Apple и переопределить оператор складывания яблок. Но ведь современные проги создаются по идеологии MVC а Apple это Model. Надо еще View — это будет класс AppleInspector и контроллер AppleAccountingBuratinoManager. Тут мы применили и объектно ориентированный дизайн и паттерны программирования. Не раскрыта тема метапрограммирования.

2) Метапрограммирование. В предыдущем случае мы написали класс Apple, но что будет если заказчику понадобятся груши? Правильно, класс Apple надо переименовать в класс AccountableAsset и сделать щаблоном. Во вторых, надо сделать инстанциацию количества ассетов на этапе компилляции, это на C++ делается через частичную специализацию когда у Буратино было 0 яблок, дали 5 и забрали 2. Частичная специализация шаблона даст нам частное решение на этапе компилляции. Общее решение останется в рантайме, но что делать, кто сказал что будет легко.

3) Функциональный подход. Императивные языки — вчерашний день. Компилятор сам должен вывести сколько у Буратино яблок. Мы должны задать только начальное состояние, представив подсчет яблок как совокупность последовательных состояний вычислительного процесса. Это же конечный автомат! Каждое добавление яблок изменят внутреннее состояние Буратино, каждый отъем яблок тоже сказывается на нем, причем отрицательно. Особенно полезен функциональный подход в связи с возможностью использования массового парралелизма, что позволит загрузить многопроцессорную систему.

Дальнейшие изыскания в объектно ориентированном дизайне показали — что буратино это контроллер! Тогда становится все ясно — яблоко это модель, Буратино это контроллер. Но контроллером яблок (в генерализованном виде AccountableAsset) может являться не только Буратино но и Бармалей. Тогда Буратино надо тоже генерализовать в виде ControllingActor. Ну осталось генерализовать View и у нас получается супергибкая модель, не не только Буратино может управлять владением яблок, но и Бармалей может владеть кокосами. Это же ахрененная гибкость получается, мы создали Univerasal Asset Management System. Это же практически архитектура логистического приложения!

Осталось только решить вопрос с финансированием. На месте кандидата я бы поинтересовался, готова ли контора оплатить дальнейшие изыскания в области управления ассетами. Вот, казалась бы простая задачка, а какая глубина за ней кроется!
Re: Задача про Буратино и яблоки
От: jazzer Россия Skype: enerjazzer
Дата: 22.06.12 07:21
Оценка:
Здравствуйте, Handie, Вы писали:

H>Для пятницы, есть очень интересная задача, которую задают кадидатам на собеседованиях. Цитирую


H>

H>сам любил задавать под конец собеседования тупые задачки типа "Буратино дали 5 яблок, потом 2 забрали, сколько яблок осталось у Буратино", но сразу предупреждал что задачки программерско-кодерские, и решение надо искать именно с точки зрения программерской.


H>Задачка оказалась совсем не простой.


Да ладно. Надо установить 1С, если русская контора, или SAP/R3, если нерусская, а дальше там все есть, с проводками и откатами.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: Задача про Буратино и яблоки
От: russian_bear  
Дата: 22.06.12 07:29
Оценка:
H>Это же ахрененная гибкость получается, мы создали Univerasal Asset Management System. Это же практически архитектура логистического приложения!

Я бы человека не брал: исходную задачу не решил, вместо нее создал другую, которую решить легко не может и не исследовав рынок просит финансирование.
Re: Задача про Буратино и яблоки
От: Pavel_Agurov Россия  
Дата: 22.06.12 07:29
Оценка: 23 (6) +5 :))
H>

H>сам любил задавать под конец собеседования тупые задачки типа "Буратино дали 5 яблок, потом 2 забрали, сколько яблок осталось у Буратино", но сразу предупреждал что задачки программерско-кодерские, и решение надо искать именно с точки зрения программерской.


Старая шутка. Правильный ответ — не знаю сколько, т.к. не понятно сколько их у него было. И мораль шутки — инициализируйте переменные перед их использованием.
Re[2]: Задача про Буратино и яблоки
От: Handie  
Дата: 22.06.12 07:34
Оценка: 1 (1)
P_A>Старая шутка. Правильный ответ — не знаю сколько, т.к. не понятно сколько их у него было. И мораль шутки — инициализируйте переменные перед их использованием.

Вы ищете причины, а надо искать решения. Объяснить почему задача не может быть решена — исключительно неправильный подход. Надо помочь заказчику нафти взаимовыгодное решение, улучшить бизнес процессы на предприятии. В идеале — надо убедить заказчика что старая система управления ассетами неадекватна и надо заменить на новую (предложив откат 50%). Нам нужно не решение частной задачи, а система которая будет работать на получение прибыли
Re[2]: Задача про Буратино и яблоки
От: Handie  
Дата: 22.06.12 07:40
Оценка:
_>Я бы человека не брал: исходную задачу не решил, вместо нее создал другую, которую решить легко не может и не исследовав рынок просит финансирование.

Блин, совсем люди не понимают пятничный троллинг. Это была пародия на многие реальные проекты, где действительно создаются классы типа AccountableAsset и ControllingActor и где метапрограммирование вызывает синдром Александреску головного мозга.
Re[2]: Задача про Буратино и яблоки
От: Handie  
Дата: 22.06.12 07:49
Оценка: :)
P_A>Старая шутка. Правильный ответ — не знаю сколько, т.к. не понятно сколько их у него было. И мораль шутки — инициализируйте переменные перед их использованием.

Модное решение на node.js

C:\>node
> var apples
undefined
> apples += 5
NaN
> apples -= 2
NaN

Не знаю сколько — неправильный ответ. Правильный ответ — Not a Number!
Re: Задача про Буратино и яблоки
От: Nikе Россия  
Дата: 22.06.12 08:13
Оценка:
Здравствуйте, Handie, Вы писали:

H>

H>сам любил задавать под конец собеседования тупые задачки типа "Буратино дали 5 яблок, потом 2 забрали, сколько яблок осталось у Буратино", но сразу предупреждал что задачки программерско-кодерские, и решение надо искать именно с точки зрения программерской.


Пример женской логики: вспоминая историю Буратины и обратив внимание на указание отрезка времени поистечении которого забрали яблоки — можно предположить, что он успел вырастить дерево и количество яблок у него не определено.
Нужно разобрать угил.
Re: Задача про Буратино и яблоки
От: Glas  
Дата: 22.06.12 08:37
Оценка:
Здравствуйте, Handie, Вы писали:

С таким подходом вам только диссертацию осталось написать про буратино и его яблоки
Re[2]: Задача про Буратино и яблоки
От: Handie  
Дата: 22.06.12 08:57
Оценка: :))) :))) :))) :)))
G>С таким подходом вам только диссертацию осталось написать про буратино и его яблоки

Народ не поймет. Это детство какое-то. Тему надо сформулировать примерно так "Неимперативные метаподходы к проблеме менежмента ассетов в условиях недетерминированных акторов при моделировании бизнес процессов".
Re: Задача про Буратино и яблоки
От: okman Беларусь https://searchinform.ru/
Дата: 22.06.12 11:02
Оценка:
Здравствуйте, Handie, Вы писали:

Буратино дали 5 яблок, потом 2 забрали, сколько яблок осталось у Буратино

Все уже написано до нас — http://www.rsdn.ru/forum/humour/4415641.1.aspx
Автор: Lazytech
Дата: 10.09.11
Re: Задача про Буратино и яблоки
От: denisko http://sdeniskos.blogspot.com/
Дата: 22.06.12 11:34
Оценка:
Здравствуйте, Handie, Вы писали:

H>Осталось только решить вопрос с финансированием. На месте кандидата я бы поинтересовался, готова ли контора оплатить дальнейшие изыскания в области управления ассетами. Вот, казалась бы простая задачка, а какая глубина за ней кроется!

На месте работодателя, если бы мне кандидат предложил бы оплатить какую-то НЕХ вместо того, чтобы вычесть 2 числа, взял бы и у....л.
<Подпись удалена модератором>
Re[2]: Задача про Буратино и яблоки
От: Handie  
Дата: 22.06.12 11:51
Оценка:
D>На месте работодателя, если бы мне кандидат предложил бы оплатить какую-то НЕХ вместо того, чтобы вычесть 2 числа, взял бы и у....л.

Унылые чуваки без чувства юмора напрягают
Re[2]: Задача про Буратино и яблоки
От: Handie  
Дата: 22.06.12 11:52
Оценка:
O>Все уже написано до нас — http://www.rsdn.ru/forum/humour/4415641.1.aspx
Автор: Lazytech
Дата: 10.09.11


Вот порадовался, человек правильно мыслит!
Re[2]: Задача про Буратино и яблоки
От: denisko http://sdeniskos.blogspot.com/
Дата: 22.06.12 14:21
Оценка:
Здравствуйте, denisko, Вы писали:

D>Здравствуйте, Handie, Вы писали:


H>>Осталось только решить вопрос с финансированием. На месте кандидата я бы поинтересовался, готова ли контора оплатить дальнейшие изыскания в области управления ассетами. Вот, казалась бы простая задачка, а какая глубина за ней кроется!

D>На месте работодателя, если бы мне кандидат предложил бы оплатить какую-то НЕХ вместо того, чтобы вычесть 2 числа, взял бы и у....л.
Вообще то я имел ввиду взял и у..л..ы..б..н..л. Интересно, сработает?
<Подпись удалена модератором>
Re[3]: Задача про Буратино и яблоки
От: denisko http://sdeniskos.blogspot.com/
Дата: 22.06.12 14:23
Оценка:
Здравствуйте, Handie, Вы писали:

D>>На месте работодателя, если бы мне кандидат предложил бы оплатить какую-то НЕХ вместо того, чтобы вычесть 2 числа, взял бы и у....л.


H>Унылые чуваки без чувства юмора напрягают

Понимаешь, ты сейчас веселишься, а потом появляется табуны программистов, которые считают, что для того, чтобы удалить гланды, надо разобрать человека, а потом собрать такого же но без гланд.
<Подпись удалена модератором>
Re: Задача про Буратино и яблоки
От: kovalev  
Дата: 22.06.12 16:17
Оценка:
Здравствуйте, Handie, Вы писали:

H>Для пятницы, есть очень интересная задача, которую задают кадидатам на собеседованиях. Цитирую


и в результате, чтобы считать буратинкины яблоки, контора вместо калькулятора прикупила:
  • стойку с кучей мощных лезвий,
  • хороший бесперебойник,
  • SAN хранилище,
  • пучок админов, чтобы это все работало
    и в результате переехала в новое крутое здание, потому что в старом такую тяжесть полы не выдерживали
    а потом буратино поступил в универ, вместо яблок стал лакомиться кислотой и вдувать мальвинке яблоки жрать стало некогда

    контора зачахла и разорилась, а программисты покончили с собой

    хеппи энд
  • Re: Задача про Буратино и яблоки
    От: abibok  
    Дата: 22.06.12 17:28
    Оценка: 1 (1) +1
    Правильный ответ: 5-2=3, потому что демонстрирует умение работать в условиях неполных данных, когда значения неизвестных величин выбираются так, чтобы задача имела практический смысл. Все остальное — это заумствующая школота, которая завалит проект.
    Re[2]: Задача про Буратино и яблоки
    От: ResidentR6  
    Дата: 22.06.12 20:52
    Оценка:
    ТАК ТОЧНО!
    Во-первых, работа программиста должна быть простой ровно настолько,
    чтобы его продукт хорошо продавался. Изыскания из области философии
    никто не купит!

    И потом, даже зная "правильный" ответ, всё равно бы ответил 3. Потому
    что НЕ ХОЧУ работать и дня в конторе, где программисты занимаются
    ерундой, а людей ценят не за работу, а за "Буратин".

    HR-а который попробует принять какое-либо решение на основе этой задачи
    — ГНАТЬ В ШЕЮ как некомпетентного клоуна. В то время как организация
    бьётся над созданием продаваемых продуктов и сервисов в сжатые сроки,
    это возомнившее о себе чудо пытается умничать во время решения самого
    ключевого вопроса — набора людей.

    ЭТО — ЮМОР, людЯм без чувства юмора противопоказано.

    22.06.2012 20:28, abibok написал:
    > Правильный ответ: 5-2=3, потому что демонстрирует умение работать в
    > условиях неполных данных, когда значения неизвестных величин выбираются
    > так, чтобы задача имела практический смысл. Все остальное — это
    > заумствующая школота, которая завалит проект.
    Posted via RSDN NNTP Server 2.1 beta
    Re[2]: Задача про Буратино и яблоки
    От: ssp_alex Россия  
    Дата: 28.06.12 07:45
    Оценка: :)
    Здравствуйте, abibok, Вы писали:

    A>Правильный ответ: 5-2=3, потому что демонстрирует умение работать в условиях неполных данных, когда значения неизвестных величин выбираются так, чтобы задача имела практический смысл. Все остальное — это заумствующая школота, которая завалит проект.


    это как раз демонстрирует не умение (или не желание) определять границы где считать данные полными или не полными.
    данная задача как раз должна показать умение выявлять начальные условия и устанавливать границы.
    правильным ответом 3 будет только если отвечающий начала скажет, что у Буратино в начале не было ни одного яблока, иначе 3 это только дельта.

    а если задачу переформулировать так:
    орбиту метеоспутника подняли на 5 км, а затем опустили на 2 км. на какой высоте находится аппарат, по твоей логике 5-2=3 км.
    или клиент положил на счет 5килобаксов, а потом снял 2 килобакса, по твоим умениям работать в условиях неполных данных у клиента на счету осталось 5 килобаксов. Я бы программистов с такими умениями работать в условиях неполных данных к критическим расчетам и близко бы не подпускал.
    Вот прикинь, у тебя на счету 15 т.р. подходишь к банкомату и кладешь 5т.р., а потом делаешь оплату на 2 т.р., и тебе на чеке банкомат печатает что баланс твоего счета 3 т.р., а где остальные 18 т.р. деньги что там должны быть? ... А это программист умеющий работать в условиях неполных данных банку подарок сделал
    Re[2]: Задача про Буратино и яблоки
    От: Abalak США  
    Дата: 28.06.12 14:08
    Оценка:
    Здравствуйте, abibok, Вы писали:

    A>Правильный ответ: 5-2=3, потому что демонстрирует умение работать в условиях неполных данных, когда значения неизвестных величин выбираются так, чтобы задача имела практический смысл. Все остальное — это заумствующая школота, которая завалит проект.


    Ну если мне не изменяет память, то правильный ответ 5, т.к. Буратино лично заявил Мальвине, что яблоки не отдаст.

    Re: Задача про Буратино и яблоки
    От: altmenn Германия DLR IPA
    Дата: 06.07.12 15:58
    Оценка:
    Здравствуйте, Handie, Вы писали:

    H>Для пятницы, есть очень интересная задача, которую задают кадидатам на собеседованиях. Цитирую


    H>

    H>сам любил задавать под конец собеседования тупые задачки типа "Буратино дали 5 яблок, потом 2 забрали, сколько яблок осталось у Буратино", но сразу предупреждал что задачки программерско-кодерские, и решение надо искать именно с точки зрения программерской.


    H>Задачка оказалась совсем не простой. Главное в задаче что? Правильно — выбрать язык программирования и применить паттерны, показать так сказать класс программирования. Тут есть несколько походов.


    H>1) Объектно ориентированный. Во первых надо создать класс Apple и переопределить оператор складывания яблок. Но ведь современные проги создаются по идеологии MVC а Apple это Model. Надо еще View — это будет класс AppleInspector и контроллер AppleAccountingBuratinoManager. Тут мы применили и объектно ориентированный дизайн и паттерны программирования. Не раскрыта тема метапрограммирования.


    H>2) Метапрограммирование. В предыдущем случае мы написали класс Apple, но что будет если заказчику понадобятся груши? Правильно, класс Apple надо переименовать в класс AccountableAsset и сделать щаблоном. Во вторых, надо сделать инстанциацию количества ассетов на этапе компилляции, это на C++ делается через частичную специализацию когда у Буратино было 0 яблок, дали 5 и забрали 2. Частичная специализация шаблона даст нам частное решение на этапе компилляции. Общее решение останется в рантайме, но что делать, кто сказал что будет легко.


    H>3) Функциональный подход. Императивные языки — вчерашний день. Компилятор сам должен вывести сколько у Буратино яблок. Мы должны задать только начальное состояние, представив подсчет яблок как совокупность последовательных состояний вычислительного процесса. Это же конечный автомат! Каждое добавление яблок изменят внутреннее состояние Буратино, каждый отъем яблок тоже сказывается на нем, причем отрицательно. Особенно полезен функциональный подход в связи с возможностью использования массового парралелизма, что позволит загрузить многопроцессорную систему.


    H>Дальнейшие изыскания в объектно ориентированном дизайне показали — что буратино это контроллер! Тогда становится все ясно — яблоко это модель, Буратино это контроллер. Но контроллером яблок (в генерализованном виде AccountableAsset) может являться не только Буратино но и Бармалей. Тогда Буратино надо тоже генерализовать в виде ControllingActor. Ну осталось генерализовать View и у нас получается супергибкая модель, не не только Буратино может управлять владением яблок, но и Бармалей может владеть кокосами. Это же ахрененная гибкость получается, мы создали Univerasal Asset Management System. Это же практически архитектура логистического приложения!


    H>Осталось только решить вопрос с финансированием. На месте кандидата я бы поинтересовался, готова ли контора оплатить дальнейшие изыскания в области управления ассетами. Вот, казалась бы простая задачка, а какая глубина за ней кроется!


    А по-моему вам пора к врачу.
    Безвыходных ситуаций не бывает!(Правило Кирхгофа)
     
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.