[gif] змейка - и мультик в конце!
От: Кодт Россия  
Дата: 17.05.13 12:27
Оценка: 29 (14) +1 -1 :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))) :))


Ну и этюд для программистов: придумать алгоритм управления змейкой.
Перекуём баги на фичи!
Re: [gif] змейка - и мультик в конце!
От: lightket  
Дата: 17.05.13 12:35
Оценка:
вот так гифка!
Re: [gif] змейка - и мультик в конце!
От: denisko http://sdeniskos.blogspot.com/
Дата: 17.05.13 13:10
Оценка:
Здравствуйте, Кодт, Вы писали:

К>http://i.imgur.com/dAtcCfH.gif[/img]


К>Ну и этюд для программистов: придумать алгоритм управления змейкой.

Не, это тривиально -- уменьшать заметаемую площадь. А вот задача покруче -- найти минимальную длину змейки, ее конфигурацию (не считаем, что управление было оптимальным) и положение яйца, которая на заданном поле уже не сможет съесть его.
<Подпись удалена модератором>
Re: [gif] змейка - и мультик в конце!
От: dimgel Россия https://github.com/dimgel
Дата: 17.05.13 13:49
Оценка:
Здравствуйте, Кодт, Вы писали:

К>[ img]http://i.imgur.com/dAtcCfH.gif[/img]


Да ну нафиг, так не бывает!

К>Ну и этюд для программистов: придумать алгоритм управления змейкой.


А алгоритмов таких не бывает!
Re[2]: [gif] змейка - и мультик в конце!
От: Кодт Россия  
Дата: 17.05.13 13:53
Оценка:
Здравствуйте, denisko, Вы писали:

К>>Ну и этюд для программистов: придумать алгоритм управления змейкой.

D>Не, это тривиально -- уменьшать заметаемую площадь. А вот задача покруче -- найти минимальную длину змейки, ее конфигурацию (не считаем, что управление было оптимальным) и положение яйца, которая на заданном поле уже не сможет съесть его.

На самом деле, не совсем тривиально.

Одно из возможных решений — построить гамильтонов цикл и всегда бегать по нему.
Проблема здесь лишь в том, что время достижения яйца не условно-линейное (по кратчайшему пути), а условно-квадратичное (через все свободные ячейки).
В реальных змейках у яиц был таймаут, после которого они исчезали и перебазировались в новом месте.

А задача про минимальный геймовер — ну, например, такой ответ
Змейка, чья голова 1, хвост 8
345
216
 87

яйцо — в любой другой точке. Управление было жесточайше неоптимальным.
Предшествующий скриншот выглядит так
234
1@5
 76

поворачиваем за яйцом, съедаем его и геймовер.

Почти очевидно, что змейка или попадает в заранее подготовленный (предыдущим неоптимальным управлением) тупик и вскоре погибает, или (начав оптимально управляться с данного момента) способна добраться до любой точки игрового поля.
Минимальный тупик я показал.
Перекуём баги на фичи!
Re[3]: [gif] змейка - и мультик в конце!
От: fin_81  
Дата: 17.05.13 14:14
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Одно из возможных решений — построить гамильтонов цикл и всегда бегать по нему.


На сколько я помню для квадратной решетки нечетного размера нельзя построить гамильтонов путь.
Re[3]: [gif] змейка - и мультик в конце!
От: denisko http://sdeniskos.blogspot.com/
Дата: 17.05.13 14:26
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, denisko, Вы писали:


К>>>Ну и этюд для программистов: придумать алгоритм управления змейкой.

D>>Не, это тривиально -- уменьшать заметаемую площадь. А вот задача покруче -- найти минимальную длину змейки, ее конфигурацию (не считаем, что управление было оптимальным) и положение яйца, которая на заданном поле уже не сможет съесть его.

К>На самом деле, не совсем тривиально.


К>Одно из возможных решений — построить гамильтонов цикл и всегда бегать по нему.

