Re: Вопрос на собеседовании
От: AndreyM16  
Дата: 19.08.11 08:28
Оценка: +1 :))) :))) :)))
Здравствуйте, shrecher, Вы писали:

S>Как такой вопрос на собеседовании, был задан на позиции C++ разработчика?


S>Написать код на доске для функции:



string Power( int X, short Y) // вернуть строчное представление результата X в степени Y 
{
return lexical_cast<string>(X)+"^"+lexical_cast<string>(Y);
}
Re[4]: Вопрос на собеседовании
От: carpenter Голландия  
Дата: 19.08.11 07:59
Оценка: +2 :))) :)
Здравствуйте, EM, Вы писали:




EM>Очевидно что во Вселенной где нам выпало счастье жить, атомов 10^80 Что как бы намекает, что 10^300 на реальной задаче не переполнится


кого собственно на собеседовании интересуют реальные задачи
Весь мир — Кремль, а люди в нем — агенты
Re: Вопрос на собеседовании
От: Centaur Россия  
Дата: 19.08.11 04:56
Оценка: 4 (1) +2
Здравствуйте, shrecher, Вы писали:

S>Как такой вопрос на собеседовании, был задан на позиции C++ разработчика?


S>Написать код на доске для функции:


S>string Power( int X, short Y) // вернуть строчное представление результата X в степени Y 
S>{



S>}

Это вопрос на наличие bullshit detector’а. Когда задают такой вопрос, ждут, что ты будешь спрашивать про ограничения. Как минимум — переспросишь, действительно ли они хотят от тебя, чтоб ты реализовал им bignum; и если да, то почему бы не принимать аргументы бигнумами, в какой системе счисления должен быть результат, и требуется ли обрабатывать случаи (X!=0 && Y<0), (X=0 && Y=0) и (X=0 && Y<0).
Re[3]: Вопрос на собеседовании
От: EM Великобритания  
Дата: 18.08.11 17:46
Оценка: +3
Здравствуйте, shrecher, Вы писали:

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


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


A>>
A>>string Power( int X, short Y) // вернуть строчное представление результата X в степени Y 
A>>{
A>>   return lexical_cast<string>(pow(X, Y));
A>>}
A>>


A>>в чем проблема?


S>Н-да. pow вернет double, что есть максимальное число в нем — 1.79769e+308. Очевидно, что если аргументы к примеру, X=100000, Y=32000, то результат будет много больше.



Очевидно что во Вселенной где нам выпало счастье жить, атомов 10^80 Что как бы намекает, что 10^300 на реальной задаче не переполнится
Опыт — это такая вещь, которая появляется сразу после того, как была нужна...
Re[2]: Вопрос на собеседовании
От: MasterZiv СССР  
Дата: 19.08.11 07:41
Оценка: -1 :)
On 19.08.2011 8:56, Centaur wrote:

> Это вопрос на наличие bullshit detector’а. Когда задают такой вопрос, ждут, что


Не угадал. Это вопрос на наличие базового образования в IT.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Вопрос на собеседовании
От: ZOI4  
Дата: 18.08.11 18:04
Оценка: :)
Здравствуйте, shrecher,

Если в лоб, то на пятой минуте пришла в голову идея просто перемножать Х друг на друга по очереди Y раз, а промежуточные результаты запихивать в строку%))) Но пожалуй еще подумаю%)
Мафиозная диктатура это нестабильность. Если не мафиозная диктатура, то Конституция и демократия.
Re[6]: Вопрос на собеседовании
От: Доктор ТуамОсес Гондурас Мой новый проект "ВЕПРЬ-1"
Дата: 19.08.11 01:25
Оценка: :)
Здравствуйте, FirstStep, Вы писали:

FS>Здравствуйте, Доктор ТуамОсес, Вы писали:


ДТ>>Правильно.

ДТ>>А как же вторая часть вопроса ("почему?")?
ДТ>>Сможете объяснить почему 2.75?

FS>Потому что 2.75 представимо в виде суммы целых степеней двойки:


FS>2.75 = 2^1 + 2^(-1)+ 2^(-2)


Браво
Вы успешно прошли собеседование.
Беру Вас к себе.

