$>Дать задание (на программиста), написать функцию подсчёта коэффициента Пирсона, за 15 минут. Гугл не запрещается.
Думаю, не лучший вариант. Если человек в принципе не знает / не помнит, что такое корреляция, то может много (>15 мин) времени потратить на осмысление. А вот если он со статистикой хоть немного работал и вопрос только формулу вспомнить/нагуглить, то там всё сводится к перебору массивов и подсчёту по тупой формуле, которые делаются минут за 5 от силы.
Т.е. само задание вполне норм, как альтернатива стандартным сортировкам/инвертированиям, но может давать много ложноотрицательных срабатываний для людей "не в теме".
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Здравствуйте, Александр Кузнецов, Вы писали:
АК>$>Дать задание (на программиста), написать функцию подсчёта коэффициента Пирсона, за 15 минут. Гугл не запрещается.
АК>Думаю, не лучший вариант. Если человек в принципе не знает / не помнит, что такое корреляция, то может много (>15 мин) времени потратить на осмысление. А вот если он со статистикой хоть немного работал и вопрос только формулу вспомнить/нагуглить, то там всё сводится к перебору массивов и подсчёту по тупой формуле, которые делаются минут за 5 от силы.
АК>Т.е. само задание вполне норм, как альтернатива стандартным сортировкам/инвертированиям, но может давать много ложноотрицательных срабатываний для людей "не в теме".
Мне тут напомнили, что в зафакапленном тесте был в том числе коэффициент Пирсона. Которого я гуглил, пытался понять и в итоге время вышло.
$>Дать задание (на программиста), написать функцию подсчёта коэффициента Пирсона, за 15 минут. Гугл не запрещается.
Там будет столько нюансов с погрешностями что ты или проверишь только навыки гугления, или пройдёт человек который писал этот код прямо вчера. А тот кто мог бы хорошо работать и понимает где разложены грабли, но не так быстро гуглит — потратит эти 15 минут на весёлый отзыв на eb#noe.it после чего вежливо попрощается
Здравствуйте, hi_octane, Вы писали:
_>$>Дать задание (на программиста), написать функцию подсчёта коэффициента Пирсона, за 15 минут. Гугл не запрещается. _>Там будет столько нюансов с погрешностями что ты или проверишь только навыки гугления, или пройдёт человек который писал этот код прямо вчера. А тот кто мог бы хорошо работать и понимает где разложены грабли, но не так быстро гуглит — потратит эти 15 минут на весёлый отзыв на eb#noe.it после чего вежливо попрощается
Это было 1.5 года назад примерно. Та контора не ответила. Потом, через 6 мес, мы пересеклись на митапе, и тогда они прислали имейл с отказом.
Насчёт погрешностей, там переполнение будет, и я даже это учёл. Но не уложился в срок.
$>Дать задание (на программиста), написать функцию подсчёта коэффициента Пирсона, за 15 минут. Гугл не запрещается.
Если это нужно, то почему бы и нет? Либо если есть некое приближённое решение этой задачи которое всем очевидно и входит в базовые стандарты программиста на эту дожность.
Я бы спрашивал что-то более знакомое и близкое к работе.
Мы например очень много используем linq на проекте, я даю задачку на linq на пару строчек кода — половина кандидатов не решает
$>Дать задание (на программиста), написать функцию подсчёта коэффициента Пирсона, за 15 минут. Гугл не запрещается.
Оно ?
На гугление минуты 2. На осмысление столько же. На написание кода 10 хватит.
Но код будет просто в условном блокноте. Без единого запуска, без отладки, даже без проверки валидности синтаксиса. ИМХО этого и так вполне достаточно.
Потому что разбираться с вашим компом/окружением наверняка придётся дольше этих 15 минут.
Здравствуйте, IID, Вы писали:
IID>$>Дать задание (на программиста), написать функцию подсчёта коэффициента Пирсона, за 15 минут. Гугл не запрещается.
IID>Image: image401.gif
IID>Image: xy.gif
IID>Оно ? IID>На гугление минуты 2. На осмысление столько же. На написание кода 10 хватит. IID>Но код будет просто в условном блокноте. Без единого запуска, без отладки, даже без проверки валидности синтаксиса. ИМХО этого и так вполне достаточно.
Сделать нужно в хакерранке, чтобы прошло скрытые тесты. Про переполнение сумм надо напоминать?
$>Меня в соседней ветке обвиняют, что подло просил писать на доске переворот строки. Типа это же не этично не продиктовать детальное решение.
Именно подло? Не бессмысленно, а именно подло?
Здравствуйте, aik, Вы писали:
aik>откуда это в питоне внезапно переполнения?
Пример на пальцах: подсчёт среднего sum(A)/n даст переполнение при специально подобранных данных.
В случае с этим коэф Пирсона, там помимо среднего, ещё другие вещи.
Здравствуйте, IID, Вы писали:
IID>Прежде чем делать подобные заявления, неплохо бы определиться с языком и типом данных.
Ты как не делал задачек на сайтах типа хакерранка. Там на выбор пачка языков. Решение тестируется на нескольких наборах входных данных- от простого до более сложных. И таким образом, наивные, медленные и просто некорректные решения отсекаются.
Здравствуйте, Sharov, Вы писали:
S>А их там не бывает? Как оне хранят целочисленные величины, BigInteger какой-нибудь?
Расчет разве должен быть в целочисленных?
Здравствуйте, Sharov, Вы писали:
aik>>откуда это в питоне внезапно переполнения? S>А их там не бывает? Как оне хранят целочисленные величины, BigInteger какой-нибудь?
"Integers have unlimited precision. Floating point numbers are usually implemented using double in C; information about the precision and internal representation of floating point numbers for the machine on which your program is running is available in sys.float_info". Я без понятия надо ли там double, правда. На моем лаптопе выдает:
M>кто понял при чем тут этика?
На почту пришел ответ от анонима
Это полный отстой, какие чмошники, как вы, присутствуют на этом сайте. Просто ужас.
Собеседование — это не экзамен. Вы не имеете никакого права рас поряжаться временем других и заставлять их делать работу на собеседовании.
Или вы по крайней мере должны принять равные условия, и собеседуемый также иожет вам дать задачу на 15 минут по своему усмотрению, и если вы не справитесь, то фирма, где вы работаете, гарантирует, что вас незамедлительно уволят.
Только тогда можно говорить об этике. А иначе вы — просто ХАМЛО.
Здравствуйте, pagid, Вы писали:
S>>А их там не бывает? Как оне хранят целочисленные величины, BigInteger какой-нибудь? P>Расчет разве должен быть в целочисленных?
M>На почту пришел ответ от анонима M>Собеседование — это не экзамен. Вы не имеете никакого права рас поряжаться временем других и заставлять их делать работу на собеседовании.
Собеседование — дело добровольное. Никто никого не заставляет.
M>Или вы по крайней мере должны принять равные условия,
нет, не должны M>и собеседуемый также иожет вам дать задачу на 15 минут по своему усмотрению,
может, но я таких собеседуемых не встречал M>и если вы не справитесь, то фирма, где вы работаете, гарантирует, что вас незамедлительно уволят.
нет
M>Только тогда можно говорить об этике. А иначе вы — просто ХАМЛО.
кто понял при чем тут этика?
"Собеседование — дело добровольное. Никто никого не заставляет."
У вас проблемы с морально-нравственным воспитанием.
То, что собеседование — дело добровольное, совершенно не означает, что вы (и почему, спрашивается, только вы, а не тот, которого вы собеседуете) может вести себя по-хамски.
Представьте ситуацию. Тот, которого вы собеседуете сходу задает вам задание, которое ему лично пришло в голову, и просит вас сделать его за 15 минут. Это чтобы оценить, достойны ли вы его собеседовать или нет.
Спрсите сами себя: вы для этого пришли собеседовать человека, чтобы он вас принуждал делать задания, которые еиу, как говорится, втюрились в голову? И позволите ли вы себе, чтобы вами манипулировали и принуждали делать совершенно вам не интересные задания?
Человек может прийти на собеседование со "светлой головой", когда его голова забита определенной проблемрй, и он не в состоянии переключиться в данный момент на другую проблему.
Еще раз повторяю, что собеседование — это не экзамен. Это уважительное общение двух равноправных собеседников. Ни вы ему не делаете отдолжение, ни он вам не делает отдолжение.
А в вашем разумении вы считаете. что вы делаете отдолжение, а тот, кто пришел на собеседование, вам что-то там (как в меру своего хамства) вы думаете.
Это типичное поведение низкоквалифицированных программистов: просить на собеседовании делать других то, что о чем они сами, как говорится, на днях узнали, и что может быть совершенно не интесно собеседующему.
И это только низкоквалифицированные программисты, типа $$, которые сразу же виляют хвостиком, преданно смотрят в глаза собеседующего и спешат выполнить любую его прихоть.
Квалифицированный программист на собеседовании и пальцем не пошевельнет, если его попросят написать какую-то программу, которая приспичила в голову тому. кто его собеседует. Мало ли что придет в голову тому, кто собеседует? Дураков, как показывает форум rsdn, очень много. На этом форум не меньше 90% интеллектуально и духовно не развиты.
Я, например, на Stackoverflow за день рещаю по несколько задач для других программистов. Но я это делаю не по принуждению, а потому, что какое-то задание мне лично интересно и привлекло мое внимание.
Бывают простые задания, но в силу того, что голова забиты мыслями о жругой проблеме, я не могу сосредоточиться на задании. И это естественно. В этом нет ничего плохого.
Вот как раз вчера и сегодня я отвечал на просьбы других программистов помочь им с их заданиями.
Например, https://stackoverflow.com/questions/57109484/string-traversal-using-pointers/57109768#57109768
или https://stackoverflow.com/questions/57098974/how-to-sort-an-array-of-struct-in-c/57099062#57099062
или https://stackoverflow.com/questions/57078643/what-is-the-point-of-a-constraint-expression-on-a-non-templated-function/57078763#57078763
С какой стати я перед очередным чмошником на собеседовании булу выполнять реверансы?!!
Он не в состоянии оценить мою квалификацию? Так это его проблемы!
У меня в юности был доцент, преподаватель высшей математики в институте. Так он говорил, что ему достаточно первых двух фраз отвечающего студента на экзамене, чтобы понять его квалификацию.
Так же и мне достаточно прочитать пару ваших здесь комментариев, чтобы понять, что вы в программировании — НИКТО, и злвут вас НИКАК.
-------------------------------------------------------
Надеюсь, вам хватит смелости опубликовать мой комментарий.
Продолжаем разговор с копипастой
M>То, что собеседование — дело добровольное, совершенно не означает, что вы (и почему, спрашивается, только вы, а не тот, которого вы собеседуете) может вести себя по-хамски.
У тебя, видимо, какое-то свое отдельное понимание термина "хамство", от того и весь остальной текст оказывается не в тему.
Уточни в словаре общепринятое определение.
M>Представьте ситуацию. Тот, которого вы собеседуете сходу задает вам задание, которое ему лично пришло в голову, и просит вас сделать его за 15 минут. Это чтобы оценить, достойны ли вы его собеседовать или нет.
Представил. M>Спрсите сами себя: вы для этого пришли собеседовать человека, чтобы он вас принуждал делать задания, которые еиу, как говорится, втюрились в голову? И позволите ли вы себе, чтобы вами манипулировали и принуждали делать совершенно вам не интересные задания?
Собеседование — дело добровольное. Никто никого ни к чему не принуждает.
Здравствуйте, Sharov, Вы писали:
S>Нет, я про пример переполнения.
При желании на тестовых данных можно организовать и переполнение double. Вот только нужно при выполнении задания на 15 мин это учитывать
"У тебя, видимо, какое-то свое отдельное понимание термина "хамство", от того и весь остальной текст оказывается не в тему.
Уточни в словаре общепринятое определение."
Это равносильно тому, что вас приглашают в гости (на собеседования приглашают, не так ли?) и с порога заявляют: "А, ну-ка, сбегай мне за пивом. Да, и не за "Балтикой"Ю я его не люблю, а за (некоим) импортным. А не справишься за 15 минут, то пошел вон отсюда!"
Какая будетт реакция нормального человека (я не имею в виду $$, этот-то побежит, не задумываясь)?
Он либо подумает, либо скажет в глаза: "Сам беши за пивом!"
В результате вы просто потратили время того, кого пригласили. Это явное не уважение к человеку, и является самым обычным хамством.
А причина этого хамства очень банальная. Почему-то все ограниченные люди думают, что к ним на собеседование приходят с протянутой руокй. А потому можно с ними не считаться.
На самом деле, как я уже написал, вы равноправны. М к вам приходят не с протянутой руокй, а вы ищите специалистов. Со специалистами надо вести себя уважительно.
Даже ясли кандидат может ошибаться, что он является высококвалифицированным специалистом, с ним так вести себя нельзя.
Извините. если я вас обидел.
Здравствуйте, Muxa, Вы писали:
M>Сообщение послано от пользователя Аноним.
Кстати, не исключено, что никакого Анонима и нет. Ты его придумал, чтобы постить некоторые мысли и не компрометировать себя, а второй аккаунт заводить не хочется.
M>Это равносильно тому, что вас приглашают в гости
Нет, не равносильно.
Ну вот, снова допустил ошибку в самом начале из-за чего дальнейшие выводы превращаются в бред.
M>На самом деле, как я уже написал, вы равноправны.
Да, но не во всём.
Пример: у меня есть пропуск в офис, и я могу свободно заходить-выходить.
Собеседуемый как правило таких прав не имеет.
Лютейщее неравноправие налицо.
M>М к вам приходят не с протянутой руокй, а вы ищите специалистов. Со специалистами надо вести себя уважительно.
Тебе видимо постоянно не везет с неадекватными работодателями, они не все такие.
N>Кстати, не исключено, что никакого Анонима и нет. Ты его придумал, чтобы постить некоторые мысли и не компрометировать себя, а второй аккаунт заводить не хочется.
Кстати, ни доказать, ни опровергнуть, ни я, ни ты это не можем. Только админы.
Вообще-то, мы с тобой знакомы лично.
Хотя ты может и не знать что этот аккаунт мой, но мог и догадаться по моим сообщениям.
Здравствуйте, Nuzhny, Вы писали:
N>Кстати, не исключено, что никакого Анонима и нет. Ты его придумал, чтобы постить некоторые мысли и не компрометировать себя, а второй аккаунт заводить не хочется.
Пару лет назад, в ентой ветке, тоже мне писал некий аноним, также постил его ответы. На счет выдуманности -- ну не знаю, шиза еще та должна быть.
Здравствуйте, Nuzhny, Вы писали:
M>>Сообщение послано от пользователя Аноним.
N>Кстати, не исключено, что никакого Анонима и нет. Ты его придумал, чтобы постить некоторые мысли и не компрометировать себя, а второй аккаунт заводить не хочется.
Этот аноним узнаваем по стилю, раньше на форуме писал как Сыроежка. Потом на что-то обиделся или его забанили, и теперь он предпочитает писать личные сообщения, правда с надеждой что их опубликуют.
Не знаю, зачем бы Muxa завел второй аккаунт, мне кажется он и так постит не оглядываясь на других.
Здравствуйте, Nuzhny, Вы писали:
N>Здравствуйте, Muxa, Вы писали:
M>>Сообщение послано от пользователя Аноним.
N>Кстати, не исключено, что никакого Анонима и нет. Ты его придумал, чтобы постить некоторые мысли и не компрометировать себя, а второй аккаунт заводить не хочется.
Аноним есть. Мне тоже иногда письма от него приходили и ещё кто-то про него писал. Я Анонима проигнорировал, а Muxa решил с ним пообщаться. Форум уже давно существует, а на старом форуме, как в старом замке, должно быть приведение
GIV>Я их игнорю, смысл? Зачем мне мнение какого-то труса непонятного.
Что трус эт понятно, но мне показалось забавным.
Это не первый раз когда я его сообщения публикую.
Он мне щас пишет чтоб я его сообщения приводил полностью (далее цитата) "иначе другим не понятно, что за бред я несу."
Хотя я только лишние пустые строки удаляю, это конечно немного повышает уровень бреда, но в пределах погрешности.
Здравствуйте, Muxa, Вы писали:
M>Это не первый раз когда я его сообщения публикую.
Не делай так больше.
M>Он мне щас пишет чтоб я его сообщения приводил полностью (далее цитата) "иначе другим не понятно, что за бред я несу."
Если ему хочется нести бред — пусть регистрируется и несёт.
А вот переносчиком говна быть не стоит — обгаживаться будет он а пахнуть будет от тебя.
Здравствуйте, pagid, Вы писали:
P>При желании на тестовых данных можно организовать и переполнение double. Вот только нужно при выполнении задания на 15 мин это учитывать
Задачи на хакерранке хороши тем, что в них чётко оговариваются пределы возможных значений. Конкретно для этой задачи длина не больше 100, числа в выборке от 1 до 500, максимум с одной цифрой после запятой. Какие тут могут быть переполнения? Результат нужен с тремя знаками после запятой, какая тут может быть потеря точности? Ещё и значения координат уникальны, то есть делить на ноль точно не придётся. Народ тупо прикалывается.
Здравствуйте, De-Bill, Вы писали:
DB>Специально поискал на хакерранке эту задачу. Это она https://www.hackerrank.com/challenges/s10-pearson-correlation-coefficient/problem? Зачем гуглить, там же всё написано... Специально зарегался на этом сайте, чтобы посмотреть, вдруг в задаче есть какие-то "секретные" сложности. Вроде нет.
Спасибо, попрактикуюсь.
Я откопал ссылку на хакерранк от той конторы, но ещё раз запустить тест она не позволяет.
Также, закачал с каггла таблицу (csv) на 160мег примерно, чтобы сравниватт результат с numpy.
Если ты про конкретную задачу по ссылке, то там указаны ограничения. Следовательно все приседания со средним заменяются на sum(X)/len(X). Далее через zip и mean пишется функция cov(X, Y). sigmaX соответсвенно корень из cov(X, X) и т.д.
Здравствуйте, De-Bill, Вы писали:
DB>>>https://www.hackerrank.com/challenges/s10-pearson-correlation-coefficient/problem DB>$>1 час минимум потратил, пока оно заработало. Отлаживал в идее.
DB>Если ты про конкретную задачу по ссылке, то там указаны ограничения. Следовательно все приседания со средним заменяются на sum(X)/len(X). Далее через zip и mean пишется функция cov(X, Y). sigmaX соответсвенно корень из cov(X, X) и т.д.
Т.е. решение- говно, потому что переполнения не будет на 500*100? Я правильно уловил мысль?
$>1 час минимум потратил, пока оно заработало. Отлаживал в идее.
Минут 20. В браузере:
# Enter your code here. Read input from STDIN. Print output to STDOUTimport math
def read_input():
n = float(input())
x_arr = [float(x) for x in input().split()]
y_arr = [float(x) for x in input().split()]
return x_arr, y_arr
def mean_std(arr):
n = len(arr)
mean = sum(arr) / n
d = sum([(x-mean)**2 for x in arr]) / n
std = math.sqrt(d)
return mean, std
def pearson(x_arr, y_arr):
mean_x, std_x = mean_std(x_arr)
mean_y, std_y = mean_std(y_arr)
p_numerator = sum([(x-mean_x)*(y-mean_y) for x,y in zip(x_arr,y_arr)])
p_denominator = len(x_arr) * std_x * std_y
return p_numerator / p_denominator
def main():
x_arr, y_arr = read_input()
p = pearson(x_arr, y_arr)
print(f'{p:.3g}')
main()
Здравствуйте, Буравчик, Вы писали:
Б>Здравствуйте, $$, Вы писали:
Б>$>Здравствуйте, De-Bill, Вы писали:
DB>>>$>Сделать нужно в хакерранке, чтобы прошло скрытые тесты. Про переполнение сумм надо напоминать?
DB>>>https://www.hackerrank.com/challenges/s10-pearson-correlation-coefficient/problem
Б>$>1 час минимум потратил, пока оно заработало. Отлаживал в идее.
Б>Минут 20. В браузере:
Б>
Б># Enter your code here. Read input from STDIN. Print output to STDOUT
Б>import math
Б>def read_input():
Б> n = float(input())
Б> x_arr = [float(x) for x in input().split()]
Б> y_arr = [float(x) for x in input().split()]
Б> return x_arr, y_arr
Б>def mean_std(arr):
Б> n = len(arr)
Б> mean = sum(arr) / n
Б> d = sum([(x-mean)**2 for x in arr]) / n
Б> std = math.sqrt(d)
Б> return mean, std
Б>def pearson(x_arr, y_arr):
Б> mean_x, std_x = mean_std(x_arr)
Б> mean_y, std_y = mean_std(y_arr)
Б> p_numerator = sum([(x-mean_x)*(y-mean_y) for x,y in zip(x_arr,y_arr)])
Б> p_denominator = len(x_arr) * std_x * std_y
Б> return p_numerator / p_denominator
Б>def main():
Б> x_arr, y_arr = read_input()
Б> p = pearson(x_arr, y_arr)
Б> print(f'{p:.3g}')
Б>main()
Б>
Здравствуйте, Nuzhny, Вы писали:
N>Сложнее не станет, там в цикле надо считать суму и сумму квадратов. В чём сложность-то?
Код станет совсем не похож на формулы для среднего и для стандартного отклонения.
N>А быстрее станет на констант, что может быть весьма весомо
def mean_std_1(arr):
n = len(arr)
mean = sum(arr) / n
d = sum((x-mean)*(x-mean) for x in arr) / n
std = math.sqrt(d)
return mean, std
def mean_std_2(arr):
n = len(arr)
s1 = 0
s2 = 0
for x in arr:
s1 += x
s2 += x*x
mean = s1 / n
std = math.sqrt(s2 / n - mean*mean)
return mean, std
Второй вариант быстрее первого всего лишь на 10-15% (для arr от 0 до 10_000_000)
Здравствуйте, Буравчик, Вы писали:
Б>С точностью — отлично
На 2+2 отлично. На реальные обсчёты такое нельзя.
Б>$>mean_std — говнокод.
Б>Поясни
Каждая функция должна иметь своё назначение. Функция mean, функция stddev, функция pearson. У тебя получилась логика размазана между.
$>На 2+2 отлично. На реальные обсчёты такое нельзя.
Для данной задачи (hackerrank) — все ок.
$>Каждая функция должна иметь своё назначение. Функция mean, функция stddev, функция pearson. У тебя получилась логика размазана между.
В данной задаче mean и stddev "ходят" вместе. Да и вообще, они часто вместе.
К тому же, это вспомогательная функция для pearson. Я вообще изначально хотел поместить ее внутри pearson.
В общем, не вижу особых проблем в объединении вычисления двух значений.
Наоборот, считаю, что так лучше для данной задачи.
Здравствуйте, Nuzhny, Вы писали
N>Кстати, не исключено, что никакого Анонима и нет. Ты его придумал, чтобы постить некоторые мысли и не компрометировать себя, а второй аккаунт заводить не хочется.
Так как тема про статистику, предлагаю заняться вычислением вероятности этого события
$>Здравствуйте, Буравчик, Вы писали:
Б>>$>mean_std — говнокод.
Нет, это стандартная практика, особенно когда всё вычисляется за один проход.
Б>>Поясни
$>Каждая функция должна иметь своё назначение. Функция mean, функция stddev, функция pearson. У тебя получилась логика размазана между.
Там нет размазанной логики. В том же R так вообще есть функции-комбайны, вычисляющие по 10 значений.
Здравствуйте, Nuzhny, Вы писали:
Б>>>$>mean_std — говнокод.
N>Нет, это стандартная практика,
N> В том же R так вообще есть функции-комбайны, вычисляющие по 10 значений.
Спасибо за предупреждение. Типичный стиль дата-саентиста?
Здравствуйте, Nuzhny, Вы писали:
N>Странно, обычно все формулы для несмещенной оценки. Ну, ладно.
Так это и есть "Naïve algorithm":
# исходный вариант в Naïve algorithm
Var = (SumSq − (Sum × Sum) / n) / n
# раскрываем скобки, получаем
Var = SumSq / n − Sum × Sum / n / n
# заменяем Sum/n на mean
Var = SumSq / n − mean × mean
# ч.т.д.
Здравствуйте, $$, Вы писали:
N>> В том же R так вообще есть функции-комбайны, вычисляющие по 10 значений.
$>Спасибо за предупреждение. Типичный стиль дата-саентиста?
Здравствуйте, $$, Вы писали:
>Спасибо за предупреждение. Типичный стиль дата-саентиста?
В scipy есть функция stats, возвращающая тупл из четырех значений: mean, variance, skewness, kurtosis. В ней даже можно выбрать, какие из значений будут возвращены. Т.е. результатом может быть например кортеж только из двух значений (mean, variance). Для статически типизированных языков звучит страшно, но на практике оказывается удобным, потому что часто приходится получать эти значения вместе.
В scipy есть также функция describe, которая кроме этих четырех значений возвращает дополнительно: количество, минимум и максимум (т.е. возвращает аж 7 значений).
В питоне с туплами работать достаточно удобно, поэтому это не вызывает проблем. Даже наоборот, добавляет удобства, если нужно получить сразу несколько параметров. В общем, в некоторых случаях это нормальная практика.
P.S. Конечно есть и отдельные функции для mean, var и т.д.
Перечитал ещё раз твой код, мой код. Твой считает сразу 2 значения, чтобы не дублировать суммирование. Мой код в stddev ожидает ещё mean, чтобы не дублировать суммирование . Т.е. по факту у меня уже не stddev(X), а полу-фабрикат.
Беру слова обратно. Единственное что, наверное лучше назвать mean_stddev или mean_sd.
Для потокового обсчёта (достраивания на основе предыдущего), наверное можно возвращать (mean, stddev, count), а принимать x, y, prev_mean_sd_count.
Здравствуйте, $$, Вы писали:
>Дать задание (на программиста), написать функцию подсчёта коэффициента Пирсона, за 15 минут. Гугл не запрещается.
Нет, дурь это в общем случае. Но не исключено что именно в этой компании подобные знания критичны
Меня недавно просили расписать (без кода) RAFT или Paxos, по желанию
Здравствуйте, kaa.python, Вы писали:
KP>Здравствуйте, $$, Вы писали:
>>Дать задание (на программиста), написать функцию подсчёта коэффициента Пирсона, за 15 минут. Гугл не запрещается.
KP>Нет, дурь это в общем случае. Но не исключено что именно в этой компании подобные знания критичны KP>Меня недавно просили расписать (без кода) RAFT или Paxos, по желанию
Как ты это оцениваешь? Где спросили (область)?
$>Дать задание (на программиста), написать функцию подсчёта коэффициента Пирсона, за 15 минут. Гугл не запрещается.
Цель собеседования — определить годиться ли вам кандидат, потратив на это минимум ресурсов компании.
Времени мало, методы могут быть самыми разными.
Если будете использовать слишком неприятные методы, то кандидат в итоге откажется, даже если он подходит вам.
А этика тут вообще ни при чем.
Здравствуйте, 0xCAFEDEAD, Вы писали:
KP>>Нет, дурь это в общем случае. Но не исключено что именно в этой компании подобные знания критичны KP>>Меня недавно просили расписать (без кода) RAFT или Paxos, по желанию CAF>Как ты это оцениваешь? Где спросили (область)?
Хороший вопрос, годный и интересный, на который я, к сожалению, не мог ответить. То есть я знал что такое RAFT или Paxos и кратко сказал что за это за звери, но вот более глубокие детали – извините. Спросили в Cloudflare и, в теории, им это может быть действительно важно знать. Так что, может и задача из начала дискуссии не такой уж и бред как кажется на первый взгляд.
$>Дать задание (на программиста), написать функцию подсчёта коэффициента Пирсона, за 15 минут. Гугл не запрещается.
Вполне этично, это же не коэффициент расширения твоего МПХ.
Но — глупо.
Если контора реально нуждается в хороших математиках — то об этом надо указать в вакансии, чтобы потом ни у кого не было ни удивлений ни разочарований.
Если же в конторе математикой не занимаются, то задание выглядит глупо. Непонятно зачем оно. Проверить навык гугления? Или навык гов..ть? (а за 15 мин можно только нагов..ть)
Здравствуйте, Gradiens, Вы писали:
G>Если контора реально нуждается в хороших математиках — то об этом надо указать в вакансии, чтобы потом ни у кого не было ни удивлений ни разочарований. G>Если же в конторе математикой не занимаются, то задание выглядит глупо. Непонятно зачем оно. Проверить навык гугления? Или навык гов..ть? (а за 15 мин можно только нагов..ть)
Занимается статистикой. Мне это интересно. Что мне неинтересно- это заниматься статистикой бесплатно в уикенды- интересно в уикенды отдыхать, а на работе работать интересную работу.
$>Занимается статистикой. Мне это интересно. Что мне неинтересно- это заниматься статистикой бесплатно в уикенды- интересно в уикенды отдыхать, а на работе работать интересную работу.
Когда у взрослого дяди или тети возникает желание начать делать что-то новое за деньги, то этим самым дядям или тетям крайне желательно в выходные начать делать это новое за бесплатно. Очень хорошо помогает потом начать делать тоже самое, но уже за деньги и в рабочие дни. Иначе, только на везение рассчитывать.
Здравствуйте, $$, Вы писали:
>На заре моего программизма, я в том числе кодил эти обсчеты ma, stddev и прочее на плюсах.
У меня есть подозрение, что с тех пор в этой области было крайне много изменений, которые ты мог упустить. Как в моем примере выше, я как-то и не подозревал что в современном мире разработки сетевых приложений уже стоит знать внутренности протоколов консенсуса
$>Занимается статистикой. Мне это интересно. Что мне неинтересно- это заниматься статистикой бесплатно в уикенды- интересно в уикенды отдыхать, а на работе работать интересную работу.
Здесь есть небольшая проблема. В этой области полно людей, готовых бесплатно заниматься и изучать не только в выходные, но ещё и по вечерам.