Как стать автором
Обновить

Комментарии 31

Прикольная модель получилась.


У меня после каждого запуска оставалось по два джедая. В результате попробовал сразу только двух ставить — и они выживали без проблем.


Аутентичненько...

«Всегда двое их — учитель и ученик»
Хотя это было сказано про ситхов.
У меня видать темные джедаи. В конце, такое ощущение, что один другого убивает.
поигрался с симуляцией
почему-то странная ситуация бывает — куча дроидов и один дункан маклауд джедай побеждает прям не то что пачку, а целый ряд прям дроидов
это нормальное поведение?
нарисовал большой круг/дугу, в нем поменьше дроидов, внутри еще меньше круг/дугу джедаев
image

Джедаям главное — добежать до противника.


Один в поле воин:



По отдельности джедаи вёрткие. Джедай практически всегда в движении, а дроиды тупые — с упреждением стрелять не умеют, потому почти всегда мажут.

А толпа джедаев — хорошая мешень. Даже если по одному джедаю промазал — то соседнего зацепил.
Тут все просто: когда джедай в самой гуще дроидов — в него отказываются стрелять, боясь задеть своих товарищей в радисуе 5. Если бы железяки были поумнее, они бы в таких ситуациях стреляли в джедая, задевая своих ближайших товарищей, но спасая остальную армию.
Симуляция в моём браузере не завелась:
image

var chosen = new Array(m.grid.length)
chosen.fill(false)


Метод Array.prototype.fill появился только в ES6, чтобы было кроссбраузерно используют polyfill.
Спасибо большое) Пофиксил
Слишком «шустрые» джедаи получаются, что двигаются со скоростью снарядов, поэтому и с легкостью могут убежать от опасности и «добить» оставшихся.

@Vovlox не думали внести учет скорости полета выстрела?
Сейчас работаю над совершенствованием среды. Пользователи смогут сами выбирать скорости и алгоритмы.
научился строить дроидов так что бы они мочили джедаев превосходящих по количеству
Убило всех джедаев((
image
Зарисовал все поле, вышло 4500 дроидов. 35 джедаев все выкосили, 7 выжило.
Джедаи умирают только если совсем некуда отпрыгнуть. Соответственно самый надежный способ их убить — поставить рядом с другим джедаем. Идеально — построить колонной. Поодиночке мрут только если дроиды ведут очень плотный огонь, что редко бывает из-за достаточно малого радиуса видимости дроида. У меня одиночные джедаи только случайно умирали, когда сами врывались в центр уже летящего залпа.

Я нашел только один надежный способ убить одного джедая — поставить его в центр куба 9х9. Из за специфики AI джедаи действует каждый раз одинаково и стабильно нарывается на один и тот же выстрел бластера. Но если снаружи поставить — у дроидов нет шансов.
Ровный строй из полтысячи дроидов спокойно перерабатывает полсотни джедаев, а из 16 рыцарей, окруженных 150 дроидами, выжил только один.
Жутко имбовые джедаи :)

Построил дроидов в линию прямую, джедаев клином (примерно столько же по количеству), джедай до линии добежал один, и истребил ее всю…
что-то пошло не так ...

вообще все логично, джедаи ведь очень сильны в ближнем бою, а дроиды — наоборот. Джедаю сложно будет уклониться от десятков бластерных выстрелов сразу (в фильме отбивали по одному-два выстрела), поэтому процент добежавших будет небольшой. Но зато стоит им добежать и применить световой меч в во всей красе — перевес будет явно не в пользу дроидов
Это как конница и лучники. Пока между ними есть расстояние, конница будет умирать ударными темпами. Но стоит ворваться в строй — и лучникам хана
На дэйли завтра: «Еще я потратил час на изучение „повадок“ дроидов и джедаев...»
Стоит еще добавить симуляцию Джа-Джа Бинкса для достоверности)
Очень интересная симуляция. Одна маленькая проблема: она не является клеточным автоматом.
А почему?
Клеточный автомат — это набор ячеек и функция, которая из состояния каждой ячейки и состояний некоторого набора соседних ячеек выводит новое состояние ячейки. А что мы видим здесь? Рекурсивный алгоритм поиска центра группы. Выстрелы из бластеров, которые каким-то образом запоминают, куда они летели. Джедаи, бегущие к ближайшей группе дроидов независимо от того, насколько она далеко. То есть симуляция на клетки на самом деле не разбивается, это просто алгоритм на двумерном массиве.
Гм… Но ведь сложность алгоритма не является критерием? В том смысле, что в «Жизни» на вход алгоритма подается состояние 8 соседей, на выходе получаем новое состояние для данной клетки, причем сам алгоритм принятия решения — пара строк кода. Если там будет тысячи строк сложнейшего кода, и на вход подается состояние о сотнях окружающих клеток — это ведь все еще клеточный автомат? Мне просто понять хочется. Симуляция перестанет быть автоматом после:
1. Добавления памяти алгоритму, т.е. когда появятся какие-либо данные кроме самого поля.
2. а вот второй кейс сформулировать не могу, но он как-то связан с вашим сообщением (про разбиние и пр.).

Кстати, покуда вам интересна «Жизнь», у меня была статья на эту тему: Путешествия во времени и программирование-2.
Не думайте понятиями алгоритма и кода, думайте понятием функции и множества. Есть множество клеток и множество состояний. Каждая клетка в каждый момент времени находится в одном из допустимых состояний. Есть функция, которая каждой клетке ставит в соответствие множество её соседей. И есть функция, которая состоянию клетки и множеству состояний её соседей ставит в соответствие новое состояние. Следующее состояние клеточного автомата получается из предыдущего применением вот этой последней функции ко всем клеткам.

Чисто теоретически, эту симуляцию можно переформулировать как клеточный автомат. В общем-то, всё можно переформулировать как клеточный автомат, потому что можно сочинить КА, эквивалентный машине Тьюринга. Однако в статье не сформулировано правил соответствующего клеточного автомата. В ней просто что-то внешне похожее. Хочу отметить, что я не ругаю статью. Симуляция действительно забавная, я поставил плюс. Но как человек, писавший по КА диплом, не мог не позанудствовать в комментах.

Потому что присутствует случайность выбора?

Нет, недетерминированные КА — тема вполне благодатная. Ответил выше.

Спасибо!

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации