Comments 30
На мой взгляд, наиболее элегантны те дороги, в которых паровозик циклически проходит абсолютно все перегоны. И если я всё правильно промоделировал, то если все стрелки установить в 1 и паровозик начинает с проезда 3->1, то
№ A B C D E F
0 1 1 1 1 1 1 Паровозик начинает в А3→1
1 1 1 1 1 1 1 C
2 1 1 1 2 1 1 E
3 1 1 1 2 1 1 D
4 1 1 1 2 2 1 F
5 2 1 1 2 2 1 A
6 2 1 1 2 2 1 B
7 2 1 1 2 2 2 D
8 2 1 1 2 2 2 E
9 2 1 1 2 2 2 C
10 1 1 1 2 2 2 A
11 1 1 1 2 2 2 B
12 1 1 1 2 2 2 D
13 1 1 1 2 2 2 E
14 1 1 1 2 2 2 C
15 1 1 1 2 2 2 A
A->C->E->D->F->A->B->D->E->B->A->…
Т.е. перегон CF никогда не посещается
Не, стрелки фиксировать не надо. Как раз-таки на том, что они не взрезаются, а просто переводятся, и строится проход всех перегонов.
Если стрелки будут переводиться, то см https://habrahabr.ru/post/319702/#comment_10017508
Автоперевод стрелок это воообще ключевой момент.
Таблица: шаг — это проход стрелки, следующие столбцы — состояние стрелок после этого шага, последний — только что пройденная стрелка. Ну собственно выставляешь все стрелки в положение 1 и заходишь в стрелку А.
А вы ищете треки, на которых поезд проезжает все стрелки или все перегоны? Потому что все стрелки проехать — это не проблема.
В верхний перегон всегда можно вставить еще две стрелки, и так до бесконечности.
А вот все перегоны проехать не получится даже если стрелок всего две.
Надеюсь понятно написал.
Пока не купили мост — строили его из пластинок, добавляли/убирали под каждый следующий стык пластинки в половину высоты стандартного кубика.
Настолько просто, что я два дня бился головой об стол и пошел в итоге просить совета на stackoverflow, где мне выдали несколько решений на блюдечке за считанные минуты.Ссылочку на обсуждение stackoverflow дадите?
На мой взгляд, чтобы обойти все перегоны во всех направлениях должно выполнятся простое условие для каждой стрелки: после перехода 3->1 должен выполнятся переход 2->3 и после перехода 3->2 должен состоятся переход 1->3. При этом важна последовательность переходов, но между ними могут быть переходы других стрелок и количество переходов 3->1 и 3->2 не важна, то есть после перехода 3->1 может повторно случится неограниченное количество переходов 3->1, но в последовательности обязательно должен присутствовать переход 2->3. Аналогично для перехода 3->2. Используя это правило можно достаточно легко построить связку из 2, 3, 4, и т.д. стрелок. Цикл для двух стрелок для примера будет выглядеть как: А23-В31-В23-А32-А13-В32-В13-А31-А23 и т.д.
1. Мои правила не учитывают геометрию, поскольку пройдя переход в одном направлении ты автоматически фиксируешь цепочку в другом месте в соответствии с геометрией.
2. Из геометрии так же вытекает, что стрелок должно быть четное количество, для нечетного количества решения не существует.
3. Граф связей между стрелками должен быть связанным, то есть из любой точки можно достигнуть любой. Это должно работать еще до наложения парадигмы стрелок на вершины графа.
4. Нашел простой способ построить сеть с любым четным количеством стрелок — в простейшей схеме из двух стрелок разрывается один из циклов и заменяется на две стрелки с циклами — получается такая сампоподобная сеть.
5. Ну и наконец, последовательность для 12 узлов (4-х стрелок):
A13-B13-C31-C23-B32-D31-D23-B23-C32-C13-B31-A32-A13-B13-C31-C23-B32-D32-D13-B23-C32-C13-B31-A31-A23-B13.
Duplo Railroad Tycoon: Синтез железнодорожной сети с максимальным покрытием