• Adventure Jam 2016

      image

      Хочется рассказать про опыт участия в Adventure Jam 2016. Некоторое время назад я решил попробовать принять участие в каком-нибудь геймджеме и вывесил пост про поиск команды в одном из сообществ вконтакте. Прошло больше месяца, никто не писал, и я уже забыл об этой затее, но внезапно на связь вышел художник Сергей. Довольно быстро мы нашли крупный конкурс длиной в две недели, темой которого были игры-адвенчуры. Решено было делать классический point'n'click-квест. Команду пополнили аниматор Борис и композитор Василий, за несколько скайп-сессий мы обсудили сеттинг и сюжет, после чего принялись за работу. Под катом вы найдете небольшой постмортем в четырех частях от лица каждого участника команды, с описанием техпроцесса, проблемами и решениями, впечатлениями и выводами, которые каждый вынес из участия.
      Читать дальше →
    • Машина Тьюринга на шаблонах

        Каждый интересующийся шаблонами в С++ скорее всего слышал об их Тьюринг-полноте и связанных с этим шутках про «we put a language in your language, so you can program while you program». В этом посте я расскажу как с помощью шаблонов и константных выражений построить настоящую машину Тьюринга, вычисляющую результат своей работы во время компиляции, на которой можно будет запускать уже существующие программы. Например усердный бобер с 4 состояниями и 2 символами выглядит как-то так:
        ADD_STATE(A);
        ADD_STATE(B);
        ADD_STATE(C);
        ADD_STATE(D);
        
        ADD_RULE(A, Blank, 1, Right, B);
        ADD_RULE(A, 1, 1, Left, B);
        
        ADD_RULE(B, Blank, 1, Left, A);
        ADD_RULE(B, 1, Blank, Left, C);
        
        ADD_RULE(C, Blank, 1, Right, Stop);
        ADD_RULE(C, 1, 1, Left, D);
        
        ADD_RULE(D, Blank, 1, Right, D);
        ADD_RULE(D, 1, Blank, Right, A);
        
        using tape = Tape<Blank>;
        using machine = Machine<A, 0, tape>;
        using result = Run<machine>::type;
        
        int main() {
            print(result());
            return 0;
        }
        

        На выходе, как и положено, получаем
        1 _ 1 1 1 1 1 1 1 1 1 1 1 1 
        

        Тут можно посмотреть на код: https://ideone.com/MvBU3Z. Желающие узнать как все устроено внутри, добро пожаловать под кат.
        Читать дальше →
        • +26
        • 15,9k
        • 3
      • Собираем XGBoost под OS X

        XGBoost — С++ библиотека, реализующая методы градиентного бустинга, которую все чаще можно встретить в описаниях алгоритмов-победителей на Kaggle. Для использования из R или Python есть соответствующие обвязки, но саму библиотеку необходимо собрать из исходников. Запустив make, я увидел массу ошибок, сообщающих о ненайденных хидерах и неподдерживаемом OpenMP. Ну, не впервой.
        Читать дальше →
        • +11
        • 7,8k
        • 2