[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>так. "змея" максимум семимерная.

При чём здесь последовательность де Брёйна?
Перекуём баги на фичи!
Re: [gif] змейка - и мультик в конце!
От: zalldone  
Дата: 18.05.13 13:58
Оценка:
Здравствуйте, Кодт, Вы писали:

К>http://i.imgur.com/dAtcCfH.gif


Моя круче умеет (на A* 2). :р Правда, все равно тупая. :) Иногда такие триллеры получаются — никаких мультиков не надо (Replay -> вставить -> Load -> Start).
Re[2]: [gif] змейка - и мультик в конце!
От: zalldone  
Дата: 18.05.13 14:01
Оценка:
Здравствуйте, zalldone, Вы писали:
Z>Правда, все равно тупая. :)

Вот крутая: http://www.youtube.com/watch?v=W6XZGFhfe74
Re[11]: [gif] змейка - и мультик в конце!
От: clickfraudprotection  
Дата: 18.05.13 17:27
Оценка:
Здравствуйте, Кодт, Вы писали:

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


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

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

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

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

К>При чём здесь последовательность де Брёйна?


гамильтонов путь самый длинный возможен только в них.
Re[12]: [gif] змейка - и мультик в конце!
От: Кодт Россия  
Дата: 18.05.13 21:07
Оценка:
Здравствуйте, clickfraudprotection, Вы писали:

К>>При чём здесь последовательность де Брёйна?

C>гамильтонов путь самый длинный возможен только в них.

Предлагаешь обобщить змею на многомерное пространство, что ли?
Я-то имел в виду двумерную, при игровом поле (2n-1)×(2m-1).

Цикл строится так:
X +-+ +-+ +-+ +-+ \
  | | | | | | | |  |
+-+ + + + + + + +  |
|   | | | | | | |  |
+ +-+ + + + + + +  | 2n-1
| |   | | | | | |  |
+ +-+-+ +-+ +-+ +  |
|               |  |
+-+-+-+-+-+-+-+-+  /

\_______/ \_____/
  2n-1     2(m-n)

От выколотого угла
— в одну сторону — идём по краю поля
— в другую сторону — обходим квадрат (2n-1)×(2n-1) "волнами": {вниз, влево, вправо, вверх}
Затем
— в одну сторону — идём дальше по краю поля
— в другую — обходим оставшийся прямоугольник чётной ширины: {вверх, вниз}
И встречаемся в углу, противоположном выколотому.

Как построить многомерную змейку в гиперпрямоугольнике с нечётными сторонами — это отдельная интересная тема...
Перекуём баги на фичи!
Re: [gif] змейка - и мультик в конце!
От: De-Bill  
Дата: 19.05.13 14:15
Оценка: +1
К>Ну и этюд для программистов: придумать алгоритм управления змейкой.

Я на нокиа 3310 также играл.
Re[12]: [gif] змейка - и мультик в конце!
От: Кодт Россия  
Дата: 19.05.13 18:51
Оценка:
Здравствуйте, clickfraudprotection, Вы писали:

К>>При чём здесь последовательность де Брёйна?

C>гамильтонов путь самый длинный возможен только в них.

Всё равно не уловил, как это.
Вот у нас есть, к примеру, 8-мерный куб с чётной длиной ребра. И что, хочешь сказать, в нём невозможно построить гамильтонов цикл?
Контрпример элементарный. Рассмотрим 8-куб с ребром 2. Каждой клетке соответствует, очевидно, 8-разрядный двоичный вектор.
Строим код Грея, и готово!
Перекуём баги на фичи!
Re[2]: [gif] змейка - и мультик в конце!
От: x64 Россия http://x64blog.name
Дата: 19.05.13 19:24
Оценка:
D>Да ну нафиг, так не бывает!

Ну почему же? Примерно так же это выглядело хрен-знает-сколько-лет назад у меня на Nokia 3310, только там всё было ещё хуже: во-первых, еда исчезала, если не сожрать, через некоторое время, плюс типов еды было два или даже больше (больший кусок давал больше прироста хвосту). Классная игра, вообще-то.
JID: x64j@jabber.ru
Re: [gif] змейка - и мультик в конце!
От: мыщъх США http://nezumi-lab.org
Дата: 19.05.13 19:49
Оценка:
Здравствуйте, Кодт, Вы писали:


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

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

я нашел решение если яйцо ждет C ходов, где C не зависит от размеров поля и достаточно велико. а когда все взаимосвязано, то тут я туплю. жопой чувствую, что решение есть, а найти не могу. минимальную конфигурацию можно найти методом перебора. там и перебирать нечего. а максимальную? размер змейки растет квадратично (с увеличением поля), а "ожидание" змейки -- линейно.

и странное доп. условие, что на одну и ту же клетку яйцо не попадает дважды. из чего следует, что змейке можно выиграть тупо вращаясь в цикле пока яйцо не обойдет все клетки. но что-то я все проигрываю да проигрываю. яйцо в самую последнюю минуту падает там где был хвост, а я никак не могу до него дотянуться. а если не дотянулся -- то все. змейка проиграла. а надо чтобы она съела и следующему яйцу некуда было упасть (змейка заняла все клетки или яйцо на них уже успело побывать).
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.