А также всех талантливых программистов желающим «встать у истоков» самой мощной в истории вселенной софтверной корпорации.
http://webcache.googleusercontent.com/search?q=cache:wRGrcvZBgSwJ:forum.sources.ru/index.php%3Fshowtopic%3D284923%26st%3D210+%22%D1%81%D0%B0%D0%BC%D0%BE%D0%B9+%D0%BC%D0%BE%D1%89%D0%BD%D0%BE%D0%B9+%D1%81%D0%BE%D1%84%D1%82%D0%B2%D0%B5%D1%80%D0%BD%D0%BE%D0%B9+%D0%BA%D0%BE%D1%80%D0%BF%D0%BE%D1%80%D0%B0%D1%86%D0%B8%D0%B8%22&amp;cd=2&amp;hl=ru&amp;ct=clnk&amp;gl=ru&amp;source=www.google.ru
http://hghltd.yandex.net/yandbtm?fmode=inject&amp;url=http%3A%2F%2Fforum.sources.ru%2Findex.php%3Fshowtopic%3D313252%26st%3D0&amp;text=%22%D0%96%D0%B5%D0%BB%D0%B0%D1%8E%D1%89%D0%B8%D0%BC%20%C2%AB%D0%B2%D1%81%D1%82%D0%B0%D1%82%D1%8C%20%D1%83%20%D0%B8%D1%81%D1%82%D0%BE%D0%BA%D0%BE%D0%B2%C2%BB%22&amp;l10n=ru&amp;mime=html&amp;sign=3e6b1675267e3babae3db2109e2ba3ee&amp;keyno=0
http://hghltd.yandex.net/yandbtm?fmode=inject&amp;url=http%3A%2F%2Fforum.sources.ru%2Findex.php%3Fshowtopic%3D315537%26st%3D15&amp;text=%22%D0%96%D0%B5%D0%BB%D0%B0%D1%8E%D1%89%D0%B8%D0%BC%20%C2%AB%D0%B2%D1%81%D1%82%D0%B0%D1%82%D1%8C%20%D1%83%20%D0%B8%D1%81%D1%82%D0%BE%D0%BA%D0%BE%D0%B2%C2%BB%22&amp;l10n=ru&amp;mime=html&amp;sign=93d6158a82a71459aecf5edfdd6121ff&amp;keyno=0
Мой новый проект "ВЕПРЬ-1"
Re[5]: Вопрос на собеседовании
От: MasterZiv СССР  
Дата: 19.08.11 07:29
Оценка: :)
On 19.08.2011 11:04, kuzmaprutkov2 wrote:

> A>так оно в double конвертируется

> Эм... дабл держит 16 первых значимых разрядов и степень Что-то точностью тут и
> не пахнет...

А кто сказал, что она тут нужна ?
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Вопрос на собеседовании
От: Vzhyk  
Дата: 19.08.11 09:04
Оценка: +1
18.08.2011 21:29, shrecher пишет:

> Возможно это и так. Меня больше интересует адекватность этого вопроса.

> Его задали моему знакомому и мы тут спорили о смысле спрашивать такое.
> За много лет прогерской жизни я ни разу не писал ничего подобного.
Ну если простейший ответ с pow не удовлетворяет, то лучше всего
попрощаться с ними сразу.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Вопрос на собеседовании
От: MaximUN  
Дата: 19.08.11 11:58
Оценка: +1
Здравствуйте, shrecher, Вы писали:

S>это уже автор реализации должен решать как обрабатывать входные данные.


Еще чего. Это должен решать заказчик, в данном случае — интервьювер.
Re[3]: Вопрос на собеседовании
От: MasterZiv СССР  
Дата: 19.08.11 12:07
Оценка: :)
On 19.08.2011 11:41, MasterZiv wrote:

> Не угадал. Это вопрос на наличие базового образования в IT.

Ой, я перепутал ветку кажется. Не на то ответил.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Вопрос на собеседовании
От: Паблик Морозов  
Дата: 19.08.11 12:24
Оценка: :)
Здравствуйте, Доктор ТуамОсес, Вы писали:

