Category: работа

satyr

Не заметил слона

Я периодически на досуге стараюсь решать всяческие программистские микро-задачки, на которые набредаю в интернете. Чисто для поддержания минимальной формы, чтобы к icfcp мозг не успел засохнуть.

На этот раз обнаружил вот такую: http://wunderfund.io/dev_job — это типа тестовая задача для вакансии разработчика в какой-то мутной конторе.

Ну я, типа, скачал данные, повозился достаточно продолжительное время с решением (мне вообще туго даются задачки олимпиадного типа, которые решаются через динамическое программирование), расчитал ответ, сабмичу — хуй. Думаю: наверно чё-то упустил в задании. Всё внимательно перечитываю, да нет, вроде всё верно. Рефрешу страницу, перекачиваю данные (мож изменились), пересчитываю заново, сабмичу — опять хуй.

Тут меня уже, надо сказать, одолела злоба. Особенно подбешивало описание задачи в разделе вакансии: "Если ты нам подходишь, решение задачки не составит для тебя труда." :) А тут, получается, что решение для меня составляет труд, и моя кандидатура не подходит на вакансию какого-то рядового плюсового разработчика, например.

Ну ладно. Потратил дополнительное время, нагенерил рандомных небольших тесткейсов и сравнил результаты с эталонами, которые получил из брутфорсной реализации. Всё верно же. Ок, опять рефрешу страницу, сабмичу результат — опять хуй.

Ну ок, в итоге совсем забиваю (и так дофига времени потратил) и, в расстроенных чувствах, ухожу спать.

А сегодня меня мне вдруг в голову пришла мысль. Я её проверил, и мои самые страшные подозрения подтвердились!

Короче, дело было так:

Я скачиваю .csv-шку с сайта и открываю её штатным маковским Numbers. Вижу примерно такое:



Ну хорошо, думаю, мак глупый, хочет в качестве разделителя столбцов точку с запятой согласно локали, а там просто запятая. Ну там данные простые, поэтому я не мучаюсь с форматированием, а просто тупо беру и забиваю в коде в данные всё, что после запятой (типа, второй столбец — 7, 688, 682 и тд).

Сегодня до меня дошло посмотреть в исходник .csv-шки. Оказывается, это нихрена не 7 и 688, а 7000 и 6880 =) А табличный процессор терминирующие нули радостно откусил, потому что, согласно тем же настройкам локали, запятая является разделителем дробной части числа. И "0,7000" оказалось не двумя столбцами с "0" и "7000", а одним столбцом с числом "0.7".

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