Люблю решать интересные и сложные задачки

Наткнулся на днях на задачку про программиста и сто дверей:

Перед программистом сто закрытых дверей. Он проходит все двери, столько раз, сколько всего дверей. Если номер двери кратен номеру прохода, то меняет ее состояние: закрытую открывает, а открытую — закрывает. Нужно сказать какие двери останутся открытые.

В самой задаче дано 2 решения, как решали бы математики и как решали бы программисты на питоне. Но программисты там почему-то глупые — не пользуются математическим решением и совсем не думают о быстродействии.

Поэтому стало интересно решить эту задачу на JS, и использовать для ее решения минимальное число операций. Делюсь тем, что получилось ↓

потыкать код

Люблю решать интересные и сложные задачки | Сетка — социальная сеть от hh.ru