ДТ>Вот Вам ещё "вопрос на собеседовании" (взят из готовящегося сейчас мной к опубликованию нового бильда СБОРНИКА ВОПРОСОВ ПО С++:


ДТ>

Есть код:

ДТ>

ДТ>double x = 2.30;
ДТ>double y = 2.75;
ДТ>


ДТ>Вопрос:Какая переменная реально получит то значение, которое написано в её инициализаторе?
ДТ>И почему?


Обе. Если в Вашем языке программирования это не так, выкиньте его на помойку. Еще есть простой способ узнать, хорошо ли язык работает с числами с плавающей точкой — посчитать e^pi — pi.
Вопрос на собеседовании
От: shrecher  
Дата: 18.08.11 17:04
Оценка:
Как такой вопрос на собеседовании, был задан на позиции C++ разработчика?

Написать код на доске для функции:


string Power( int X, short Y) // вернуть строчное представление результата X в степени Y 
{



}
Re: Вопрос на собеседовании
От: Abyx Россия  
Дата: 18.08.11 17:16
Оценка:
Здравствуйте, shrecher, Вы писали:

string Power( int X, short Y) // вернуть строчное представление результата X в степени Y 
{
   return lexical_cast<string>(pow(X, Y));
}


в чем проблема?
In Zen We Trust
Re[2]: Вопрос на собеседовании
От: ilnar Россия  
Дата: 18.08.11 17:21
Оценка:
Здравствуйте, Abyx, Вы писали:

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


A>
A>string Power( int X, short Y) // вернуть строчное представление результата X в степени Y 
A>{
A>   return lexical_cast<string>(pow(X, Y));
A>}
A>


A>в чем проблема?


при такой реализации в ограниченном множестве X,Y
Re[3]: Вопрос на собеседовании
От: Abyx Россия  
Дата: 18.08.11 17:25
Оценка:
Здравствуйте, ilnar, Вы писали:

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


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


A>>
A>>string Power( int X, short Y) // вернуть строчное представление результата X в степени Y 
A>>{
A>>   return lexical_cast<string>(pow(X, Y));
A>>}
A>>


A>>в чем проблема?


I>при такой реализации в ограниченном множестве X,Y


так оно в double конвертируется
а если надо поддержать большие числа, заменяем pow() на some_bigint_lib_pow()
In Zen We Trust
Re[2]: Вопрос на собеседовании
От: shrecher  
Дата: 18.08.11 17:26
Оценка:
Здравствуйте, Abyx, Вы писали:

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


A>
A>string Power( int X, short Y) // вернуть строчное представление результата X в степени Y 
A>{
A>   return lexical_cast<string>(pow(X, Y));
A>}
A>


A>в чем проблема?


Н-да. pow вернет double, что есть максимальное число в нем — 1.79769e+308. Очевидно, что если аргументы к примеру, X=100000, Y=32000, то результат будет много больше.
Re[3]: Вопрос на собеседовании
От: Abyx Россия  
Дата: 18.08.11 17:31
Оценка:
Здравствуйте, shrecher, Вы писали:

S>Н-да. pow вернет double, что есть максимальное число в нем — 1.79769e+308. Очевидно, что если аргументы к примеру, X=100000, Y=32000, то результат будет много больше.


ну будет +inf, ну и что?
вы умножаете int32*int32 и не думаете о том что оно может переполнится
In Zen We Trust
Re[4]: Вопрос на собеседовании
От: shrecher  
Дата: 18.08.11 17:36
Оценка:
Здравствуйте, Abyx, Вы писали:

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


S>>Н-да. pow вернет double, что есть максимальное число в нем — 1.79769e+308. Очевидно, что если аргументы к примеру, X=100000, Y=32000, то результат будет много больше.


A>ну будет +inf, ну и что?

A>вы умножаете int32*int32 и не думаете о том что оно может переполнится

авторы вопроса хотят для всех всех возможных значений int и short, т.е. два миллиарда в степени тридцать две тысячи. Длинная такая строка.
Re: Вопрос на собеседовании
От: ZOI4  
Дата: 18.08.11 17:44
Оценка:
Здравствуйте, shrecher, Вы писали:

S>Как такой вопрос на собеседовании, был задан на позиции C++ разработчика?


Зависит от того сколько времени дают на решение.
Мафиозная диктатура это нестабильность. Если не мафиозная диктатура, то Конституция и демократия.
Re[2]: Вопрос на собеседовании
От: shrecher  
Дата: 18.08.11 17:52
Оценка:
Здравствуйте, ZOI4, Вы писали:

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


S>>Как такой вопрос на собеседовании, был задан на позиции C++ разработчика?


ZOI>Зависит от того сколько времени дают на решение.


Минут 15-20. Можно, не все решение, но хотя бы определиться со структурами данных и написать основу алгоритма.
Re: Вопрос на собеседовании
От: ZOI4  
Дата: 18.08.11 18:19
Оценка:
Здравствуйте, shrecher, Вы писали:

В общем, на вскидку надо определить сколько раз Х можно умножить на Х, чтобы результат помещался в double, например, если погрешности пофик, или в _int64, если точность важна. И потом считать сколько таких произведений получится при проходе X*X Y раз, плюс последнее перемножение Х-ов, которое может быть меньше. В общем:
1. Сколько раз X*X*...*X, чтоб _int64 не переполнился.
2. Считаем сколько таких произведений требуется, чтобы Х на Х умножился до около Y раз, с мешьшей стороны.
3. Домножаем оставшееся.
4. Переводим это дело в строку, вручную умножая наше произведение из п.1 вручную от младшего разряда к старшему на получившееся число оных, не забывая приплюсовать остаток из п.3.

В общем как-то так, если непонятно, то сорри, вечер после рабочего дня — моска уже нет.
Мафиозная диктатура это нестабильность. Если не мафиозная диктатура, то Конституция и демократия.
Re[2]: Вопрос на собеседовании
От: shrecher  
Дата: 18.08.11 18:29
Оценка:
Здравствуйте, ZOI4, Вы писали:

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


ZOI>В общем как-то так, если непонятно, то сорри, вечер после рабочего дня — моска уже нет.


Возможно это и так. Меня больше интересует адекватность этого вопроса. Его задали моему знакомому и мы тут спорили о смысле спрашивать такое. За много лет прогерской жизни я ни разу не писал ничего подобного. Как-то лавки стали спрашивать что-то очень мудреное, видать разворот строки уже всем надоел
Re[3]: Вопрос на собеседовании
От: vb-develop  
Дата: 18.08.11 18:42
Оценка:
Здравствуйте, shrecher, Вы писали:

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


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


ZOI>>В общем как-то так, если непонятно, то сорри, вечер после рабочего дня — моска уже нет.


S>Возможно это и так. Меня больше интересует адекватность этого вопроса. Его задали моему знакомому и мы тут спорили о смысле спрашивать такое. За много лет прогерской жизни я ни разу не писал ничего подобного. Как-то лавки стали спрашивать что-то очень мудреное, видать разворот строки уже всем надоел


Да это ж школьная задача, реализовать перемножение двух длинных чисел. В тривиальном случае хранишь по одному десятичному разряду в элементе массива, и перемножаешь как на листочке.
Re[3]: Вопрос на собеседовании
От: ZOI4  
Дата: 18.08.11 18:43
Оценка:
Здравствуйте, shrecher, Вы писали:

S>Возможно это и так. Меня больше интересует адекватность этого вопроса. Его задали моему знакомому и мы тут спорили о смысле спрашивать такое. За много лет прогерской жизни я ни разу не писал ничего подобного. Как-то лавки стали спрашивать что-то очень мудреное, видать разворот строки уже всем надоел


Если оценивать как один из вопросов на смекалку, то нормально, имхо. Хотя 15-20 минут мне кажется маловато, все-таки.

ЗЫ Зато виртуальные деструкторы до сих пор не стареют — ходил тут тоже по собеседованиям не так давно — хиты номер один — виртуальные деструкторы и организация контейнеров
Мафиозная диктатура это нестабильность. Если не мафиозная диктатура, то Конституция и демократия.
Re[2]: Вопрос на собеседовании
От: ZOI4  
Дата: 18.08.11 18:46
Оценка:
ZOI>1. Сколько раз X*X*...*X, чтоб _int64 не переполнился.
ZOI>2. Считаем сколько таких произведений требуется, чтобы Х на Х умножился до около Y раз, с мешьшей стороны.
ZOI>3. Домножаем оставшееся.
ZOI>4. Переводим это дело в строку, вручную умножая наше произведение из п.1 вручную от младшего разряда к старшему на получившееся число оных, не забывая приплюсовать остаток из п.3.

Да, тут еще похоже еще одного unsigned _int64 не хватит для подсчета произведений из пункта 1. Значит надо вводить еще одно измерение и считать, сколько сумм произведений из пункта 1, поместиться еще в один unsigned _int64

ЗЫ Хы, написал, но не отправил%) Определенно, пора спать%)
Мафиозная диктатура это нестабильность. Если не мафиозная диктатура, то Конституция и демократия.
Re[4]: Вопрос на собеседовании
От: _software_engineer_  
Дата: 18.08.11 18:50
Оценка:
Здравствуйте, ZOI4, Вы писали:

