Есть один широко известный в узких кругах изобретатель головоломок Serhiy Grabarchuk з каліфорнійщини. Одна из его головоломок, Arrows (или как-то так), представляет собой прямоугольный массив циферблатов стрелки на которых в исходном положении направлены вверх. Ещё есть аватар, который может перемещаться по прорезям (границам клеток) между циферблатами. Когда аватар проходит сегмент сетки, то циферблаты слева и справа от этого сегмента поворачиваются в соответсвующем направлении на 90 градусов. (Других способов повернуть стрелки нет, только пройти мимо аватаром в нужном направлении.) Надо из начального положения эти стрелки запутать, а потом распутать.
Мне головоломка показалась многообещающей и я как-то её написал. В процессе произошёл небольшой затор. Дело в том, что хотя автор приводит несколько вариантов расположения циферблатов, самая первая картинка в списке это массив 3*3. Его-то я и реализовал первым делом. Оказалось что собрать его легче лёгкого -- если начать восстанавливать циферблаты начиная с самых дальних, то последние несколько собрутся автоматически. Мне почему-то показалось что это естественно и так должно быть всегда, я в головоломке разочаровался и забросил.
Авторские вариации головоломки представляли собой разные непрямоугольные массивы. Циферблаты могут быть расположены на любой плоской "карте" и поворачиваться когда аватар проходит по границе области.
Такой картой (согласно авторской картинке) может быть, например, кусок полуправильной мозаики. Делать непрямоугольный массив мне было лень (и до сих пор лень), поэтому я не стал проверять насколько непрямоугольность добавляет нетривиальности. Зато в какой-то момент меня осенила идея что на 90 градусах свет клином не сошёлся и можно поворачивать на 120 или 72 или вообще что угодно. Эти варианты реализовать оказалось гораздо проще, поэтому я их тут же попробовал. Оказалось что тривиальность сразу куда-то делась. Собирать назад не пользуюясь кнопкой "reset" я пока не научился. С углом 72 даже 2*2 у меня получается собрать только случайно, просто потому что положений не так много.
Вдобавок, чтобы убедиться что по крайней мере в 90-градусной секции я всё ещё чемпион, я попробовал не 3*3, а другой размер. К моему крайнему изумлению автоматической сборки при возвращении аватара в исходную точку здесь уже не происходит.
Мне головоломка показалась многообещающей и я как-то её написал. В процессе произошёл небольшой затор. Дело в том, что хотя автор приводит несколько вариантов расположения циферблатов, самая первая картинка в списке это массив 3*3. Его-то я и реализовал первым делом. Оказалось что собрать его легче лёгкого -- если начать восстанавливать циферблаты начиная с самых дальних, то последние несколько собрутся автоматически. Мне почему-то показалось что это естественно и так должно быть всегда, я в головоломке разочаровался и забросил.
Авторские вариации головоломки представляли собой разные непрямоугольные массивы. Циферблаты могут быть расположены на любой плоской "карте" и поворачиваться когда аватар проходит по границе области.
Такой картой (согласно авторской картинке) может быть, например, кусок полуправильной мозаики. Делать непрямоугольный массив мне было лень (и до сих пор лень), поэтому я не стал проверять насколько непрямоугольность добавляет нетривиальности. Зато в какой-то момент меня осенила идея что на 90 градусах свет клином не сошёлся и можно поворачивать на 120 или 72 или вообще что угодно. Эти варианты реализовать оказалось гораздо проще, поэтому я их тут же попробовал. Оказалось что тривиальность сразу куда-то делась. Собирать назад не пользуюясь кнопкой "reset" я пока не научился. С углом 72 даже 2*2 у меня получается собрать только случайно, просто потому что положений не так много.
Вдобавок, чтобы убедиться что по крайней мере в 90-градусной секции я всё ещё чемпион, я попробовал не 3*3, а другой размер. К моему крайнему изумлению автоматической сборки при возвращении аватара в исходную точку здесь уже не происходит.