Ну или по-просту максимально длинный путь без самопересечений.
К>Проблема здесь лишь в том, что время достижения яйца не условно-линейное (по кратчайшему пути), а условно-квадратичное (через все свободные ячейки).
К>В реальных змейках у яиц был таймаут, после которого они исчезали и перебазировались в новом месте.
Все равно, если бегаешь так, то умрешь последним (но, может быть, голодным). А вообще отсюда много довольно интересных задач вытекает, даже не связанных непосредственно с управлением. Типа существования хоть какой-то стратегии, когда время появления и исчезновения яиц сравнимо или много меньше длины питончика (скорость всегда 1).
<Подпись удалена модератором>
Re: [gif] змейка - и мультик в конце!
От: AlexRK  
Дата: 17.05.13 14:34
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Ну и этюд для программистов: придумать алгоритм управления змейкой.


Круто!
Я даже до половины никогда не доходил.
Re[4]: [gif] змейка - и мультик в конце!
От: Кодт Россия  
Дата: 17.05.13 17:03
Оценка:
Здравствуйте, fin_81, Вы писали:

_>На сколько я помню для квадратной решетки нечетного размера нельзя построить гамильтонов путь.


Ну и нестрашно. Для такой решётки без одной клетки можно построить путь.
Прокладываем два пути, отличающихся в одной клетке — например, без 1,1 и без 2,2. Дальше, по-моему, очевидно.
Перекуём баги на фичи!
Re[5]: [gif] змейка - и мультик в конце!
От: fin_81  
Дата: 17.05.13 17:13
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, fin_81, Вы писали:


_>>На сколько я помню для квадратной решетки нечетного размера нельзя построить гамильтонов путь.


К>Ну и нестрашно. Для такой решётки без одной клетки можно построить путь.

К>Прокладываем два пути, отличающихся в одной клетке — например, без 1,1 и без 2,2. Дальше, по-моему, очевидно.

А можно ли переключится на другой путь когда змейка полная?
Re[6]: [gif] змейка - и мультик в конце!
От: Кодт Россия  
Дата: 17.05.13 19:03
Оценка:
Здравствуйте, fin_81, Вы писали:

_>А можно ли переключится на другой путь когда змейка полная?


Дык, разумеется.
Вот у нас ситуация: n-1 точка содержит змейку, последняя n'ная точка — яйцо.
Добегаем до точки ветвления (1,2) и съедаем яйцо. При этом гамильтонов цикл размыкается, а змейке больше некуда расти. Мультик!

Вот, к примеру, поле 3*3.
цикл      цикл      змейка    добежала  и съела!
через     через               до яйца
1,1       2,2
+-+-+     + +-+     @ #-#     @ #-#     H #-#
|   |       | |       | |       | |     | | |
+ + +     +-+ +     #-# H     H t #     # t #
|   |     |   |     |         |   |     |   |
+-+-+     +-+-+     #-#-t     #-#-#     #-#-#
Перекуём баги на фичи!
Re[7]: [gif] змейка - и мультик в конце!
От: fin_81  
Дата: 17.05.13 19:25
Оценка:
Здравствуйте, Кодт, Вы писали:

_>>А можно ли переключится на другой путь когда змейка полная?


К>Дык, разумеется.

К>...
К>Вот, к примеру, поле 3*3.
К>...

Это еще не доказательство для всех размеров полей и почти полных змеек длиной n-k (k>=1).
Решение не знаю.
Re[4]: [gif] змейка - и мультик в конце!
От: Кодт Россия  
Дата: 17.05.13 19:29
Оценка:
Здравствуйте, denisko, Вы писали:

К>>Одно из возможных решений — построить гамильтонов цикл и всегда бегать по нему.

D>Ну или по-просту максимально длинный путь без самопересечений.

Путь (должен) быть замкнутым. Иначе мы рискуем пробежать до конца этого пути и упереться.
Либо это должен быть максимально длинный путь в пространстве-времени (с учётом того, что освобождается место от хвоста), — но это "по определению" и неконструктивно.
Можно поискать середину между достаточным условием (цикл) и необходимым, но неконструктивным. Какой-то класс путей...

К>>В реальных змейках у яиц был таймаут, после которого они исчезали и перебазировались в новом месте.

D>Все равно, если бегаешь так, то умрешь последним (но, может быть, голодным). А вообще отсюда много довольно интересных задач вытекает, даже не связанных непосредственно с управлением. Типа существования хоть какой-то стратегии, когда время появления и исчезновения яиц сравнимо или много меньше длины питончика (скорость всегда 1).