ZOI>Здравствуйте, shrecher,


ZOI>Если в лоб, то на пятой минуте пришла в голову идея просто перемножать Х друг на друга по очереди Y раз, а промежуточные результаты запихивать в строку%))) Но пожалуй еще подумаю%)


пробегать каждый бит в Y
если бит == 1, то result *= x;

вне зависимости от бита делать делать X = X * X

X * X можно считать алгоритмом карацубы (это если стоит задача совсем написать велосипед и не пользоваться библиотеками для длинной арифметики)

временную сложность сами посчитайте
Re[5]: Вопрос на собеседовании
От: ZOI4  
Дата: 18.08.11 18:57
Оценка:
Здравствуйте, _software_engineer_, Вы писали:

___>пробегать каждый бит в Y

___>если бит == 1, то result *= x;

___>вне зависимости от бита делать делать X = X * X


Хм, я может чего-то пропустил, но где у вас защита переполнения в result? Основная проблема в ней.
Мафиозная диктатура это нестабильность. Если не мафиозная диктатура, то Конституция и демократия.
Re[6]: Вопрос на собеседовании
От: _software_engineer_  
Дата: 18.08.11 19:01
Оценка:
Здравствуйте, ZOI4, Вы писали:

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


___>>пробегать каждый бит в Y

___>>если бит == 1, то result *= x;

___>>вне зависимости от бита делать делать X = X * X


ZOI>Хм, я может чего-то пропустил, но где у вас защита переполнения в result? Основная проблема в ней.


Забыл уточнить — я предлагал это для длинной арифметики
Re: Вопрос на собеседовании
От: мыщъх США http://nezumi-lab.org
Дата: 18.08.11 19:05
Оценка:
Здравствуйте, shrecher, Вы писали:

S>Как такой вопрос на собеседовании, был задан на позиции C++ разработчика?


S>Написать код на доске для функции:



>string Power( int X, short Y) // вернуть строчное представление результата X в степени Y

