Это, на мой взгляд, просто пример неуместного использования деструктуринга, строка получилась очень длинной и плохо читаемой, при этом вариант settings.display.color гораздо читабельнее в данном случае.
Но это не потому что деструктуринг плох, а потому что надо в меру фичи использовать.
То же можно сказать и про [...array1, ...array2, ...array3]. Лучше бы + починили (ну или какой-нибудь ++ добавили), если concat не нравится.
Для всей страны ваша выборка очевидно совсем нерепрезентативна, иначе можно было бы выборы только в одной Москве проводить.
Для Москвы частично репрезентативна, и в принципе не так уж сильно отличается от итоговых результатов по Москве:
Я имел в виду по кол-ву проголосовавших избирателей, на его основе ведь проценты по участку считают.
P.S. Спасибо за инфу о размерах УИК… Получается, что для конкретного участка кол-во проголосовавших в среднем около 500 человек. Это достаточно небольшое число, что вкупе с дискретностью и округлением процентов уже объясняет наличие линий.
отдаете себе отчет в том, что реальные задачи типа «форма с тремя полями» уже давно перестали быть задачами
Вы утрируете. Всегда можно взять что-то нетривиальное из прошлых задач по проекту.
Реальные задачи как раз не имеют четких формулировок, зачастую даже входных условий, и больше всего похожи на «пойди туда не знаю куда, принеси то, не знаю что»
Это Вы уже задачи тимлида или архитектора описываете. Для программистов почти никогда не стоит вопрос "что надо сделать?" (архитектура), максимум остаётся вопрос "как это сделать?" (детали реализации)
Ещё одно подтверждение того, что люди плохо справляются с генерацией случайных чисел?
Хотя для большей достоверности было бы круто яркость/прозрачность точек регулировать в зависимости от количества избирателей на участке.
Но тогда неясно, с какой целью эта задача задается прикладным программистам и даже тестировщикам.
На этот вопрос у меня уже нет ответа… Имхо, тестовые задачки должны быть приближены к реальным задачам, которые должен решать соискатель после трудоустройства.
Т.е. если я хочу узнать знает ли претендент про xor, логичнее будет спросить про битовые маски (относительно часто применяются на практике).
есть ли такая же уверенность, что такой же результат будет для C#, Java, и тем более различных вебовских языков?
Ну, у виртуальных машин свои регистры или стек. Но в целом результат должен быть аналогичен. А то Вы описали настолько неоптимальную реализацию компилятора, что сложно поверить, что такое вообще возможно.
Вот для примера результат варианта с ± на C#:
Как видите, на уровне виртуальной машины остаётся только 2 переменных, она сама определяет, что числа влезут в int32, ну и работает со стеком вместо регистров eax, ebx, но это неизбежно для стековой виртуальной машины.
Все это я к чему. Про эту задачу я слышу не первый раз, и она мне кажется очень некорректной.
Я бы её скорее назвал неуместной для собеседований, за редким исключением. А в плане корректности тут вроде всё ok.
P.S. Кстати, раз уж вспомнили о языковом разнообразии, то в некоторых языках легко поменять местами переменные любого типа, примерно так:
что через сложение и обход переполнения буфера, что через xor-ы
Через xor-ы не будет переполнения буфера, в "худшем" случае результатом xor будет INT_MAX. Но в целом согласен, что для собеседования эта задача подходит только если позиция связана с системным программированием или с микроконтроллерами.
Разработчика нужно проверять, понимает ли он, как математика «ложится» на устройство компьютера, а не проверять на саму математику.
В таком случае Вы должны были бы использовать xor, т.к. с точки зрения ассемблера это наиболее логичное решение данной задачи:
b = a ^ b
a = a ^ b
b = a ^ b
А вариант со сложением приведёт к переполнению, это Вы правильно догадались.
Мне одному кажется, что в случае, когда мы используем не явно объявленный буфер, а вариант со сложением вычитанием, в памяти создается аж 3 (три) временных переменных (результатов сложения и вычитания), которые потом записываются в переменные, которые нами объявлены явно.
Вам кажется. Если не лень написать на C и дизаcсемблировать результат, то можете убедиться, что одни и те же регистры процессора будут использоваться вместо a и b.
Вы уже 3,5 года как не правы. См. главу 49.1 ТК РФ. Так что у вашего работодателя возможно желания не было, а юридическая возможность легально работать удаленно вполне себе есть.
Хотя по-большому счёту в ассемблере в большинстве случаев можно было бы просто работать с
eaxкак сb, а cebxкак сaбез всяких xor'ов.Формально да, но по факту то вся оставшаяся часть функции работала бы с eax и edx. Т.е. я подразумевал такой вариант:
P.S. Про 9 пересылок вообще не понял, что Вы имели в виду...
Это, на мой взгляд, просто пример неуместного использования деструктуринга, строка получилась очень длинной и плохо читаемой, при этом вариант
settings.display.colorгораздо читабельнее в данном случае.Но это не потому что деструктуринг плох, а потому что надо в меру фичи использовать.
То же можно сказать и про
[...array1, ...array2, ...array3]. Лучше бы+починили (ну или какой-нибудь++добавили), еслиconcatне нравится.Для Москвы частично репрезентативна, и в принципе не так уж сильно отличается от итоговых результатов по Москве:
А у вас списки по номерам квартир что-ли были? Обычно по алфавиту по ФИО.
Я имел в виду по кол-ву проголосовавших избирателей, на его основе ведь проценты по участку считают.
P.S. Спасибо за инфу о размерах УИК… Получается, что для конкретного участка кол-во проголосовавших в среднем около 500 человек. Это достаточно небольшое число, что вкупе с дискретностью и округлением процентов уже объясняет наличие линий.
Именно поэтому я их (архитектуру и детали реализации) и разнёс по разным пунктам )))
Или Вы xor vs temp var тоже в архитектуру записали?
Лучше по количеству избирателей участки разделять:
от 0 до 100, от 100 до 1000, от 1000 до 5000, от 5000 до 10000, более 10000.
А то ведь и в мегаполисе может быть участок, на котором меньше 1000 избирателей.
Да, SaaS.
понятно )
Вы утрируете. Всегда можно взять что-то нетривиальное из прошлых задач по проекту.
Это Вы уже задачи тимлида или архитектора описываете. Для программистов почти никогда не стоит вопрос "что надо сделать?" (архитектура), максимум остаётся вопрос "как это сделать?" (детали реализации)
А LucidChart не пробовали?
Ещё одно подтверждение того, что люди плохо справляются с генерацией случайных чисел?
Хотя для большей достоверности было бы круто яркость/прозрачность точек регулировать в зависимости от количества избирателей на участке.
На этот вопрос у меня уже нет ответа… Имхо, тестовые задачки должны быть приближены к реальным задачам, которые должен решать соискатель после трудоустройства.
Т.е. если я хочу узнать знает ли претендент про xor, логичнее будет спросить про битовые маски (относительно часто применяются на практике).
упс, неправильно интерпретировал Вашу формулировку..
Ну, у виртуальных машин свои регистры или стек. Но в целом результат должен быть аналогичен. А то Вы описали настолько неоптимальную реализацию компилятора, что сложно поверить, что такое вообще возможно.
Вот для примера результат варианта с ± на C#:
Как видите, на уровне виртуальной машины остаётся только 2 переменных, она сама определяет, что числа влезут в int32, ну и работает со стеком вместо регистров eax, ebx, но это неизбежно для стековой виртуальной машины.
Я бы её скорее назвал неуместной для собеседований, за редким исключением. А в плане корректности тут вроде всё ok.
P.S. Кстати, раз уж вспомнили о языковом разнообразии, то в некоторых языках легко поменять местами переменные любого типа, примерно так:
Через xor-ы не будет переполнения буфера, в "худшем" случае результатом xor будет INT_MAX. Но в целом согласен, что для собеседования эта задача подходит только если позиция связана с системным программированием или с микроконтроллерами.
В таком случае Вы должны были бы использовать xor, т.к. с точки зрения ассемблера это наиболее логичное решение данной задачи:
А вариант со сложением приведёт к переполнению, это Вы правильно догадались.
Вам кажется. Если не лень написать на C и дизаcсемблировать результат, то можете убедиться, что одни и те же регистры процессора будут использоваться вместо a и b.