С небольшой задержкой, но вот он: День 3 знаменитого Пришествия кода в Го.

Предыдущие части:
День 1
День 2

Проблема первая:

Вы сталкиваетесь с экспериментальным новым видом памяти, хранящимся в бесконечной двумерной сетке.

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

17  16  15  14  13
18   5   4   3  12
19   6   1   2  11
20   7   8   9  10
21  22  23---> ...

Хотя это очень эффективно (квадраты не пропускаются), запрошенные данные должны быть перенесены обратно в квадрат 1 (расположение единственного порта доступа для этой системы памяти) программами, которые могут перемещаться только вверх, вниз, влево или вправо. . Они всегда выбирают кратчайший путь: Манхэттенское расстояние между местоположением данных и квадратом 1.

Например:

Данные из квадрата 1 переносятся 0 шагов, так как они находятся в порту доступа.

Данные из квадрата 12 переносятся 3 шагов, например: вниз, влево, влево.

Данные из квадрата 23 переносятся только на 2 шагов: дважды вверх.

Данные из квадрата 1024 должны переноситься 31 шагов.

Сколько шагов требуется, чтобы передать данные из квадрата, указанного в вашей головоломке, на всем пути к порту доступа?

Проблема вторая:

В качестве стресс-теста системы программы здесь очищают сетку, а затем сохраняют значение 1 в квадрате 1. Затем в том же порядке распределения, как показано выше, они сохраняют сумму значений во всех соседних квадратах, включая диагонали.

Итак, значения первых нескольких квадратов выбираются следующим образом:

Квадрат 1 начинается со значения 1.

Квадрат 2 имеет только один соседний закрашенный квадрат (со значением 1), поэтому он также хранит 1.

Квадрат 3 имеет оба вышеупомянутых квадрата в качестве соседей и хранит сумму их значений, 2.

Квадрат 4 имеет все три вышеупомянутых квадрата в качестве соседей и хранит сумму их значений, 4.

Квадрат 5 имеет в качестве соседей только первый и четвертый квадраты, поэтому он получает значение 5.

После того, как квадрат написан, его значение не меняется. Следовательно, первые несколько квадратов получат следующие значения:

147  142  133  122   59
304    5    4    2   57
330   10    1    1   54
351   11   23   25   26
362  747  806--->   ...

Какое первое записанное значение больше, чем введенная вами головоломка?

Решение:

Примечания:

  • Может быть позже

Не стесняйтесь комментировать! Спасибо!

SR.