вызвать скрипт на руби
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re: Вопрос на собеседовании
От: Доктор ТуамОсес Гондурас Мой новый проект "ВЕПРЬ-1"
Дата: 18.08.11 19:05
Оценка:
Вот Вам ещё "вопрос на собеседовании" (взят из готовящегося сейчас мной к опубликованию нового бильда СБОРНИКА ВОПРОСОВ ПО С++:

Есть код:

double x = 2.30;
double y = 2.75;


Вопрос:Какая переменная реально получит то значение, которое написано в её инициализаторе?
И почему?

Мой новый проект "ВЕПРЬ-1"
Re[2]: Вопрос на собеседовании
От: Доктор ТуамОсес Гондурас Мой новый проект "ВЕПРЬ-1"
Дата: 18.08.11 21:57
Оценка:
Ну так чо? Народ?
Сможете ответить?
Мой новый проект "ВЕПРЬ-1"
Re[3]: Вопрос на собеседовании
От: engine_  
Дата: 18.08.11 22:24
Оценка:
Здравствуйте, Доктор ТуамОсес, Вы писали:

ДТ>Ну так чо? Народ?

ДТ>Сможете ответить?
2.75
это только в с++?
Re[4]: Вопрос на собеседовании
От: Доктор ТуамОсес Гондурас Мой новый проект "ВЕПРЬ-1"
Дата: 18.08.11 22:59
Оценка:
Здравствуйте, engine_, Вы писали:

_>Здравствуйте, Доктор ТуамОсес, Вы писали:


ДТ>>Ну так чо? Народ?

ДТ>>Сможете ответить?
_>2.75


Правильно.
А как же вторая часть вопроса ("почему?")?
Сможете объяснить почему 2.75?
Мой новый проект "ВЕПРЬ-1"
Re[5]: Вопрос на собеседовании
От: FirstStep Россия  
Дата: 18.08.11 23:25
Оценка:
Здравствуйте, Доктор ТуамОсес, Вы писали:

ДТ>Правильно.

ДТ>А как же вторая часть вопроса ("почему?")?
ДТ>Сможете объяснить почему 2.75?

Потому что 2.75 представимо в виде суммы целых степеней двойки:

2.75 = 2^1 + 2^(-1)+ 2^(-2)
Re[4]: Вопрос на собеседовании
От: a_g_barnaul Россия  
Дата: 19.08.11 02:55
Оценка:
Здравствуйте, vb-develop, Вы писали:

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


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


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


ZOI>>>В общем как-то так, если непонятно, то сорри, вечер после рабочего дня — моска уже нет.


S>>Возможно это и так. Меня больше интересует адекватность этого вопроса. Его задали моему знакомому и мы тут спорили о смысле спрашивать такое. За много лет прогерской жизни я ни разу не писал ничего подобного. Как-то лавки стали спрашивать что-то очень мудреное, видать разворот строки уже всем надоел


VD>Да это ж школьная задача, реализовать перемножение двух длинных чисел. В тривиальном случае хранишь по одному десятичному разряду в элементе массива, и перемножаешь как на листочке.



так для интереса на бумажке наваял этот вариант, не знаю мож в том и суть что задачу надо решить более хитро но этот тупой вариант пишется за 7 минут=)
String sumLong(String A, String B); // бежим с конца, переводим текущие цифры в int плюсуем между собой и с запомненным переносом если остался с прошлой суммы, ну и в результирующую строку(перенос сохраняем.
тоды:
String mulLong(String A, String B); // sumlong в цикле:A+A+... B раз.
String powLong(String A, String B); // mullong в цикле:A*A*... B раз.

на бумажке полный вариант занял 6-7 минут.. соответственно есть предположение что спрашивающий хотел более хитрый вариант
Re[5]: Вопрос на собеседовании
От: vb-develop  
Дата: 19.08.11 04:24
Оценка:
Здравствуйте, a_g_barnaul, Вы писали:

VD>>Да это ж школьная задача, реализовать перемножение двух длинных чисел. В тривиальном случае хранишь по одному десятичному разряду в элементе массива, и перемножаешь как на листочке.



__>так для интереса на бумажке наваял этот вариант, не знаю мож в том и суть что задачу надо решить более хитро но этот тупой вариант пишется за 7 минут=)

__>String sumLong(String A, String B); // бежим с конца, переводим текущие цифры в int плюсуем между собой и с запомненным переносом если остался с прошлой суммы, ну и в результирующую строку(перенос сохраняем.
__>тоды:
__>String mulLong(String A, String B); // sumlong в цикле:A+A+... B раз.
__>String powLong(String A, String B); // mullong в цикле:A*A*... B раз.

__>на бумажке полный вариант занял 6-7 минут.. соответственно есть предположение что спрашивающий хотел более хитрый вариант


Не думаю, скорее просто хотели проверить насколько рука набита код с логикой писать. Если на работе ничего кроме клепания формочек не делаешь, то с этим имхо могут быть сложности.
Re[7]: Вопрос на собеседовании
От: -Dm-  
Дата: 19.08.11 04:46
Оценка:
Здравствуйте, Доктор ТуамОсес, Вы писали:

ДТ>>>А как же вторая часть вопроса ("почему?")?



А практическая польза данного упражнения есть ?
1/3 тоже записать в виде конечной десятичной дроби нельзя, но на практике это ни кому не мешает.
До не давнего времени, мне вот все равно было на формат представления double в памяти, только в связи с вашим заданием посмотрел.
Так что бы задание было корректным давайте претендентам описания этого формата. imho
Re[4]: Вопрос на собеседовании
От: kuzmaprutkov2  
Дата: 19.08.11 07:04
Оценка:
Здравствуйте, Abyx, Вы писали:

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


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


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


A>>>
A>>>string Power( int X, short Y) // вернуть строчное представление результата X в степени Y 
A>>>{
A>>>   return lexical_cast<string>(pow(X, Y));
A>>>}
A>>>


A>>>в чем проблема?


I>>при такой реализации в ограниченном множестве X,Y


A>так оно в double конвертируется

Эм... дабл держит 16 первых значимых разрядов и степень Что-то точностью тут и не пахнет...
Re: Вопрос на собеседовании
От: baxton_ulf США  
Дата: 19.08.11 07:14
Оценка:
Здравствуйте, shrecher, Вы писали:
S>...

а если как-нить так
Y*lg(X)

даст нам степень в которую надо возвести 10 чтоб получить X^Y

пример
INT_MAX=2147483648
SHRT_MAX=32767
32767*log(2147483648) = 305779.34590557182653062605326656

грубо:
10^305779 * 10^0.345 ==> 10^305779 * 2.2130947096056377223339809093626

