С небольшой задержкой, но вот он: День 3 знаменитого Пришествия кода в Го.
Проблема первая:
Вы сталкиваетесь с экспериментальным новым видом памяти, хранящимся в бесконечной двумерной сетке.
Каждый квадрат в сетке распределяется по спирали, начиная с места, отмеченного
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.