Ваше решение на самом деле классное, т.к. более компактное по сравнению с кодом, который дан в конце заметки.
Простите, что придираюсь по мелочам, но зачем вы используете такую конструкцию:
for(int a=0,b=N-1;a<b;) {...}
вместо
int a=0,b=N-1;
while(a<b) {...}
Она же фактически не сильно добавляет компактности, зато код становится чуть менее наглядным, т.к. используется конструкция for без инкремента, то есть фактически там, где должен был использоваться более канонический (для этого случая) while. Нет?
Ну или в ряд раскладывать, но это ничем не лучше, чем разложить в ряд синус и проинтегрировать его. Или косинус считать через известный уже ряд
В том-то и проблема, что если разложить в ряд синус, а потом проинтегрировать, то получится ряд для минус косинуса, я об этом писал. Как вы будете еще считать без применения косинуса? Можете показать решение?
Решение с экспонентами нельзя использовать, на мой взгляд. Как подсчитать exp(i*Pi)?
Здесь вопрос, что именно имел в виду интервьюер. Может он хотел, чтобы в самом решении не использовалось написание cos нигде? Тогда такой вариант пройдет, т.к. мы полагаем exp(i*Pi)=-1 известным фактом и не проверяем, как он был получен.
В принципе, верно, можно было бы ответить, что вычислить предложенный интеграл от синуса совсем без применения косинуса не удастся, т.к. сам синус — это фактически сдвинутый на Pi/2 косинус.
Я об этом сразу даже не подумал, хотя это лежало на поверхности.
Но если верный ответ предусматривал именно это решение, то это сродни задачке «А и Б сидели на трубе».
Мое мнение:
Бумага нужна не только для промежуточных вычислений (хотя это самое важное, безусловно).
Бумага с ручкой также позволяет вспомнить то, что вы давно помнили, но забыли.
Когда вы нарисуете что-то (даже график того же синуса, круг, на котором изображен угол, радиус, Pi, или даже само изображение SIN), может, извлечение информации, относящейся к этой области данных из долговременной памяти происходит быстрее и легче, чем если вы только подумаете об этом.
Так как, возможно, какие-то ассоциации начнут проявлять свою активность, если на вход подан зрительный образ.
В этом исследовании представлены данные опросов студентов и программистов, но было бы интересно увидеть третье исследование: а как построен рабочий день в реальности (а не по мнению программиста).
Здесь дело, как мне кажется, вот в чем.
Даже если опрос анонимный, а также программисты не видели ответы своих коллег, человеку может казаться (например), что некоторыми делами он занимается больше времени, чем в реальности, а некоторыми меньше. Это может зависеть от того, насколько он положительно или отрицательно относится к этим делам, насколько его окружение (и работодатель) положительно или отрицательно относится к этим вещам и т.п.
Например, сотрудник может сознательно или подсознательно занижать время, которое он тратит на всяких посторонних сайтах, в соцсетях, т.к. работодатель это в целом не одобряет (если это больше некоторого условно допустимого минимума).
Я не утверждаю, что получатся совсем другие цифры, но некоторые любопытные отличия могли бы быть выявлены.
— Назовите число, в два раза большее минус единицы
Прикольная задачка!
Решение, на мой взгляд, выглядит следующим образом:
пусть А — искомое число, тогда должно одновременно выполняться два условия:
1) А>-1 ( т.к. А больше -1)
2) А=(-1)*2 (т.к. А в точности равно удвоенному значению -1)
Из этих двух условий вытекает противоречие: -2>-1
Отсюда я бы лично сделал вывод, что отношения вида «X в N раз больше Y» для случая, если любое из чисел X или Y отрицательно, а N положительно, некорректны, во всяком случае, если мы работаем в обычной арифметике.
Проблема здесь в том, что ваше предложение содержит сразу два различных условия, которые в случае отрицательных чисел являются взаимно противоречивыми.
С другой стороны, для положительных чисел эти два условия они являются избыточными (можно оставить только условие A=2*B).
Чтобы не было противоречия, я бы порекомендовал говорить просто «назовите число, которое равно удвоенному значению -1»
(слегка придираюсь):
по-моему, вы переменные перепутали в первой замене (на результате при этом это не сказалось):
u=sin(x) => du/dx=cos(x), а не 1/sqrt(1-x^2), как у вас в первой строчке
на самом деле, наверное, должно быть так:
du/dx=cos(x)=>dx=du/cos(x)=du/sqrt(1-sin^2(x))=du/sqrt(1-u^2)
Тонкий вопрос связан с тем, что вы фактически все равно используете в промежуточных вычислениях (в выводе конечной формулы) косинус, когда вы говорите «я бы представил косинус как...»
Вы, конечно, можете его не упоминать и пропустить этот элемент в цепочке, но я не уверен, что про результат можно сказать, что он получен вообще без использования косинуса.
Что вообще такое отрезок?
Правильно ли определить отрезок так, что это множество точек с двумя выделенными точками А и B, такими, что для любой другой точки C из этого множества неравенство треугольника обращается в строгое равенство, то есть:
d(A,B)=d(A,C)+d(C,B)
Любой отрезок в L2 остаётся подмножеством отрезка и в «многоугольных» метриках.
Да, вот примерно это я и хотел узнать, т.к. дальнейшие рассуждения примерно понятны.
Ведь только в определенных случаях (а именно, в случаях отрезка) мы можем вычислить длину кривой (в нашем случае — отрезка) как расстояние между его крайними точками. Так?
Мне просто было интересно, не может ли произойти такого, что при переходе из одной метрики в другую отрезки в первой метрике перестают быть отрезками во второй метрике?
Кстати, что такое «отрезок» или «прямая» в произвольном метрическом пр-ве? Это же понятие не всегда будет определено? В отличие, скажем, от шара или сферы?
Можно уточняющий вопрос?
Как вы в таком пространстве считаете длину окружности (т.е. фактически шестиугольника)?
То есть как нам получить, что длина одной стороны этого шестиугольного круга равна R?
Мне понятно, как посчитать расстояние от одной точки до любой другой, распространив вашу формулу следующим образом:
dist((x1,y1),(x2,y2))=max(|x1-x2|+|y1-y2|/sqrt(3),|y1-y2|*2/sqrt(3))
Но как посчитать длину кривой в этой метрике?
Да, это прямые в метрике R2 и там все было бы понятно, но у нас-то другая метрика.
Хорошее решение. Вроде ошибка в знаке в нижней строчке, но это несущественно (придирка).
Только не все вспомнят (или успеют вывести) производную арксинуса на собеседовании, особенно, без бумажки.
Главное, не перейти ту грань, за которой уже начинается шарлатанство и мошенничество.
Вот наглядный пример из жизни (№1 и №2), как ходят и показывают «плохое» качество воды, чтобы убедить людей устанавливать системы очистки воды.
Здравствуйте!
Простите, не совсем понял ваше решение про интеграл без косинуса.
Можете его расписать чуть подробнее (т.е. шаг от выражения dl*sin(a) до уже интегральной формулы)?
Идею я вашу понял, но у меня получается иначе:
Чтобы вычислить длину диаметра d, параметризуем его через угол a:
x(a)=cos(a), y(a)=0; a принимает значения от 0 до Pi,
тогда d=интеграл от 0 до Pi sqrt(((cos'(a))^2)) da=интеграл от 0 до Pi sqrt(((sin(a))^2) da = интеграл от 0 до Pi sin(a) da
использовал формулу для вычисления длины параметризованной кривой отсюда
Отсюда 2=интеграл от 0 до Pi sin(a) da
Но! Здесь проблема в том, что cos фигурирует в промежуточных вычислениях.
По п.п. 1 и 2:
Где вы у меня увидели «черный список работодателей»?
Покажите точную цитату, пожалуйста.
Я нигде не говорил, что это плохая компания.
Более того, я так не думаю ни до, ни после собеседования.
Я не исключаю для себя возможности в будущем рассмотреть какие-то другие вакансии этой компании.
так не будем же опускаться до уровня А, публично комментируя чье-то поведение
Вас никто не просит комментировать чье-то поведение, если вам это неприятно.
Комментируйте содержание собеседования (задачки), если вам интересно.
У меня больше половины топика посвящены именно задачкам и ходу их решения, а не описанию чьего-либо поведения.
Выше было показано, насколько глубокий анализ может быть сделан.
И несколько людей его сделали, за что им большое спасибо!
Если вам есть что сказать — скажите.
За ссылку выше — спасибо.
Простите, что придираюсь по мелочам, но зачем вы используете такую конструкцию:
вместо
Она же фактически не сильно добавляет компактности, зато код становится чуть менее наглядным, т.к. используется конструкция for без инкремента, то есть фактически там, где должен был использоваться более канонический (для этого случая) while. Нет?
Микрофильм или фото что ли?
На бумажный носитель не похоже (как мне кажется).
интересное решение без косинуса, посмотрите.
В том-то и проблема, что если разложить в ряд синус, а потом проинтегрировать, то получится ряд для минус косинуса, я об этом писал. Как вы будете еще считать без применения косинуса? Можете показать решение?
Здесь вопрос, что именно имел в виду интервьюер. Может он хотел, чтобы в самом решении не использовалось написание cos нигде? Тогда такой вариант пройдет, т.к. мы полагаем exp(i*Pi)=-1 известным фактом и не проверяем, как он был получен.
P.S. А как бы вы сами стали решать это задачу?
Я об этом сразу даже не подумал, хотя это лежало на поверхности.
Но если верный ответ предусматривал именно это решение, то это сродни задачке «А и Б сидели на трубе».
Бумага нужна не только для промежуточных вычислений (хотя это самое важное, безусловно).
Бумага с ручкой также позволяет вспомнить то, что вы давно помнили, но забыли.
Когда вы нарисуете что-то (даже график того же синуса, круг, на котором изображен угол, радиус, Pi, или даже само изображение SIN), может, извлечение информации, относящейся к этой области данных из долговременной памяти происходит быстрее и легче, чем если вы только подумаете об этом.
Так как, возможно, какие-то ассоциации начнут проявлять свою активность, если на вход подан зрительный образ.
P.S. не претендую на научность.
Здесь дело, как мне кажется, вот в чем.
Даже если опрос анонимный, а также программисты не видели ответы своих коллег, человеку может казаться (например), что некоторыми делами он занимается больше времени, чем в реальности, а некоторыми меньше. Это может зависеть от того, насколько он положительно или отрицательно относится к этим делам, насколько его окружение (и работодатель) положительно или отрицательно относится к этим вещам и т.п.
Например, сотрудник может сознательно или подсознательно занижать время, которое он тратит на всяких посторонних сайтах, в соцсетях, т.к. работодатель это в целом не одобряет (если это больше некоторого условно допустимого минимума).
Я не утверждаю, что получатся совсем другие цифры, но некоторые любопытные отличия могли бы быть выявлены.
Прикольная задачка!
Решение, на мой взгляд, выглядит следующим образом:
пусть А — искомое число, тогда должно одновременно выполняться два условия:
1) А>-1 ( т.к. А больше -1)
2) А=(-1)*2 (т.к. А в точности равно удвоенному значению -1)
Из этих двух условий вытекает противоречие: -2>-1
Отсюда я бы лично сделал вывод, что отношения вида «X в N раз больше Y» для случая, если любое из чисел X или Y отрицательно, а N положительно, некорректны, во всяком случае, если мы работаем в обычной арифметике.
Проблема здесь в том, что ваше предложение содержит сразу два различных условия, которые в случае отрицательных чисел являются взаимно противоречивыми.
С другой стороны, для положительных чисел эти два условия они являются избыточными (можно оставить только условие A=2*B).
Чтобы не было противоречия, я бы порекомендовал говорить просто «назовите число, которое равно удвоенному значению -1»
по-моему, вы переменные перепутали в первой замене (на результате при этом это не сказалось):
u=sin(x) => du/dx=cos(x), а не 1/sqrt(1-x^2), как у вас в первой строчке
на самом деле, наверное, должно быть так:
du/dx=cos(x)=>dx=du/cos(x)=du/sqrt(1-sin^2(x))=du/sqrt(1-u^2)
Вы, конечно, можете его не упоминать и пропустить этот элемент в цепочке, но я не уверен, что про результат можно сказать, что он получен вообще без использования косинуса.
Правильно ли определить отрезок так, что это множество точек с двумя выделенными точками А и B, такими, что для любой другой точки C из этого множества неравенство треугольника обращается в строгое равенство, то есть:
d(A,B)=d(A,C)+d(C,B)
Да, вот примерно это я и хотел узнать, т.к. дальнейшие рассуждения примерно понятны.
Ведь только в определенных случаях (а именно, в случаях отрезка) мы можем вычислить длину кривой (в нашем случае — отрезка) как расстояние между его крайними точками. Так?
Мне просто было интересно, не может ли произойти такого, что при переходе из одной метрики в другую отрезки в первой метрике перестают быть отрезками во второй метрике?
Кстати, что такое «отрезок» или «прямая» в произвольном метрическом пр-ве? Это же понятие не всегда будет определено? В отличие, скажем, от шара или сферы?
Как вы в таком пространстве считаете длину окружности (т.е. фактически шестиугольника)?
То есть как нам получить, что длина одной стороны этого шестиугольного круга равна R?
Мне понятно, как посчитать расстояние от одной точки до любой другой, распространив вашу формулу следующим образом:
dist((x1,y1),(x2,y2))=max(|x1-x2|+|y1-y2|/sqrt(3),|y1-y2|*2/sqrt(3))
Но как посчитать длину кривой в этой метрике?
Да, это прямые в метрике R2 и там все было бы понятно, но у нас-то другая метрика.
Только не все вспомнят (или успеют вывести) производную арксинуса на собеседовании, особенно, без бумажки.
Вот наглядный пример из жизни (№1 и №2), как ходят и показывают «плохое» качество воды, чтобы убедить людей устанавливать системы очистки воды.
Простите, не совсем понял ваше решение про интеграл без косинуса.
Можете его расписать чуть подробнее (т.е. шаг от выражения dl*sin(a) до уже интегральной формулы)?
Идею я вашу понял, но у меня получается иначе:
Чтобы вычислить длину диаметра d, параметризуем его через угол a:
x(a)=cos(a), y(a)=0; a принимает значения от 0 до Pi,
тогда d=интеграл от 0 до Pi sqrt(((cos'(a))^2)) da=интеграл от 0 до Pi sqrt(((sin(a))^2) da = интеграл от 0 до Pi sin(a) da
использовал формулу для вычисления длины параметризованной кривой отсюда
Отсюда 2=интеграл от 0 до Pi sin(a) da
Но! Здесь проблема в том, что cos фигурирует в промежуточных вычислениях.
Где вы у меня увидели «черный список работодателей»?
Покажите точную цитату, пожалуйста.
Я нигде не говорил, что это плохая компания.
Более того, я так не думаю ни до, ни после собеседования.
Я не исключаю для себя возможности в будущем рассмотреть какие-то другие вакансии этой компании.
Вас никто не просит комментировать чье-то поведение, если вам это неприятно.
Комментируйте содержание собеседования (задачки), если вам интересно.
У меня больше половины топика посвящены именно задачкам и ходу их решения, а не описанию чьего-либо поведения.
Выше было показано, насколько глубокий анализ может быть сделан.
И несколько людей его сделали, за что им большое спасибо!
Если вам есть что сказать — скажите.
За ссылку выше — спасибо.