для 10^0.345 double сгодиться
10^305779 тут нам нужна только степень

тут уже можно поиграться с простым смещнием десятичной точки,
Re[2]: Вопрос на собеседовании
От: kuzmaprutkov2  
Дата: 19.08.11 07:20
Оценка:
Здравствуйте, baxton_ulf, Вы писали:

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

S>>...

Любые операции с double дадут нам неточные вычисления.
По-моему уже кто-то писал. Длинная арифметика + log(Y) возведение в степень, а в качестве умножений вспомогательных в log алго для степени — Карацуба.
Re: Вопрос на собеседовании
От: sumson Россия  
Дата: 19.08.11 07:22
Оценка:
Здравствуйте, shrecher, Вы писали:

S>Как такой вопрос на собеседовании, был задан на позиции C++ разработчика?


не в Акронисе ли задают такие вопросы на собеседовании?
спрашиваю потому что как то получил от них тестовое такого содержания:

Задание: необходимо вывести введенное 10-тичное число словами на русском языке в 8-ми и 10-ной системах. Например.

Вводим: 131
Выводим:
сто тридцать один в десятичной системе;
двести три в восьмеричной системе.

При проектировании подумайте о том, как ваше решение можно было бы локализовать на английский язык (тут обратите внимание, например, на цифру "двести", которая на английском будет состоять из двух слов).

Укажите, сколько времени у вас заняло выполнение этого задания.
Я знаю, как управлять Вселенной. И скажите, зачем же мне бежать за миллионом?!(c)
Re: Вопрос на собеседовании
От: MasterZiv СССР  
Дата: 19.08.11 07:26
Оценка:
On 18.08.2011 21:04, shrecher wrote:

> string Power(int X,short Y)// вернуть строчное представление результата X в степени Y

> {
>
>
>
> }

Ну так. Стандартная pow + boost::lexical_cast
(или snprintf или std::sting_stream)
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Вопрос на собеседовании
От: kuzmaprutkov2  
Дата: 19.08.11 07:28
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>Ну так. Стандартная pow + boost::lexical_cast

MZ>(или snprintf или std::sting_stream)

Стандартная pow загибается после 16 разряда значимого =)
Re[2]: Вопрос на собеседовании
От: MasterZiv СССР  
Дата: 19.08.11 07:38
Оценка:
On 18.08.2011 23:05, Доктор ТуамОсес wrote:

> *Есть код:

>
> double x = 2.30;
> double y = 2.75;
>
>
>
> Вопрос:Какая переменная реально получит то значение, которое написано в её
> инициализаторе?

Так всё просто. Никакая.
Потому что бинарная дробь -- лишь приблизительное представление десятичной.

Ну тут вроде бы 2.75 представимо в виде конечной бинарной дроби, а 2.30
(7/3) -- нет, поэтому первая не получит точно то значение, вторая -- получит.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: Вопрос на собеседовании
От: MasterZiv СССР  
Дата: 19.08.11 07:39
Оценка:
On 19.08.2011 2:24, engine_ wrote:

> 2.75

> это только в с++?

Это везде, где double хранится в виде конечной бинарной дроби.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Вопрос на собеседовании
От: baxton_ulf США  
Дата: 19.08.11 07:47
Оценка:
Здравствуйте, kuzmaprutkov2, Вы писали:

K>Любые операции с double дадут нам неточные вычисления.


это да
по крайней мере у нас есть оценка сколько нам нужно разрядов (305780).

K>По-моему уже кто-то писал. Длинная арифметика + log(Y) возведение в степень, а в качестве умножений вспомогательных в log алго для степени — Карацуба.


ну кто-то писал, а кто-то взял и посчитал
Re[2]: Вопрос на собеседовании
От: Vzhyk  
Дата: 19.08.11 09:19
Оценка:
19.08.2011 7:56, Centaur пишет:

>

> Это вопрос на наличие bullshit detector’а. Когда задают такой вопрос,
> ждут, что ты будешь спрашивать про ограничения. Как минимум —
> переспросишь, действительно ли они хотят от тебя, чтоб ты реализовал им
> bignum; и если да, то почему бы не принимать аргументы бигнумами, в
> какой системе счисления должен быть результат, и требуется ли
> обрабатывать случаи (X!=0 && Y<0), (X=0 && Y=0) и (X=0 && Y<0).
В таком варианте этот вопрос говорит об отсутствии четкой постановки
задач на этой конторе, или по крайней мере у этого начальника. Посему
нужно быть готовым что вам придется угадывать желания начальников и
удовлетворять их. Кому-то это нравиться, кому-то нет.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Вопрос на собеседовании
От: Vzhyk  
Дата: 19.08.11 09:23
Оценка:
19.08.2011 10:22, sumson пишет:

> При проектировании подумайте о том, как ваше решение можно было бы локализовать на английский язык (тут обратите внимание, например, на цифру "двести", которая на английском будет состоять из двух слов).

>
> Укажите, сколько времени у вас заняло выполнение этого задания.
А вот это уже достаточно разумно и четко. Задание достаточно простое.
Такое можно и на собеседовании дать, если не верите, что соискатель
вообще программирует.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Вопрос на собеседовании
От: shrecher  
Дата: 19.08.11 09:25
Оценка:
Здравствуйте, Centaur, Вы писали:


