Обучать свой алгоритм можно же на любом языке. Это как было с конкурсом про словарь. Там кода на JS минимум, а основой объем занимали коэффициенты обученной модели. Я вот для этой задачи думаю обучать алгоритм на C#, а потом просто перетащить модель на JS.
У меня почему-то еверноут не зашел. Несколько раз пытался там вести заметки с кодом. В итоге, чтобы найти заметку нужно: 1. открыть эверноут, 2. вспомнить логин\пароль и ввести, 3. вспомнить куда поместил запись и найти ее, 4. понять, что это уже устарело или не совсем подходит под текущую задачу. 5. открыть поисковить, 6. ввести запрос, 7. найти что нужно. Поэтому сейчас пользуюсь только последними 3-мя пунктами.
Для каких-то записей не по работе просто пользуюсь обычной файловой системой: все по файликам и папочкам разложено. В эверноуте какая-то помойка скопилась, не понимаю, как им пользоваться.
Это нормальное бурчание ) Полагаю, что многих тут беспокоят пропуски хода и непредсказуемое время на ход.
Мысль была, что дело еще может быть в сборщике мусора, которому тоже нужно процессорное время.
Я изначально потратил кучу времени на то, чтобы предусмотреть пропуски — холодный старт, проверка времени на ход, проверка времени на каждой ветке при поиске в глубину, расчет хода на случай его пропуска. Если время хода вышло, то возвращаю не лучший ход, а ход с учетом пропуска.
Но в конце решил, что это борьба с ветряными мельницами и все закомментировал. Оставил только сравнение моего мира с реальным для подгонки его к реальному в случае пропусков.
Судя по результатам, успешно прошел только 5 уровней, получив 41 место. Хотя сам тестировал на амазоновском сервере, аналогичном заявленному в условиях, но одноядерном, и результаты должны быть лучше. Посмотрим, что будет после перетестирования.
Имел ввиду прием про посещение каждой клетки не более двух раз. А мир я сделал массивом битовых состояний. Копирование делается почти мгновенно. Выделенные массивы храню в собственном кэше для переиспользования, т.ч. их выделение тоже мгновенно и сборщик мусора лишний раз не напрягать. А откат в прежнее состояние в этом случае вообще не требуется.
Программисту всегда одного дня не хватает ))
«Ничего не происходило» — это лишь догадка. Наверняка многие как и я просто не выкладывали решение до последнего дня. Напишите тут хотя бы сколько всего решений прислано.
На 9 ходов — это полный перебор? Или с какой-то эвристикой?
У меня полный перебор получался на 6 ходов. Но это уже с риском пропустить ход. Полный перебор — это по 5 вариантов хода на каждом шаге — влево/вправо/вверх/вниз/стоять. Для глубины 6 уже получается 5+5^2+5^3+5^4+5^5+5^6=19530 узлов. Реально же получается меньше, так многие ходы ведут к смерти и эти ветки отсекаются, и много тупиков. Реально где-то до 5000. При охоте за бабочкой сделал глубину 7, но не совсем полный перебор. Перебирает уже до 10000 вариантов. И на каждом мне нужно было сделать копию мира и обновить ее.
Так как там 9 ходов-то получилось? ))
Они же написали, что закрывают API «для сторонних структур». То есть, оно есть, они его поддерживают, но пользоваться предоставят только «официальному» приложению.
static class A
{
static Random r = new Random();
static int c = 0;
public static int rand3()
{
c = (c + 1) % 3;
while (r.Next(2) == 0)
c++;
return c % 3;
}
}
Извините дилетанта за глупый вопрос по первому пункту. Я правильно понимаю, что преобразование поступательного движения поршней во вращательное и потом обратно в поступательное на крылья нужно для того, чтобы была возможность использовать редукторы?
Я уже устал думать. За лишние две недели все равно ничего не улучшил, зато мозг поизносился.
А еще будут предварительные результаты? Или теперь уже только окончательное тестирование?
Для каких-то записей не по работе просто пользуюсь обычной файловой системой: все по файликам и папочкам разложено. В эверноуте какая-то помойка скопилась, не понимаю, как им пользоваться.
Вот пример реализации в гриде: swimlane.github.io/ngx-datatable/#client-sorting
Побольше бы таких готовых решений.
Хотелось бы еще «живой статистики», чтобы отправлять решения и видеть результаты сразу (или в течение часа, например).
Мысль была, что дело еще может быть в сборщике мусора, которому тоже нужно процессорное время.
Я изначально потратил кучу времени на то, чтобы предусмотреть пропуски — холодный старт, проверка времени на ход, проверка времени на каждой ветке при поиске в глубину, расчет хода на случай его пропуска. Если время хода вышло, то возвращаю не лучший ход, а ход с учетом пропуска.
Но в конце решил, что это борьба с ветряными мельницами и все закомментировал. Оставил только сравнение моего мира с реальным для подгонки его к реальному в случае пропусков.
Судя по результатам, успешно прошел только 5 уровней, получив 41 место. Хотя сам тестировал на амазоновском сервере, аналогичном заявленному в условиях, но одноядерном, и результаты должны быть лучше. Посмотрим, что будет после перетестирования.
«Ничего не происходило» — это лишь догадка. Наверняка многие как и я просто не выкладывали решение до последнего дня. Напишите тут хотя бы сколько всего решений прислано.
У меня полный перебор получался на 6 ходов. Но это уже с риском пропустить ход. Полный перебор — это по 5 вариантов хода на каждом шаге — влево/вправо/вверх/вниз/стоять. Для глубины 6 уже получается 5+5^2+5^3+5^4+5^5+5^6=19530 узлов. Реально же получается меньше, так многие ходы ведут к смерти и эти ветки отсекаются, и много тупиков. Реально где-то до 5000. При охоте за бабочкой сделал глубину 7, но не совсем полный перебор. Перебирает уже до 10000 вариантов. И на каждом мне нужно было сделать копию мира и обновить ее.
Так как там 9 ходов-то получилось? ))
Проверка:
> Enumerable.Range(0, 10000).Select(_ => A.rand3()).GroupBy(_ => _).Select(g => g.Count()).ToArray()
int[3] { 3365, 3300, 3335 }