# Обсуждение игры найди число на JavaScript

Давайте теперь обсудим этапы решения нашей задачи. Очевидно, что для начала нам нужно написать код, который будет формировать таблицу заданного размера, заполненную случайными числами.

Однако, эта подзадача слишком объемная. Давайте ее раздробим на более мелкие.

Мне кажется удобным сделать функцию, которая параметром будет принимать ссылку на игровое поле и массив со случайными числами, и будет формировать ячейки таблицы, заполняя их числами из массива:

`function build(field, arr) { }`

Удобно было бы, если бы массив, передаваемый в эту функцию был двухмерным, уже специально подготовленным, со случайными числами.

Пусть этот массив подготавливает функция `prepare`, параметром принимающая размер стороны игрового поля:

`function prepare(size) { }`

Используя наши функции, мы можем вот так создать начальную таблицу `2` на `2`:

`build(field, prepare(2));`

Функция `prepare` получится слишком сложной, если в ней будет весь код для подготовки массива. Лучше будет, если она будет использовать вспомогательные функции.

Пусть вспомогательная функция `range` формирует массив с числами от `1` до максимального числа таблицы:

`function range(count) { }`

Пусть функция `shuffle` перемешивает элементы массива в случайном порядке:

`function shuffle(arr) { }`

Пусть функция `chunk` разбивает одномерный массив в двухмерный. Второй параметр пусть указывает количество элементов в подмассиве:

`function chunk(arr, n) { }`

Имея такие функции, мы можем с их помощью сделать нужную нам функцию `prepare`:

`function prepare(size) { let arr = []; arr = range(size * size); arr = shuffle(arr); arr = chunk(arr, size); return arr; }`

Сделайте описанную функцию `range`. Потестируйте ее работу.

Сделайте описанную функцию `shuffle`. Потестируйте ее работу.

Сделайте описанную функцию `chunk`. Потестируйте ее работу.

Потестируйте работу созданной вами функции `prepare`.

↑
en ru