Решил попробовать новый формат — пазлы.
range
В некоторых программах часто возникает необходимость получить интерал чисел. В Python есть встроенная функция range, в Scala — красивая синтаксическая конструкция 5 to 14 by 3.
В JavaScript можно сделать нечто подобное. Результат в прикрепленной картинке.
Присылайте свои варианты, как это работает, завтра покажу авторское решение.
#puzzle
range
В некоторых программах часто возникает необходимость получить интерал чисел. В Python есть встроенная функция range, в Scala — красивая синтаксическая конструкция 5 to 14 by 3.
В JavaScript можно сделать нечто подобное. Результат в прикрепленной картинке.
Присылайте свои варианты, как это работает, завтра покажу авторское решение.
#puzzle
range
Мы должны изменить прототип Number, добавить туда функцию-генератор, которая и будет выдавать числа в заданном промежутке.
В целом, код простой, но в нем есть два интересных момента.
Две точки
Первая точка относится к числу, а вот вторая уже к вызову функции
Number
В начале функции-генератора нужно привести
Предупреждение
Никогда не делайте так в реальном коде. Изменение прототипов встроенных объектов — очень плохая идея, которая приводит к печальным последствиям.
#puzzle_answer
Мы должны изменить прототип Number, добавить туда функцию-генератор, которая и будет выдавать числа в заданном промежутке.
В целом, код простой, но в нем есть два интересных момента.
Две точки
Первая точка относится к числу, а вот вторая уже к вызову функции
to
на результирующем числе.Number
В начале функции-генератора нужно привести
this
к примитивному значению, иначе первым элементом будет отдана объектная обертка числа, что не хорошо (их нельзя сравнивать между собой, например).Предупреждение
Никогда не делайте так в реальном коде. Изменение прототипов встроенных объектов — очень плохая идея, которая приводит к печальным последствиям.
#puzzle_answer
Решение из прошлого поста не позволяет установить шаг для интеравала. Это не здорово, но в текущую реализацию легко добавить такой параметр.
К сожалению, придется все переписать, на генераторах построить это решение нелья.
Вручную реализуем интерфейс итератора, и добавим резльтирующему объекту метод
#puzzle_answer
К сожалению, придется все переписать, на генераторах построить это решение нелья.
Вручную реализуем интерфейс итератора, и добавим резльтирующему объекту метод
by
, который тоже вернет итератор, но уже с заданным шагом.#puzzle_answer