Если таймаут яйца больше, чем количество свободных клеток (делённое на скорость змейки), то, как бы яйцо ни перебазировалось, рано или поздно гамильтонова змейка до него добежит. Либо сдохнет с голоду, конечно...
Перекуём баги на фичи!
Re[8]: [gif] змейка - и мультик в конце!
От: Кодт Россия  
Дата: 17.05.13 22:20
Оценка:
Здравствуйте, fin_81, Вы писали:

_>Это еще не доказательство для всех размеров полей и почти полных змеек длиной n-k (k>=1).

_>Решение не знаю.

Для поля 2n*2n есть цикл.
Для поля 2n*(2n-1) есть цикл.
Для поля (2n-1)*(2n-1) с выколотой точкой (2,2) есть цикл? Если да, то и с выколотой точкой (1,1) есть, и именно такой, какой нам нужен.
Завтра придумаю, как он выглядит.
Перекуём баги на фичи!
Re[9]: [gif] змейка - и мультик в конце!
От: clickfraudprotection  
Дата: 18.05.13 06:15
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, fin_81, Вы писали:


_>>Это еще не доказательство для всех размеров полей и почти полных змеек длиной n-k (k>=1).

_>>Решение не знаю.

К>Для поля 2n*2n есть цикл.

К>Для поля 2n*(2n-1) есть цикл.
К>Для поля (2n-1)*(2n-1) с выколотой точкой (2,2) есть цикл? Если да, то и с выколотой точкой (1,1) есть, и именно такой, какой нам нужен.
К>Завтра придумаю, как он выглядит.

http://en.wikipedia.org/wiki/De_Bruijn_sequence

так. "змея" максимум семимерная.
Re[2]: [gif] змейка - и мультик в конце!
От: clickfraudprotection  
Дата: 18.05.13 06:21
Оценка:
Здравствуйте, AlexRK, Вы писали:

ARK>Здравствуйте, Кодт, Вы писали:


К>>Ну и этюд для программистов: придумать алгоритм управления змейкой.


ARK>Круто!

ARK>Я даже до половины никогда не доходил.

так здесь компьютерное управление, не ручное, с клавиатуры.
Re[3]: [gif] змейка - и мультик в конце!
От: dimgel Россия https://github.com/dimgel
Дата: 18.05.13 08:45
Оценка:
Здравствуйте, clickfraudprotection, Вы писали:

C>так здесь компьютерное управление, не ручное, с клавиатуры.


Слишком витиеватая траектория местами для компьютерного управления.
Re[4]: [gif] змейка - и мультик в конце!
От: clickfraudprotection  
Дата: 18.05.13 08:49
Оценка:
Здравствуйте, dimgel, Вы писали:

D>Здравствуйте, clickfraudprotection, Вы писали:


C>>так здесь компьютерное управление, не ручное, с клавиатуры.


D>Слишком витиеватая траектория местами для компьютерного управления.


поскольку скорость большая то вручную с клавиатуры маловероятно. а вот заранее расчитать траекторию возможно.
Re[5]: [gif] змейка - и мультик в конце!
От: ononim  
Дата: 18.05.13 10:12
Оценка:
D>>Слишком витиеватая траектория местами для компьютерного управления.
C>поскольку скорость большая то вручную с клавиатуры маловероятно. а вот заранее расчитать траекторию возможно.
Это ускоренная гифка. Я видел оригинал пару месяцев назад — вполне возможно.
Вот он кстати: http://img7.joyreactor.cc/pics/post/%D0%B3%D0%B8%D1%84%D0%BA%D0%B8-%D0%97%D0%BC%D0%B5%D0%B9%D0%BA%D0%B0-%D0%B7%D0%B0%D0%BB%D0%B8%D0%BF-%D0%9F%D1%80%D0%BE%D1%85%D0%BE%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5-637717.gif
Как много веселых ребят, и все делают велосипед...
Re[10]: [gif] змейка - и мультик в конце!
От: Кодт Россия  
Дата: 18.05.13 13:36
Оценка:
Здравствуйте, clickfraudprotection, Вы писали:

К>>Для поля (2n-1)*(2n-1) с выколотой точкой (2,2) есть цикл? Если да, то и с выколотой точкой (1,1) есть, и именно такой, какой нам нужен.

К>>Завтра придумаю, как он выглядит.

C>http://en.wikipedia.org/wiki/De_Bruijn_sequence

C>так. "змея" максимум семимерная.

При чём здесь последовательность де Брёйна?
Перекуём баги на фичи!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.