C>Это вопрос на наличие bullshit detector’а. Когда задают такой вопрос, ждут, что ты будешь спрашивать про ограничения. Как минимум — переспросишь, действительно ли они хотят от тебя, чтоб ты реализовал им bignum;


Задача поставлена четко: на вход даются int[b] X, [b]short Y. Если бы хотели маленькие значения, то наверное бы дали хотя бы short, short или uchar, uchar. Тем более, возврат ввиде строки, заначит нет ограничений на выходной размер. Можешь, конечно, переспросить надо ли "bignum", но явно получишь положительный вопрос.

C>и требуется ли обрабатывать случаи (X!=0 && Y<0), (X=0 && Y=0) и (X=0 && Y<0).


это уже автор реализации должен решать как обрабатывать входные данные.
Re[3]: Вопрос на собеседовании
От: sumson Россия  
Дата: 19.08.11 10:23
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>Задание достаточно простое.

V>Такое можно и на собеседовании дать, если не верите, что соискатель
V>вообще программирует.

хорошо, жопустим вам дали такое задание на собеседовании,
алгоритм можете накидать побыстрому?
Я знаю, как управлять Вселенной. И скажите, зачем же мне бежать за миллионом?!(c)
Re[8]: Вопрос на собеседовании
От: Доктор ТуамОсес Гондурас Мой новый проект "ВЕПРЬ-1"
Дата: 19.08.11 10:27
Оценка:
Здравствуйте, -Dm-, Вы писали:

D>Здравствуйте, Доктор ТуамОсес, Вы писали:


ДТ>>>>А как же вторая часть вопроса ("почему?")?



D>А практическая польза данного упражнения есть ?

D>1/3 тоже записать в виде конечной десятичной дроби нельзя, но на практике это ни кому не мешает.

Вы видимо далёкий от математики человек и Вам никогда не приходилось заниматься мат.моделированием и "численными методами" решения дифференциальных уравнений в частных производных.

Поэтому так и говорите
Мой новый проект "ВЕПРЬ-1"
Re[4]: Вопрос на собеседовании
От: Vzhyk  
Дата: 19.08.11 10:38
Оценка:
19.08.2011 13:23, sumson пишет:

> хорошо, жопустим вам дали такое задание на собеседовании,

> алгоритм можете накидать побыстрому?
Этот да.
Но, вероятнее всего не буду, потому как не буду работать с людьми,
которые ожидают обмана с первых же минут встречи (ожидание обмана от
всех вокруг — это чаще всего проекция собственного поведения или
комплекс — что одно, что другое плохо для меня).
Если же приходит студент на собеседование, то тогда данный тест разумен
— прошлого опыта у него обычно нет и имеет смысл посмотреть вообще на
то, как он пишет код.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Вопрос на собеседовании
От: MaximUN  
Дата: 19.08.11 12:00
Оценка:
Здравствуйте, AndreyM16, Вы писали:
AM>
[skip]
AM>


В точку, это произведет хорошее впечатление на них
Re[9]: Вопрос на собеседовании
От: Banned by IT  
Дата: 19.08.11 13:01
Оценка:
Здравствуйте, Доктор ТуамОсес, Вы писали:

ДТ>Вы видимо далёкий от математики человек и Вам никогда не приходилось заниматься мат.моделированием и "численными методами" решения дифференциальных уравнений в частных производных.

И что ты с этим сакральным знанием будешь делать?
Использовать только те числа, что в степени двойки красиво вписываются?
Первый же корень разрушит стройную картину мира.
Хочешь мегаточности — используй fractional представление чисел.
Любой double — это приблизительное представление, и только в некоторых частных случаях для некоторых чисел — точное. Которое во время вычислений очень быстро превращается опять таки в приблизительное.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Вопрос на собеседовании
От: Banned by IT  
Дата: 19.08.11 13:01
Оценка:
Здравствуйте, Доктор ТуамОсес, Вы писали:

ДТ>Ну так чо? Народ?

ДТ>Сможете ответить?

Ой та ви какой то детской фигнёй страдаете.
Вот вам кошерный опросник: http://blog.gamedeff.com/?p=64
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[10]: Вопрос на собеседовании
От: Доктор ТуамОсес Гондурас Мой новый проект "ВЕПРЬ-1"
Дата: 19.08.11 13:24
Оценка:
Здравствуйте, Banned by IT, Вы писали:

BBI>Здравствуйте, Доктор ТуамОсес, Вы писали:


ДТ>>Вы видимо далёкий от математики человек и Вам никогда не приходилось заниматься мат.моделированием и "численными методами" решения дифференциальных уравнений в частных производных.

BBI>И что ты с этим сакральным знанием будешь делать?
BBI>Использовать только те числа, что в степени двойки красиво вписываются?
BBI>Первый же корень разрушит стройную картину мира.
BBI>Хочешь мегаточности — используй fractional представление чисел.
BBI>Любой double — это приблизительное представление, и только в некоторых частных случаях для некоторых чисел — точное. Которое во время вычислений очень быстро превращается опять таки в приблизительное.

