Художники | Думай по-кодерски — эпизод 5. Alex Rosenthal - видеоролик
Изучение английского языка с помощью параллельных субтитров ролика "Художники | Думай по-кодерски — эпизод 5".
Метод интервальных повторений для пополнения словарного запаса английских слов. Встроенный словарь.
Всего 828 книг и 2765 познавательных видеороликов в бесплатном доступе.
страница 2 из 3 ←предыдущая следующая→ ...
00:02:42
Try drawing a square grid like this,
Попробуйте нарисовать
вот такую квадратную сетку
and simulating Hedge’s path over it.
и запланировать путь Хеджа.
What patterns can you find to guide him?
Какую схему можно использовать,
чтобы направлять его?
Pause now to figure it out for yourself.
Приостановите видео, если хотите
найти ответ самостоятельно.
The challenge here
is to craft a set of instructions
Задача состоит в том,
чтобы создать набор указаний,
00:02:58
that will work for any square grid.
который будет действительным
для любой квадратной сетки.
Fortunately,
one of the strengths of programming
К счастью, одно из преимуществ
программирования состоит в том,
is the flexibility
to solve not just one problem,
что, решая одну задачу,
but a whole class of them all at once.
вы одновременно решаете
целую группу подобных ей задач.
It often helps to start with one case,
and work towards the general.
Зачастую полезно начать с одного
примера и двигаться к общему.
00:03:14
Let’s say we had this square.
Представим, что у нас вот такой квадрат.
Hedge can measure the length of its sides
and store that number as a variable.
Хедж может замерить его сторону
и сохранить это число как переменную.
Now, what we need is a plan
for how Hedge will paint an X,
Теперь нам нужен план того,
как Хедж будет рисовать крест
pixel by pixel.
по одному пикселю за раз.
There’s more than one right answer
for how to do this;
Существуют разные способы это сделать.
00:03:30
let’s look at two.
Давайте рассмотрим два из них.
First, what if Hedge went row by row,
like a typewriter?
Что, если Хедж будет двигаться по строкам,
как каретка пишущей машинки?
If it’s a 9 pixel by 9 pixel painting,
Если размер портрета — 9 на 9 пикселей,
in the first row he’d paint,
skip 7, and then paint again.
в первой строке он закрасит клетку,
пропустит следующие семь
и снова закрасит клетку.
и снова закрасит клетку.
In the second row he’d skip the first,
paint, skip 5, and paint.
Во второй строке он пропустит
первую клетку, закрасит вторую,
00:03:47
And so on.
пропустит пять и снова закрасит.
И так далее.
И так далее.
The pattern here is that for each row
the pixels skipped at the beginning
Здесь схема такова, что клетки,
пропущенные в начале строки,
go up by one,
увеличиваются на одну,
and the pixels skipped in the middle
go down by 2.
а пиксели, пропущенные в середине,
уменьшаются на два.
Things get more complicated
when Hedge reaches the center.
Всё немного усложняется,
когда Хедж достигает центра.
00:04:01
Here there’s a row
with just one pixel painted.
В этой строке будет закрашен
всего один пиксель.
Then the whole thing reverses—
Затем всё повторяется
в обратном направлении.
the number of pixels skipped
goes down by one each time on the left,
Количество пропущенных пикселей слева
уменьшается на один с каждой строкой,
and up by two each time in the middle.
а в середине — увеличивается на два.
Instructing Hedge to do this
with a series of loops will work
Если дать Хеджу такие указания
с помощью серии циклов,
00:04:17
and is a perfectly fine solution.
то это вполне приемлемое решение.
The main drawback is that
this requires quite a bit of logic—
Его основной недостаток — то, что тут
необходимо много логических заключений:
knowing what to do in the middle,
when to reverse the process,
нужно знать, что делать в центре,
когда нужно изменить направление,
and exactly how to reverse it.
и как именно это сделать.
So how might we approach this
Можем ли мы найти способ,
00:04:30
so that the logic remains consistent
from start to finish?
в котором логика остаётся
постоянной от начала до конца?
The key insight is to look at a grid
as a series of concentric squares.
Основная идея — это рассматривать сетку
как набор концентрических квадратов.