Довольно увлекательная статья о том, как человек участвовал в RAIC 2020. В этот раз необходимо было запрограммировать бота для игры в сильно упрощённый Старкрафт.
Человек решил офигенное количество с виду простых задач по разруливанию поведения юнитов на поле. И когда казалось, что все возможные грабли учтены, оказывалось, что находилась ещё ситуация (и не одна!), когда алгоритм действовал не лучшим образом.
Например,
Еще одной важной проблемой, которая не давала покоя было то, что когда мои лучники и лучники противника сближались, и становились стенка против стенки, то новые лучники подходили сзади и подпирали их. Таким образом они были абсолютно неэффективны, т.к. просто стояли и ничего не делали. И так могло накопиться много слоев моих лучников. Это выглядело как явная тактическая ошибка.
В-общем, стоящая статья, я получил удовольствие от прочтения. Краткий вывод:
1. Для участия в RAIC 2021 нужно уволиться с работы или взять отпуск месяца на 2 😊
2. Большинство задач тривиальны, но обобщённое и эффективное решение части из них позволяет разом убить 100 "зайцев" и избавиться от костылей в будущем.
3. Для участия не нужно иметь опыт в AI, ML, DL и других аббревиатурах, нужно просто уметь писать if-ы и циклы😉, но желательно уметь дебажить и профилировать код.
https://m.habr.com/ru/post/535310/
Человек решил офигенное количество с виду простых задач по разруливанию поведения юнитов на поле. И когда казалось, что все возможные грабли учтены, оказывалось, что находилась ещё ситуация (и не одна!), когда алгоритм действовал не лучшим образом.
Например,
Еще одной важной проблемой, которая не давала покоя было то, что когда мои лучники и лучники противника сближались, и становились стенка против стенки, то новые лучники подходили сзади и подпирали их. Таким образом они были абсолютно неэффективны, т.к. просто стояли и ничего не делали. И так могло накопиться много слоев моих лучников. Это выглядело как явная тактическая ошибка.
В-общем, стоящая статья, я получил удовольствие от прочтения. Краткий вывод:
1. Для участия в RAIC 2021 нужно уволиться с работы или взять отпуск месяца на 2 😊
2. Большинство задач тривиальны, но обобщённое и эффективное решение части из них позволяет разом убить 100 "зайцев" и избавиться от костылей в будущем.
3. Для участия не нужно иметь опыт в AI, ML, DL и других аббревиатурах, нужно просто уметь писать if-ы и циклы😉, но желательно уметь дебажить и профилировать код.
https://m.habr.com/ru/post/535310/
Хабр
История 4го места на Russian AI Cup 2020
В этом году поучаствовал в соревновании по написанию игровых ботов Russian AI Cup. И хоть не удалось взять 1е место, как в 2017, но все равно это было увлекательное и невероятно азартное...
В закладки. Очень подробная, хоть и несколько субъективная статья Optozorax-а о разных клавиатурных компромиссах, костылях и решениях.
Forwarded from dev optozorax (илья шепрут)
Как известно, я очень упорот по клавиатурам.
И в этой области я развиваюсь уже много лет, поэтому мне есть что сказать. И вот думал что неплохо было бы написать статью о своей раскладке (а она довольно уникальна). Получилась, конечно, статья о раскладке, но случайно я параллельно рассказал про десятипальцевый метод, про неверность стандартных клавиатур и историю своего развития. Получилась огромная статья на 200к символов, которую читать, наверное, 2 часа.
Так что приятного чтения! 🍿
#клавиатуры
И в этой области я развиваюсь уже много лет, поэтому мне есть что сказать. И вот думал что неплохо было бы написать статью о своей раскладке (а она довольно уникальна). Получилась, конечно, статья о раскладке, но случайно я параллельно рассказал про десятипальцевый метод, про неверность стандартных клавиатур и историю своего развития. Получилась огромная статья на 200к символов, которую читать, наверное, 2 часа.
Так что приятного чтения! 🍿
#клавиатуры
optozorax.github.io
Раскладка Ильи Шепрута — Блог optozorax'а
Моя раскладка, история прихода к ней и объяснение каждого дизайнерского решения.
Sandy Maguire (известный в хаскельных кругах товарищ) дописал книгу, которая раньше имела рабочее название "Structure and Interpretation of Haskell Programs" (отсылка к знаменитой SICP). Можно сейчас уже скачать pdf.
https://reasonablypolymorphic.com/blog/algebra-driven-design/
https://reasonablypolymorphic.com/blog/algebra-driven-design/
Энтузиаст начал переводить эту красоту на русский. Вообще, 3b1b иногда просто приятно смотреть из-за классных анимаций, даже не пытаясь вдумываться в содержание.
https://youtu.be/aCvnUuYaRH8
https://youtu.be/aCvnUuYaRH8
YouTube
Теория групп и 196883-мерный монстр
Оригинальная запись: https://www.youtube.com/watch?v=mH0oCDa74tE
Интервью одного человека, с которым я когда-то работал и которого я уважаю. Сам он говорит, что его застали врасплох и получилось не очень, а по мне так получилось очень хорошо. История с Боингом как будто бы типичная, но ребятам могло на самом деле повезти, мне в аналогичной ситуации повезло и дефектов не случилось.😊
https://www.saratovit.ru/interview/andrej-gusev/
https://www.saratovit.ru/interview/andrej-gusev/
И мы видим, что менеджера в айти все больше и больше воспринимают как ничего не понимающего человека, раздающего малоосмысленные указания и действующего по шаблону в ущерб здравому смыслу.
О недостатках Rust на сегодняшний день
Doge Shibu:
Такая возможность была бы полезна практически везде.
Простейший пример - мы хотим из метода трейта возвращать итератор (абсолютно разумная и естественная идея):
Ок, пишем реализацию:
И теперь выходит, что мы не можем назвать тип, который должен идти в
У нас остаются два варианта - бокс
И вот кажется, что раз уж разрабы выбрали такой дизайн для лямбд, то возможность как-то дать название типу замыкания должна была быть с самого начала.
И, кстати, вот эта проблема - это то из-за чего я почти во всех своих проектах сижу на найтли и считаю, что раст без найтли - не сказать, чтобы сильно удобен.
Doge Shibu:
Такая возможность была бы полезна практически везде.
Простейший пример - мы хотим из метода трейта возвращать итератор (абсолютно разумная и естественная идея):
trait MyTrait<'a> {
type MyIter: Iterator<Item = &'a MyType>;
fn get_iter(&'a self) -> Self::MyIter;
}
Ок, пишем реализацию:
impl<'a> MyTrait<'a> for MyTraitImpl {
type MyIter = ???;
fn get_iter(&'a self) -> Self::MyIter {
let some_value = self.some_method(...);
self.something.iter().map(|x| some_value.wtf(x))
}
}
И теперь выходит, что мы не можем назвать тип, который должен идти в
MyIter
, из-за того, что у нас там будет Map<???, ...>
, в котором надо будет указать имя типа замыкания, чего мы сделать не сможем. И соответственно так реализовать трейт тоже не сможем. У нас остаются два варианта - бокс
+ dyn
, что в случае итераторов смешно, или переходить на найтли и давать имя MyIter
через type MyIter = impl Iterator<...>;
И вот кажется, что раз уж разрабы выбрали такой дизайн для лямбд, то возможность как-то дать название типу замыкания должна была быть с самого начала.
И, кстати, вот эта проблема - это то из-за чего я почти во всех своих проектах сижу на найтли и считаю, что раст без найтли - не сказать, чтобы сильно удобен.
Возможно, боян. Представляю, через лет 10 будут искать Senior Functional Excel Developer.
https://habr.com/ru/news/t/540308/
https://habr.com/ru/news/t/540308/
Хабр
С добавлением лямбда-функций язык программирования Excel стал полным по Тьюрингу
Microsoft теперь называет электронные таблицы Excel языком программирования, а с добавлением лямбд он стал полным по Тьюрингу . Язык программирования считается полным по Тьюрингу, если на нём можно...
Одна из моих любимых песен с тех пор, как её один супермозг визуализировал на 64 ядрах (128 аппаратных потоках) процессора AMD Threadripper 3990x.👇
Forwarded from Блог*
YouTube
Bad Apple!! but it's made of YouTube captions
Recommended: Mac, Android, Linux
Windows is fine, but spaces look off because the font has a wrong width for braille space.
iPhone/iPad app can only play captions at about 5 fps, but it works with browser version of YouTube.
Original: https://youtu.be/FtutLA63Cp8…
Windows is fine, but spaces look off because the font has a wrong width for braille space.
iPhone/iPad app can only play captions at about 5 fps, but it works with browser version of YouTube.
Original: https://youtu.be/FtutLA63Cp8…
Дженерики для го приняли тоже. Хороший пример фичи системы типов, которую нужно планировать заранее с самого начала, иначе вкорячивать придётся не самым красивым образом.
С другой стороны отличная демонстрация, что "вода камень точит".
С другой стороны отличная демонстрация, что "вода камень точит".
GitHub
spec: add generic programming using type parameters · Issue #43651 · golang/go
We propose adding support for type parameters to Go. This will change the Go language to support a form of generic programming. A detailed proposal document has been published, with input from many...
Гугл спонсирует переписывание разных штук на Rust. Представьте, сначала тулзы, потом и сам POSIX, а потом появится и safe-слой для сисколлов :-P (ага, размечтался..)
https://security.googleblog.com/2021/02/mitigating-memory-safety-issues-in-open.html
https://security.googleblog.com/2021/02/mitigating-memory-safety-issues-in-open.html
Google Online Security Blog
Mitigating Memory Safety Issues in Open Source Software
Posted by Dan Lorenc, Infrastructure Security Team Memory-safety vulnerabilities have dominated the security field for years and often lead ...
Модель трёх тел хоть и сложна и аналитически не решается, но её всё равно нужно усложнить ещё дальше, чтобы она стала реалистичной. Например, добавить радиус планеты в параметры и столкновения между планетами, с образованием отлетающих кусков, которые становятся новыми планетами. Есть теория, что наша Луна — это отколовшийся когда-то кусок Земли в результате столкновения с каким-то шальным астероидом.
Forwarded from Random three body problem
This media is not supported in your browser
VIEW IN TELEGRAM
Initial states:
m: 0.950 x: 0.841 y: -2.945 vx: 0.055 vy: 0.867
m: 7.171 x: -1.359 y: 2.404 vx: 0.573 vy: -0.282
m: 1.920 x: -2.252 y: -4.907 vx: -0.063 vy: 0.047
Interest-ness score: 61
m: 0.950 x: 0.841 y: -2.945 vx: 0.055 vy: 0.867
m: 7.171 x: -1.359 y: 2.404 vx: 0.573 vy: -0.282
m: 1.920 x: -2.252 y: -4.907 vx: -0.063 vy: 0.047
Interest-ness score: 61