Просто сталкивался, что далёким от реальности супер-мега-гуру программистам
(особенно недоучившимся студентам с повышенным ЧСВ) было впадлу вникать в такие вот
"мелочи"/"ерунду", а потом они долго вылавливали глюки, которые я вычислял "на раз"(R).
Мой новый проект "ВЕПРЬ-1"
Re[4]: Вопрос на собеседовании
От: Доктор ТуамОсес Гондурас Мой новый проект "ВЕПРЬ-1"
Дата: 19.08.11 13:27
Оценка:
Здравствуйте, Banned by IT, Вы писали:

BBI>Здравствуйте, Доктор ТуамОсес, Вы писали:


ДТ>>Ну так чо? Народ?

ДТ>>Сможете ответить?

BBI>Ой та ви какой то детской фигнёй страдаете.

Всегда когда-то начинали с ерунды/фигни.
Даже, ЕНИМП, сам Бил Гейтц начинал с того, что в папашином гараже какую ту фигню клепал
Мой новый проект "ВЕПРЬ-1"
Re[4]: Вопрос на собеседовании
От: shrecher  
Дата: 19.08.11 15:26
Оценка:
Здравствуйте, MaximUN, Вы писали:

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


S>>это уже автор реализации должен решать как обрабатывать входные данные.


MUN>Еще чего. Это должен решать заказчик, в данном случае — интервьювер.


Ну, скажут тебе "предложи свои варианты".
Re[9]: Вопрос на собеседовании
От: -Dm-  
Дата: 20.08.11 04:32
Оценка:
Здравствуйте, Доктор ТуамОсес, Вы писали:

ДТ>Вы видимо далёкий от математики человек и Вам никогда не приходилось заниматься мат.моделированием и "численными методами" решения дифференциальных уравнений в частных производных.


ДТ>Поэтому так и говорите


Не угадали...
Дак реальный пример будет ?
Re: Вопрос на собеседовании
От: THESERG  
Дата: 20.08.11 11:07
Оценка:
вот такое первое в голову приходит:

string Mult (const string &X, const string &Y)
{
  // реализуем алгоритм умножения в столбик
}

string Power( int X, short Y)
{
  // отдельно обрабатываем случаи X <=0 или Y <= 0

  // string x = lexical_cast X - ну вы поняли
  string xOrig (x);

  // возводим x в квадрат, пока суммарная степень x не больше Y
  while ( 2 * PowCount < Y )
  {
    PowCount *= 2;
    x = Mult (x, x);
  }
  
  // добиваем оставшееся
  for ( int i = PowCount; i < Y; i++ )
    x = Mult (x, xOrig);
}


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

S>Как такой вопрос на собеседовании, был задан на позиции C++ разработчика?


S>Написать код на доске для функции:


S>

S>string Power( int X, short Y) // вернуть строчное представление результата X в степени Y 
S>{



S>}

S>
Re[2]: Вопрос на собеседовании
От: shrecher  
Дата: 20.08.11 11:23
Оценка:
Здравствуйте, THESERG, Вы писали:

THE>вот такое первое в голову приходит:


THE>
THE>string Mult (const string &X, const string &Y)
THE>{
THE>  // реализуем алгоритм умножения в столбик
THE>}

THE>


Как я понял, вот этот метод и есть цель вопроса . Но, при этом скорость реализации очевидно важна. Поэтому просто в "столбик" явно не катит. Грубо говоря, требуемый метод такой:

Все большое число записывается ввиде массива целых предстваленных в FFFFFFF-ичной системе.
когда умножаем x на y, где x y int, записываем результат в int64. Если результат меньше размерности int, то его и использем, а если больше, то делим его на 2 int-a. Все это дописываем в наш массив. Когда все перемножили преобразуем массив в строку.

Вся эта муть выглядит как странно для собеседования.
Re[3]: Вопрос на собеседовании
От: THESERG  
Дата: 20.08.11 11:36
Оценка:
я бы не парился и перемножал десятичные цифры, тогда можно за минут 40 изобразить ужасного качества код
(на листочке бумаги, я так понимаю?)

нужны отдельные функции (если времени не хватит, можно их не писать, оставить только объявления типа...):
string Sum (const string &V1, const string &V2); // сложение
void Shift (string &V, signed int N); // сдвиг влево/вправо на N позиций
string Mult (const string &V, char D); // умножение числа V на число D (0<=D<=9)


всё это нарисовать и спросить, реализацию чего Вы бы хотели, чтоб я написал
Re[4]: Вопрос на собеседовании
От: shrecher  
Дата: 20.08.11 11:54
Оценка:
Здравствуйте, THESERG, Вы писали:

THE>всё это нарисовать и спросить, реализацию чего Вы бы хотели, чтоб я написал


Я-то не хочу Я как раз удивлен странностью вопроса. Конечно, интервьюер может спрашивать все что они хочет, но все-таки ... Это достаточно редкая область программирования, она уже существует в готовых библиотеках и это не профильная задача на набираемую позицию. Видать уже ответы на вопрос про виртуальный деструктор народ выучил, лавки пошли осваивать новые ниши.
Re[5]: Вопрос на собеседовании
От: THESERG  
Дата: 20.08.11 13:02
Оценка:
я говорю, изобразить на листочке эти вспомогательные функции, и дать их интервьюверу

если он одобрит план, то можно и не успеть с реализацией — всё равно решение как-бы есть

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