1. JavaScript / Говнокод #11704

    +170

    1. 1
    for(i=-1;++i<n;)

    зачем? чтобы никто не догадался? или они думают, что в этом меньше символов чем в for(i=0;i<n;i++) ?

    Запостил: makc3d, 04 Сентября 2012

    Комментарии (22) RSS

    • Чтобы интерпретатор быстрее работал
      Ответить
    • Подобные техники используются в минификаторах JS. В обратную сторону короче:
      for(i=n;i--;)


      Кому интересно, зачем это может понадобиться: http://js1k.com/ - там в коллекции есть шахматы с ботом (я так и не смог понять, как они работают), 3d, платформеры, симуляторы, вольфенштейн и много других интересных вещей.

      И я там был: http://js1k.com/2010-first/demo/719
      Ответить
      • Но тут-то длина не уменьшилась ;)
        Ответить
        • Действительно... Но за старания автора уже следует похвалить.

          Возможно, автор пытался уменьшить толщину
          Ответить
      • Мда. Я тоже в смятении где в этих шахматах наёбка. Там кода только на шахматные правила.
        Ведь оно на сервер ничего не шлет, а бот играет довольно неплохо.
        Ответить
        • У автора на сайте есть реализации этих микрошахмат на нескольких языках (http://nanochess.110mb.com/chess.html), поэтому создается впечатление, что автор прохавал самую суть шахмат и смог реализовать алгоритм игры, который не содержит в себе самих правил.
          Ответить
          • Та я то всё уже почитал. А также историю разработки.

            PS. Сыграл штук партий. Играл быстро, почти не думая, но ни разу не ему слил (как-то позорно проиграть 1000 байтам, хоть я и был на грани).
            Ибо алгоритм любит хавать фигуры, а угрозы матов как-то зевает. Потому я выигрывал даже в самых плохих ситуациях. А еще рокировок нету.

            Раньше я думал гениев, способных сделать такое, на Земле вообще не существует.
            Ответить
            • > Ибо алгоритм любит хавать фигуры
              Тупая оценка по сумме стоимостей фигур?
              Ответить
              • Да не думаю, что там всё так просто. Это чисто субъективная оценка.
                Я играл с ним чтобы любой ценой поставить мат.
                Плюс он часто сам зевает.
                Ответить
              • В полной версии (2.2 Кб) он гораздо сильнее играет. Ад какой-то просто.
                PS. Заметил - он очень любит слоном на b4 ставить шах.
                Ответить
                • Немного разровнял полную версию (которая с GIF):
                  http://pastebin.com/TQBE3yBp

                  Если честно - совершенно не могу понять, что делает код ;)
                  Надо деобфусцировать его дальше...

                  UPD:
                  Первые 32 байта массива l - начальная позиция фигур.
                  Ответить
              • Нашел типа выигрышную стратегию:
                http://nanochess.110mb.com/archive/toledo_javascript_chess_3.html
                1.d4, d5 2. c4 Kc6. 3.Kc3 d5-c4 4.Kf3 f5 5.e3 ce6 6.kg5 cf7 (зачем?) 7. kg5-f7 ke8-f7 8. cf1-c4 kf7-g6(зачем?) 9. e2-e4 итд

                Играл раз 5. Каждый раз до этого место точь-в-точь. А дальше там выиграть несложно.
                Ответить
            • А я так ни разу и не выиграл. Пойду утоплюсь в унитазе.
              Ответить
        • Ну, рискну предположить, что там три вещи:
          1) генератор доступных ходов (заодно им можно прочекать ход человека);
          2) оценка позиции с помощью какой-нибудь несложной эвристики;
          3) собственно перебор на пару-тройку ходов и выбор лучшего варианта.

          P.S. Хотелось бы раскурить код, но я сегодня не выспался...
          Ответить
          • Мы можем ждать статьи с подробным анализом?
            Ответить
            • Вполне возможно ;)
              Только у меня такое ощущение, что такая статья уже есть на просторах инета.
              Ответить
              • Когда после первого конкурса шарил - не нашел. Было много статей на тему сжатия JS и связанных с этим алгоритмов, а также описания принципов работы некоторых работ с конкурса, написанные авторами этих работ. Я пытался сам привести код шахмат в читаемый вид, но терпения не хватило.
                Ответить
                • Статью написать помешала непреодолимая лень. Поэтому просто отрефакторил и прокомментировал. http://govnokod.ru/11734
                  Ответить
    • фак, как от этого шахматного треда отписаться теперь :)
      Ответить
      • ладно. я больше не буду.
        Ответить
        • Ок, я тоже не буду тут флудить, завтра отосплюсь, и запилю на гитхабе проект по деобфускации этих шахмат.
          Ответить
          • И я хотел пофлудить, но тоже не буду.

            Отписаться можно где-то в профиле, правда вообще от всего.
            Ответить

    Добавить комментарий