Блог пользователя MikeMirzayanov

Автор MikeMirzayanov, 11 лет назад, По-русски

Позже вы познакомитесь с правилами соревнований Codeforces, которые будут отличаться от правил ACM-ICPC, TopCoder, GCJ и, я надеюсь, немного разнообразят контесты. Большая часть официально-проводимых соревнований будет проходить именно по этим правилам, хотя будут и более традиционные контесты. Например, Codeforces Beta Round #1 будет проходить по старым-добрым правилам ACM-ICPC (имеются ввиду правила подсчета результатов — так как у нас соревнование личное, покороче, да и разрешенных языков поболее). Пока тестирование будет проводиться под ОС Windows, но в будущем это может и измениться, благо система поддерживает тестирование на разных платформах даже в рамках одного контеста.

В настоящий момент система сконфигурирована на поддержку следующих языков (для каждого указана строка компиляции и/или запуска):

  1. GNU C++ 4
    g++.exe -static -DONLINE_JUDGE -lm -s -x c++ -Wl,--stack=268435456 -O2 -o {filename}.exe {file}

  2. GNU C++11 4
    g++.exe -static -DONLINE_JUDGE -lm -s -x c++ -Wl,--stack=268435456 -O2 -std=c++11 -D__USE_MINGW_ANSI_STDIO=0 -o {filename}.exe {file}

  3. GNU C 4
    gcc.exe -static -DONLINE_JUDGE -fno-asm -lm -s -Wl,--stack=268435456 -O2 -o {filename}.exe {file}

  4. MS VS C++
    cl /W4 /F268435456 /EHsc /O2 /DONLINE_JUDGE {file}

  5. Free Pascal 2
    -n -O2 -Xs -Sgic -viwn -dONLINE_JUDGE -Cs67107839 -Mdelphi -XS {file} -o{filename}.exe

  6. Delphi 7
    dcc32 -Q -$M1048576,67107839 -DONLINE_JUDGE -cc {file}

  7. C# Mono 2
    dmcs -define:ONLINE_JUDGE -o+ -out:{filename}.exe {file}

  8. C# .NET
    csc.exe /o+ /d:ONLINE_JUDGE /r:System.Numerics.dll /out:{filename}.exe {file}

  9. Java 6, 7
    javac -cp ".;*" {file}
    и
    java.exe -Xmx512M -Xss64M -DONLINE_JUDGE=true -Duser.language=en -Duser.region=US -Duser.variant=US -jar %s

  10. Ruby
    ruby.exe %s

  11. Python 2, Python 3
    python.exe %s

  12. PHP 5
    php.exe -n -d ONLINE_JUDGE=true -d display_errors=Off -d error_reporting=0 %s

  13. Haskell GHC 7
    ghc --make -O %s

  14. D
    dmd -L/STACK:268435456 -version=ONLINE_JUDGE -O -release -inline -noboundscheck {file}

  15. OCaml
    ocamlopt nums.cmxa str.cmxa -pp camlp4o -unsafe -o {filename}.exe-ocaml {file}

  16. Scala
    As Java

  17. JavaScript V8
    d8 {file}

Не гарантируется, что задачи будут иметь решения на каждом из представленных языков (особенно это касается скриптовых). Вероятно, позже я введу поправочные коэффициенты по времени работы для некоторых из языков. Версии со знаком плюс обозначают, что тестирующая система может использовать и более старшие версии. Если есть конструктивные предложения по изменению строк компиляции или запуска – пишите в комментарии.

Так же хочется отметить, что кроме стандартных вердиктов вам может еще прийти «Отказ тестирования», что обычно означает, что ваше решение неудалось запустить или оно совсем как-то неожиданно упало. Например, если в Delphi объявить сверхбольшой массив, то компилятор благополучно скомпилирует код, но в результате получится некорректный win32 exe-файл. Попытки с вердиктами «Ошибка компиляции», «Отказ тестирования», «Сбой тестирования» (и подобное) игнорируются при подведении результатов.

Кроме того обратите внимание, что задачи будут доступны как на русском так и английском языках.

Вроде все, до встречи на Codeforces Beta Round #1.

UPD: Добавлен чистый C (компилятор gcc).

UPD 2: Добавлены Haskell GHC 6.12 и F# 2.0

UPD 3: Обновлены версии многих компиляторов. В настоящий момент используются следующие версии:

  • Mono C# compiler version 3.2.3
  • DMD32 D Compiler v2.064.2
  • Delphi 7 [Borland Delphi Version 15.0]
  • Free Pascal Compiler version 2.6.2
  • MinGW g++.exe (GCC) 4.9.2
  • Haskell Glorious Glasgow, version 7.6.1
  • Java 6 javac 1.6.0_45
  • Java 7 javac 1.7.0_72
  • Java 8 javac 1.8.0_25
  • Ocaml ocamlopt 4.00.1
  • Perl v5.12.2
  • PHP 5.3.8
  • Python 2.7.8
  • Python 3.4.1
  • Ruby 2.0.0p353
  • Scala compiler version 2.11.1
  • MS VS C++ 2010
  • JavaScript V8 3.23.0
 
 
 
 
  • Проголосовать: нравится
  • 0
  • Проголосовать: не нравится

11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Удивляет отсутствие поддержки компилятора С. Радует наличие Python.
  • 11 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    У меня вот вопрос (совершенно без наезда, чистый интерес). Чего не хватает в с++ компиляторах человеку, пишушему олимпиадную задачу на чистом C? variadic macroses? variable length arrays? 
    • 11 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      В любом случае я добавил gcc.
    • 11 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Обычно GNU C/C++ компиляторы ходят парой и странно увидеть только один из двух.
    • 11 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Я удивляюсь людям, которые решают олимпиадные задачи на чистом C. Вспоминая свои паскалевские времена, без STL-евских string, vector, set, map это такой геморрой.
      • 10 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Ну string все-таки в Паскале есть :)
        • 10 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          В Турбо Паскале не было :)
          • 10 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            В смысле, строки были, но фиксированной максимальной длины.
            • 10 лет назад, # ^ |
                Проголосовать: нравится 0 Проголосовать: не нравится

              <sarcasm> Ты бы еще сказал, что там не было basic_string< pair<double, int> > 

              </sarcasm>

              Вообще-то да. Помню задачу про треугольники с саратовского ЧФ, где были строки в 300 символов и нужна была сортировка. После этого я принял окончательное решение олимпиады на паскале не писать

    • 11 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      variadic macros & VLA де-факто зависят не от языка (Си или Си++), а от компилятора (у GNU есть, у MS нету).

      а вот Си++ к сожалению нельзя написать y = (k ? sin : cos) (x); -- компилятор не сможет решить какие функции вызвать

      • 11 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Я согласен, что все, конечно, зависит от конкретных реализаций и ключей компиляции, но все же... Обе вышеперечисленные вещи есть в стандарте C99, и их нет в текущем стандарте С++. Майкрософтовский С компилятор вообще не поддерживает С99, так что о нем и говорить особо нечего, а вот поведение gcc/g++ будет разным в зависимости от ключей компиляции g++, например, таким:
        http://codepad.org/rAjUMr2i  (это g++)
        Я обычно пишу соревнования на стандартном с++, не используя расширения, поэтому на компилятор обычно обращаю внимание только при отсылке (если его надо выбрать).

        А за пример спасибо, интересно.

        • 11 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          Ключей, которые запрещают gcc компилировать отклонения от стандарта, на олимпиадах никто не ставит, так что разговор ни о чём.
      • 11 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        y = ( k ? sin : cos ) ( x ); // Так в C++ нельзя
        y = ( k ? ( double (*)( double )) sin : ( double (*)( double )) cos )( x ); // А вто так - можно
        • 11 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          y = ( k ? &sin : &cos ) ( x );
          так можно в С++
          • 11 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится

            И каким же С++ транслятором можно так писать?

            Comeau говорит о этом коде следующее:

            Comeau C/C++ 4.3.10.1 (Oct 6 2008 11:28:09) for ONLINE_EVALUATION_BETA2
            Copyright 1988-2008 Comeau Computing. All rights reserved.
            MODE:strict errors C++ C++0x_extensions

            "ComeauTest.c", line 10: error: cannot determine which instance of overloaded
            function "sin" is intended
            cout << (k? &sin : &cos) (x);
                               ^

            "ComeauTest.c", line 10: error: cannot determine which instance of overloaded
            function "cos" is intended
            cout << (k? &sin : &cos) (x);
                                         ^

            2 errors detected in the compilation of "ComeauTest.c".

          • 11 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится

            Эти строки эквивалентны (имя функции является указателем на неё):
            y = (k ? sin : cos)(x);
            y = (k ? &sin : &cos)(x);
            Да, такие конструкции возможны в C++. Но при перегрузке функций, компилятор без дополнительной информации не может определить, какую из них использовать:
            float sin(float x);
            double sin(double x);
            long double sin(long double x);

            Если же перегрузка функций не используется, то эта конструкция не вызовет ошибки.

            Если мспользуется шаблонная функция, то возможна более короткая запись:
            c = (k ? min<int> : max<int>)(a, b);
            вместо варианта с приведением типа.

            PS: когда я писал, что нельзя, я имел в виду VS 2005.

            • 11 лет назад, # ^ |
                Проголосовать: нравится 0 Проголосовать: не нравится
              Точно! Для нестыковки стоит использовать пространство std и
              y = ( k ? std::sin : std::cos ) ( x );
              уже не компилируется.
        • 11 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          Я знаю, что можно. Но громодзкость делает снижает применимость этого приема.
          • 11 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится

            Чтобы не писать так громоздко, можно сделать так:

            typedef double (*df)(double);

            y = (k ? (df)sin : (df)cos)(x);

        • 11 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          Еще один вариант:

          y = (k ? sinl : cosl) (x);

          • 11 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            > y = (k ? sinl : cosl) (x);

            Гм. А что, такая ситуация *так часто* встречается, что есть необходимость в сокращенной конструкции?
            • 11 лет назад, # ^ |
                Проголосовать: нравится 0 Проголосовать: не нравится

              Она не сокращенная. Просто С++ компилятору не хватает ума, чтобы скомпилировать без подсказки.

    • 11 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      UPD: В C99 появилась перегрузка тригонометрических функций по аргументу (tgmath.h), так что проблемы могут быть и там...
    • 10 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Вот еще вспомнил. В GNU C можно делать вложенные функции (почти как в Паскале, только удобнее), для С++ это не поддерживается.

      Между прочим, можно считать, что каждая функция -- метод класса, поля которого -- аргументы функции.

      А порой иногда не хватает компилятора С++ :D

    • 10 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Вот еще вспомнил. В GNU C есть вложенные функции (как в Паскале, только удобнее), для Си++ это не поддерживается
11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
А можно уточнить версию ruby? Просто при 1.8 -> 1.9 все же внесли существенные изменения в API стандартных классов. Также может повлиять на скорость работы решения. В 1.9 все же YARV, а не чистый интерпретатор.
11 лет назад, # |
  Проголосовать: нравится +12 Проголосовать: не нравится
Круто! Ждём бета-контеста.
11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Для С++ было бы не плохо иметь библиотеку Boost http://www.boost.org/
Это реально?
  • 11 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Ради интереса, что вам нужно, что есть в Boost, но нет в tr1?
  • 11 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    скорей всего нет...
  • 11 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    А чем boost будет в данном случае отличаться от миллиона других библиотек, не входящих в состав стандартных библиотек языков? Почему бы тогда и их не добавить? 
11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
C# моно? А почему не MS? было бы здорово взять 2010 RC. Там наконец то встроенная длинная арифметика есть. Экспресс версия студии бесплатная, так что тут проблемы вроде нет.
  • 11 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    +1, и да, лучше взять framework поновее. Потому что, когда нет Set'а, то это грусть.
    • 11 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Такой вот код он компилирует: HashSet<int> intSet = new HashSet<int>()
      • 11 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        И все-таки почему не MS C#?
        И компилирует ли он что-то типа

        var a = new int[];
        var q = from v in a select v;

        ?
  • 10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Да-да...) Длинку бы еще на # и было бы великолепно!
    Будем ждать апгрейда!
11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Какая версия Java будет доступна?
11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Не понял, что Вы хотели сказать по поводу моего вопроса.
  • 11 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Хотел скопипастить из основного сообщения, что Java 6. Но что-то глюкнуло, видимо Chrome.
11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Почему ключ no-asm для GCC, но для MSVC, FP, Delphi нет такого?
11 лет назад, # |
  Проголосовать: нравится -12 Проголосовать: не нравится
Есть такая идея: предоставить каждому пользователю свое личное пространство для хранения своих модулей. Например, я заливаю на сервер модуль с длинной арифметикой arithm.hpp, после чего у меня появляется возможность его инклудить:
#include "my/arithm.hpp"
  • 11 лет назад, # ^ |
      Проголосовать: нравится +12 Проголосовать: не нравится
    Идея не очень.

    Во-первых, тестирование производится на разных машинах, поэтому возникнут сложности с масштабированием и поддержанием доступности этих ваших модулей на всех компьютерах.

    Во-вторых, такую возможность если и добавлять, то для всех языков. По-моему, слишком большой геморрой. Надо будет для каждого языка специфицировать, где что лежит, как что подключить и т.п. Зачем делать систему слишком запутанной в угоду сомнительным удобствам?

    В третьих, ну неужели у вас так много ценного вашего кода, который вы хотели бы использовать на соревнованиях и по каким-то убеждениям не можете скопировать в код основной программы?
  • 11 лет назад, # ^ |
      Проголосовать: нравится +12 Проголосовать: не нравится
    Миш, может стоит написать, какие в этой системе бывают вердикты, и ссылочку какую-нибудь дать на правила ACM? Просто, судя по простыне разрешенных языков, аудитория у контестов предполагается широкая, т.е. будут участвовать люди, к ACM отношения не имеющие.
    • 11 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      В тексте дал ссылку на правила. Про вердикты тоже, пожалуй, верно.
  • 11 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Если у меня еще не развился склероз, или я не отстал от жизни, то вроде бы по правилам ACM использование prewritten code запрещено вообще.  Кстати, оно запрещено еще во многих соревнованиях, но об этом в последнее время стали забывать
    • 11 лет назад, # ^ |
        Проголосовать: нравится +12 Проголосовать: не нравится
      На TopCoder и GCJ можно пользоваться prewritten code сколько угодно. Под правилами ACM в данном случае скорее стоит понимать схему ранжирования команд, правила зачета решений, правила начисления штрафного времени и т.п., а перечень того, что можно использовать на соревнованиях, неодинаков даже в рамках ACM ICPC (пример: на NEERC никакой литературой пользоваться нельзя, а на финале доступен team reference). А на online-соревнованиях, которые используют правила ACM (Snarknews Series, например) и на которых запрещено использование prewritten code, нету никаких четких механизмов контроля за этим. Это вообще отдельная тема для обсуждения, потому что совершенно непонятно, как доказать, например, что код был скопирован, а не быстро перебит с бумажки:)
      • 11 лет назад, # ^ |
          Проголосовать: нравится +12 Проголосовать: не нравится
        Я просто напомнил, что prewritten code - это распространенная практика только в части соревнований. И идея хранения своих модулей может не соответствовать правилам контестов, проводимых здесь.
        А насчет механизмов контроля.. Тут каждый решает сам для себя, отсутствие этих механизмов еще не повод нарушать правила.
11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Для Java при запуске не выставляется стек. Должно быть так:
java.exe -Xmx256M -Xss<размер стека> -jar %s
Например:
java.exe -Xmx256M -Xss64M -jar %s
Здесь, правда, возникает проблема - при такой командной строке программа, вообще говоря, может использовать больше чем 256 МБ памяти (но только в стеке). Но выставлят стек надо в любом случае, по дефолту он очень мал.
  • 10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Есть же известный трюк с запуском Thread-а
    • 9 лет назад, # ^ |
        Проголосовать: нравится +3 Проголосовать: не нравится

      Известный трюк сильно platform-dependent

    • 20 месяцев назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Я понимаю, что прошло уже почти 10 лет и стек на джаве за это время выставили, но на плюсах тоже работает этот же трюк.

      51060049 (падает из-за переполнения стека) vs 51060029 (выводит какие-то числа)

11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Жалко на Top Coder Нету того же Delphi :)
Так как я пишу все олимпиады в основном именно на нём :) (SNWS, Neerc ...)
А вот тут за это спасибо! :) А то бы как бы я писал codeforces #Beta 1,без любимого паскальчика :)
Правда иногда приходится юзать и STL :(((
  • 11 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Кстати, а как теперь паскалисты массив сортируют?
    • 11 лет назад, # ^ |
        Проголосовать: нравится +1 Проголосовать: не нравится
      Лично я quicksort пишу (уходит секунд сорок). Не знаю, есть ли встроенная функция.
      • 9 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Встроенной нет.

        Но лично в Free Pascal'е в папке demo/text есть его реализация.

11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Сколько по времени будет идти соревнование?
11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Под какой ОС проводятся запуск решений?

Версия GCC -- mingw или нет (mingw содержит ряд багов, которых нет в линуксовой версии glibc)?

11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Паскалисты пишут свой Qsort - за 1-1,5 минуты :) или меньше! %:)
  • 11 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Все сам, своими руками =)
  • 11 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    За сколько паскалисты пишут свой std::set? :о)
    • 11 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Ну HashSet они пишут достаточно быстро, потому как это не сложно, а вот TreeSet, я думаю, большинство из пишущих на паскале вообще не реализуют. Потому что самое простое сбалансированное дерево - рандомизированное декартово - писать около получаса. Уж скорее они как-нибудь по-другому задачу решат, чем будут сбалансированное дерево писать.
      • 11 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Ты прав. Лично я если уже очень нужно могу Set на си++, но обычно в задаче можно обойтись Hash,который реализуется стандартным способом очень быстро. При этом как ожидается он работает быстрее чем Set :) O(1) всё таки :-P
      • 11 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Имхо, про полчаса вы загнули. Для рандомизированного бинарного дерева что нужно? Структура с узлом, две процедуры поворота, и процедура вставки. Итого строк 40-50. А полноценное АВЛ-дерево получается добавлением процедуры балансировки, строк десять.

        Вот если нужно еще и удаление... тогда да, придется попотеть

      • 9 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        wut? Декартово дерево пишется минут за 10.
11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Определена ли на сервере соревнований константа  ONLINE_JUDGE как на сайте acm.sgu.ru?
11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
I'm not sure that the Python interpreter is actually 2.6. I get runtime error every time I try to import the collections module. Could you please look into the matter? Thanks.
11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
There are so many switches, which are passed to GNU C++ 4 compiler. Is there any page, which describes what each one of them does?

And why C++ and C are compiled in the exact same way?
11 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится
Тут вопрос возник в связи с непонятками с вводом/выводом и всякими %lld. gcc/g++ имеются ввиду mingw'шные что ли? Тогда, мне кажется, надо это явно указать. mingw не использует gnu libc, поэтому возможны и ошибки компиляции и вот такие казусы с выводом у людей, использующих "настоящий" gcc.
  • 11 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Да, надпись "GNU C++" вводит в заблуждение. Сегодня из-за %lld не смог сдать задачу C. Если бы использовал VC++ или cout, то сдал бы с первой попытки.
11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Mike, you've said that you are going to install Haskell. It is a very good intention, but I (and I think many others) would appreciate adding F# also (see http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/release.aspx , there are F# packages for many platforms). With the come of Visual Studio 2010 F# becomes accessible better than Haskell I think. What do you think about it?
11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Будьте добры, объясните нубу, как использовать в Delphi "-DONLINE_JUDGE"?
  • 11 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится
    Как-то так, вроде:
      {IfDefONLINEJUDGE}
     WriteLn('Debugoutput');
      {EndIf}
  • 11 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Ой, что-то с форматированием
    {IfDef ONLINE_JUDGE}
    WriteLn('Debug output');
    {EndIf}
    • 10 лет назад, # ^ |
      Rev. 4   Проголосовать: нравится 0 Проголосовать: не нравится
      Конечно, это директивы, а не комментарии, поэтому выглядеть это будет несколько иначе:

10 лет назад, # |
  Проголосовать: нравится +15 Проголосовать: не нравится
I suggest to use "ghc --make -O %s". This will allow GHC to resolve package dependencies.
At the moment, importing "Data.Map" produces compile error, because Map is in containers package.

  • 10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Fixed, thank you!
    • 10 лет назад, # ^ |
        Проголосовать: нравится +12 Проголосовать: не нравится
      "There are plans to add Haskell." may be removed
    • 10 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
      The default stack size in ghc is 8mb, it's too small to fit some algorithm problems require like 100k levels recursion. So is there any chance to increase this limit to like 256mb(like default setting of g++ here)?

      to increase stack space size, you just have to pass "RTS" switches to executable file, leaving compiling command line unchanged.

      compile: ghc --make -O program.hs
      running: program.exe +RTS -K256m -A8m -RTS

      here -Ksize sets the maximum stack space size, the default value is 8mb, it's not reserved memory space, and won't affect overall performance.

      and -Asize sets the cache size of GC, it's a reserved space to speed up GC, the default value is 128k, and quite small for data structure problems here (via profiling I found my program spends more than 80% of running time on GC when solving a standard data structure problem here).
      • 9 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        If you feel it's difficult to set the running params, you can set the environment variable as well.
        on *nix, it's simple, and you can leave the judge system setting untouched.
        export GHCRTS="-K256m -A8m"

        I guess it's also quite easy on Windows.
    • 6 лет назад, # ^ |
        Проголосовать: нравится +11 Проголосовать: не нравится

      same issue as bjin. the stack size of Haskell is too small to solve many large-scale-data problems.

      could u pls make it larger?

10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Why Perl is not allowed ?
I don't know to whom should I request the same.
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
I would also like you to see this
http://codeforces.com/blog/entry/405
10 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
Could we possibly have Clojure added to the languages? 

It runs on the JVM so you could download the clojure.jar and clojure-contrib.jar jars (Clojure 1.1 is the current version) and run programs with

java.exe -classpath "clojure-contrib.jar;clojure.jar" clojure.main %1

I will help test it if you like.

It would be a lot more fun for me and other Clojure programmers.  There were twice as many of us who qualified for GCJ this year as there were F# programmers.
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Is it possible to change the C# compiler to using dmcs.exe so that we can write C# 4.0 code?

According to this page: http://mono-project.com/CSharp_Compiler, the gmcs compiler only targets the 2.0 runtime. 

10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Using the vector package, I was able to speed up a Haskell solution of the CF25-C from 12 sec. to 1 sec. Unfortunately, the package is not installed on the server. Since the package optimizes array operations, it would allow to solve many DP-like problems in Haskell.

May I ask to install it? There are two steps:
1) Download/install the package manager (cabal.exe or cabal-install.tar.gz).
2) run "cabal install vector" under the "judge" user account.
My solution of the CF25-C can be used for testing.

It would also be nice to have parser-combinators and regular expressions (but not that important):
cabal install parsec
cabal install regex-posix

10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
i dont understand how to check and what does it mean by 
cl /W4 /F268435456 /EHsc /O2 /DONLINE_JUDGE %1

i used codeblock software and 1st time i submitted by selecting GNU C++ as i did before, but i got WA, then i select MS C++, bt also got WA... then what compiler i will select? :'(
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Как откомпилировать с++ файл?
Пишу строку g++.exe -DONLINE_JUDGE -fno-asm -lm -s -x c++ -Wl,--stack=268435456 -O2 -o solve.cpp, но не компилирует :( Почему ?
  • 10 лет назад, # ^ |
    Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится
    g++.exe -DONLINE_JUDGE -fno-asm -lm -s -x c++ -Wl,--stack=268435456 -O2 -o solve.exe solve.cpp
    • 10 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Аааа ! Он тут компилирует и запускает после компиляции?
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Почему нету Perl  в языках программирования?
  • 10 лет назад, # ^ |
    Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится
    Лично я против Perl, т.к. человеку, который не знает Perl будет сложно взламывать перловые решения.

    • 10 лет назад, # ^ |
        Проголосовать: нравится +8 Проголосовать: не нравится

      Тогда может дружно уберем F#, Ruby, Haskell, Python... ? не все же знают их...

      ерунда короче.

      • 10 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Ну F# можно смело убирать, всё равно все посылки на нем уже давно получают RE1
      • 10 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Напишите следующее хотя бы на одном языке из перечисленных.
        • 10 лет назад, # ^ |
          Rev. 5   Проголосовать: нравится 0 Проголосовать: не нравится
          Чтобы написать "следующее" нужно времени гораздо больше, чем дается на контест. Во время контеста нужно сильно постараться, чтобы успеть написать такое.
          Если же использовать автоматические обфускаторы, то можно и на других языках получить не меньший ужас.

          http://ld.hackerdom.ru/b/?p=49 - нормально компилирующийся код на C++.


          p.s. у меня почему-то едет форматирование на этом комментарии, либо пропадает текст.
          • 10 лет назад, # ^ |
              Проголосовать: нравится -7 Проголосовать: не нравится
            Посмотрел код с codejam. Действительно программы на Perl зачастую довольно понятны. Но на мой взгляд все-таки надо отделить C++/Java/Pascal комнаты от остальных. 
          • 10 лет назад, # ^ |
              Проголосовать: нравится +8 Проголосовать: не нравится
            Обфусцировать, кстати, не выгодно никому. Одна из вещей, чем мне нравится codeforces, так это тем, что взламывая соперника ты почти наверняка не гадишь ему, причем зачастую ты ему даже помогаешь.
      • 10 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Я был бы не против разнообразия разных языков на CF если бы решать было бы выгоднее чем взламывать, но, временами, это не так.
        • 10 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          Я бы ещё добавил, что тот, кто пишет не на Java или C++ (или даже, о ужас, C), - сам себе злобный буратино. На ACM-то ведь ничего другого не будет.
          • 10 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            Поэтому, я считаю, что люди, пишушие на экзотике, имеют другие цели (например, изучать новый язык на интересных задачах). Поэтому надо разделить комнаты на тех, кому интересно и тех, кто тренируется. Предполагаю, что будет также интересен отдельный рейтинг для тех, кто пишет на экзотических языках. В топ они выходят редко, однако, среди подобных они лучшие и вполне заслуживают отдельного внимания. Хотя это уже сложно технически.
          • 10 лет назад, # ^ |
              Проголосовать: нравится +21 Проголосовать: не нравится
            Словно на контестах ACM ICPC свет клином сошёлся.

            К примеру, есть такая прослойка людей "уже не студенты", которым остаётся писать только TopCoder / Codeforces / TCO / Google CodeJam / Facebook HackerCup. Многие из них вполне не против использовать для решения задач свой любимый язык (при этом любимый - далеко не обязательно C++ или Java, хотя многим в это и не верится :).
            • 10 лет назад, # ^ |
                Проголосовать: нравится +8 Проголосовать: не нравится
              Это-то понятно, но вот, например, на TopCoder ведь тоже всего четыре языка. (Или даже три, четвёртый ещё не прикрутили?)
      • 10 лет назад, # ^ |
          Проголосовать: нравится +9 Проголосовать: не нравится
        Они все хоть немного читабельны
        А про перл есть известная шутка, что это единственный язык по которому нельзя понять - взяли md5 от программы или это сама программа
    • 10 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      По сложности Perl не сложнее C++ или python.
      Другое дело, что написать нечитаемый код можно на любом языке, но на Perl сделать это проще.
      Однако [не хочу устроить холивар, мнение лично мое]:
      1. Perl более производительный, чем другие скриптовые языки;
      2. регэкспы и хэши в Perl гораздо удобнее для использования.

      p.s. Действительно сложнее взламывать - это haskell или J... Код на языке J (не мой), складывающий все натуральные меньшие 1000, делящиеся на 3 или 5.
      [code]+/~.(3*i.334),5*i.200
  • 7 лет назад, # ^ |
      Проголосовать: нравится -8 Проголосовать: не нравится

    Perl появился в языках программирования. Спасибо!! )

10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
А какая именно версия GСС 4 сейчас используется? Хочется начать пробовать фичи C0x в олимпиадном программировании.
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
А почему у haskell-компилятора  ghc не установлена библиотека mtl (monad transformer library)? В haskell platform 2010/2011 она вроде включается.
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Пожалуй, стоит обновить пост - F# просто исчез.
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Hello. I have some problems with a compiler. I use Linux and solve some problems of Codeforces Beta Round #65 (Div.2). I compile my programs with keys:
-Wall --pedantic
And my gcc (gcc version 4.4.5 (Debian 4.4.5-8)) not give any errors. But when I posted my program here (on GNU C) it says "Runtime error on test 1".
Program works correctly and take right answers. You can see code here: http://pastebin.com/jhec4ixB
Thanks for your attention.
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Isn't there any chance that you add csc compiler,.Net compiler, for C#?I observe that  you already use .Net for F#.
And C# mono is much slower that csc.It is even slower than java(by a 2x factor)
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Is it possible to change the judge such that it supports %lld? I did not understand what's wrong with my solutions at the last contest and only realised the error at the last minute :(
  • 10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    AFAIK,%lld is available with MS VC++.
    It isn't  available with g++, because it is MinGW g++,which not support this identificator
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Можно поподробнее, какие библиотеки доступны для Haskell? Почему там нет Data.List.Split? Или я что-то неправильно понимаю?
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
А есть в планах поддержать язык Go? Весьма интересный язык и удобный для олимпиадных нужд.
9 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится
А скоро будет поддержка питон 3.1? Было бы очень хорошо
  • 9 лет назад, # ^ |
      Проголосовать: нравится +8 Проголосовать: не нравится
    +1 за Питон-3

    • 9 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится +1 Проголосовать: не нравится

      Мало того, что этот комментарий не ушел в минус, так он еще и плюсов набрал больше, чем оригинал. Кто-нибудь может внятно обьяснить, зачем нужны эти +- у каждого сообщения. Больше всего интересует мнение тех, кто плюсовал второй комментарий и не плюсовал первый (хотя возможно это первый 4 раза заминусен, в чем я сомневаюсь, если честно).

      UPD. Статистика вдруг начала резко меняться. Для тех кто пропустил: у первого сообщения было +4, у второго +8.
      • 9 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        видимо сыграл свою роль авторитет Дениса Кириенко :)
        P.S. сам не голосовал за комменты
  • 9 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    А какие преимущества вам бы это дало при решении задач?
    • 9 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Многие сейчас начинают изучать питон именно с 3  версии. По моему она удобнее.
      И к тому же версия 2.7(или 2.6, которая здесь используется) последняя в питон 2 и больше развиваться и обновляться не будет.
    • 9 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Во-первых, питон-2 более не развивается и бессмысленно дальше держаться за питон-2. Рано или поздно придется делать поддержку питон-3.

      Во-вторых, некоторые вещи в питон-3 сделаны более правильно, нежели в питон-2. Например, целочисленное деление сделано отдельным оператором (как в Паскале) и не зависит от типа операндов (как с Си). 

      На самом деле, особой разницы нет, если хорошо знать полдюжины основных отличий, но во-первых, не все их знают, во-вторых, если привык писать на версии 3, то постоянно думать о совместимости кода с версией 2 не хочется.
      • 8 лет назад, # ^ |
          Проголосовать: нравится +1 Проголосовать: не нравится

        Оставить обе версии (2.х и 3.х) было бы самым правильным решением

9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Здравствуйте. Куда делся F#?

Если F# убрали в связи с глюками компилятора при работе на Mono, то можно вместо него добавить OCaml [1], который мало чем от F# отличается и является довольно популярным языком для решения задач в системе Sphere Online Judge [2] (как видно в [3]).

Ссылки
  [1] http://caml.inria.fr/ocaml/index.en.html
  [2] http://www.spoj.pl/
  [3] http://www.spoj.pl/ranks/languages/
  • 9 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Несмотря на то, что F# основан на OCaml, они все-таки серьезно отличаются. В частности деталями синтаксиса, работой с полиморфными операторами и, конечно же, стандартной библиотекой. Не говоря уже о популярности: F# был довольно неплохо распиарен во время своего появления.
    • 9 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Согласен - есть серьёзные отличия, но не в контексте применимости к решению задач с этого сайта. На фоне C++, PHP и прочих брейнфаков любой строгий диалект ML - как белоснежка в царстве воров, насильников и убийц. Не мне, конечно, судить - человеку из упомянутой вами выше "прослойки людей", бесконечно далёких от олимпиадного программирования.

      Недавно объяснял другому человеку разницу между OCaml и F#. Вот что из этого имеет большое значение для олимпиадного программирования?


      Есть в OCaml, но нет в F#:

        1) Мощная система модулей (с функторами) в стиле Standard ML [1].
        2) Своеобразная система объектов со структурной типизацией [2].
        3) Мощнейший синтаксический препроцессор Camlp4 [3].
        4) Полиморфные варианты [4].
        5) Допустимы дублирующие определения.
        6) Именованные и необязательные аргументы [4].

      Есть в F#, но нет в OCaml:
        1) Nullable types (В OCaml можно вместо них использовать Option type).
        2) Перегрузка операторов [5].
        3) Простой механизм цитирования [6] (не сравнимый по возможностям со встроенным в Camlp4).
        4) Active Patterns [7] (можно добавить в OCaml при помощи Camlp4).
        5) Computation Expressions [8] (можно добавить в OCaml при помощи Camlp4).
        6) Совместимая с .NET система объектов.
        7) Несколько ограниченная поддержка именованных и необязательных аргументов (только для методов) [9].
        8) Еденицы измерения [10].
        9) Поддежка Юникода "из коробки".
       10) Строки являются иммутабельными.
       11) Первоклассная поддержка в Visual Studio, благодаря которой значительно снижается порог вхождения для начинающих программистов - им не приходится дополнительно осваивать Emacs.
       12) Синтаксис немного другой. Можно такой к OCaml легко прикрутить при помощи упомянутого препроцессора. Пример whitespace-significant синтаксиса для OCaml: [11].

      Ссылки:
        [1]  http://caml.inria.fr/pub/docs/manual-ocaml/manual004.html
        [2]  http://caml.inria.fr/pub/docs/manual-ocaml/manual005.html
        [3]  http://en.wikipedia.org/wiki/Camlp4
        [4]  http://caml.inria.fr/pub/docs/manual-ocaml/manual006.html
        [5]  http://msdn.microsoft.com/en-us/library/dd233204.aspx
        [6]  http://msdn.microsoft.com/en-us/library/dd233212.aspx
        [7]  http://msdn.microsoft.com/en-us/library/dd233248.aspx
        [8]  http://msdn.microsoft.com/en-us/library/dd233182.aspx
        [9]  http://msdn.microsoft.com/en-us/library/dd233213.aspx
        [10] http://msdn.microsoft.com/en-us/library/dd233243.aspx
        [11] http://people.csail.mit.edu/mikelin/ocaml+twt/
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
А чем в случае с c# вообще был обусловлен выбор именно mono вместо всем привычной майкрософтовской реализации? Если б севера были все unix-овые, то вроде понятно, но судя по строчкам компиляции тут тотальный windows.
  • 9 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    > вместо всем привычной майкрософтовской...

    Не стоит говорить за всех... ;)

    • 9 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Просто с целью расширения кругозора вопрос: неужели есть такие товарищи, которые под виндой пишут под немайкрософтовский дот-нет? И много ли таких, кто на юниксах пишет под дот-нет? Мне казалось, что цель проекта mono такая же, как wine - всего лишь сделать возможным запуск под юниксами кода, писанного под винду. Я глубоко заблуждаюсь?
      • 9 лет назад, # ^ |
        Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

        Да, вы очень сильно заблуждаетесь. Wine - это пародия на эмулятор, который даже под 64 бита не компилируется и навряд ли будет.

        Mono же - это реализация от небезызвестной фирмы Novell компилятора языка C# (что есть стандарт ISO) и среды исполнения для него. Понимаете разницу между просто другой реализацией компилятора стандартного языка и попыткой реализации нестандартного API закрытой ОС?

        "И много ли таких, кто на юниксах пишет под дот-нет?" - на одном GtkSharp-е уже столько прог написано. С такой тенденцией как сейчас, скоро половина почти самой популярной среды GNOME будет на mono (между прочим разработками и mono, и GNOME курирует один и тот же чувак).

9 лет назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

Какой компилятор FPC установлен на данный момент? 
Не компилтся  цикл for i in <множество> do... перебирающий все элементы множества.
Помогите !!!
На FPC 2.4.2 все ОК. Пытался менять опции компиляции - ничего не получилось.
В Delphi такого окружения вроде и нет. Там цикл по типу пробегает.
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Добрый день

Подскажите, пожалуйста, планируется ли добавить с список языков Scala? Насколько понимаю, требуется только добавление компилятора scalac, далее - та же самая JVM с теми же самыми параметрами что и для Java6

9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
желаю наличие Go (golang.org) в наборе языков написания тестируемых.
9 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится


9 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
Please update Python 2.5 to Python 3.2.....
many other programming sites provides both versions...
  • 9 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    If you want that, press here to the green button .
  • 9 лет назад, # ^ |
      Проголосовать: нравится +8 Проголосовать: не нравится
    I would also appreciate it if Python3.x is available.
    I learnt Python with its 3.0 and 3.1 releases. They did some significant changes (including the syntax) from 2.x to 3.x but the 2.x version remains popular. (And I think that's why officially Python is still maintaining and offering both 2.x (latest 2.7) and 3.x (latest 3.2) at the same time).

    I guess it won't hurt to provide both on codeforces, like KK123 said, there are also some other programming practice sites doing that.
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Зарегистрировался, потому что указан F#, а его уже нету. Печалька
  • 9 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +1 Проголосовать: не нравится

    Остался только один судья который дружит с F# - Sphere Online Judge . Если ошибаюсь, пожалуйста напишите. Очень надеюсь Codeforces F# вернут!
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Привет. Отправиль решение на VS C++ 2008, но почему то не скомпилировалась. Может не те библиотеки указываю
  • 9 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится
    Если около нужного сабмита нажать на ссылку Ошибка компиляции, то можно увидеть, в чём дело.
    • 9 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      спасибо за помощь
      Can't compile program.cpp:
      program.cpp:4:20: fatal error: stdafx.h: No such file or directory
      compilation terminated.
  • 9 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    А у вас точно проект как консольное приложение?

    Решение скомпилировалось после того, как убрать
    #include "stdafx.h"
    и заменить
    int _tmain(int argc, _TCHAR* argv[])
    на
    int main()
    .

    Чтобы создать консольное приложение в MS Visual Studio нужно:
    1) Файл => Создать => Проект...
    2) Visual C++ => Win32 => Консольное приложение Win32
    3) Параметры приложения => [v] Пустой проект
    4) Добавить в «Файлы исходного кода» новый .cpp файл и писать туда.
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
In java 6 do i have to write a particular class name for a problem
  • 9 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    I have been able to use any class name. However, one must place it in the default package. If you accidentally place it in another package, you will get Runtime Error on the first test case, which won't count in the contest as a failed attempt.
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
А почему нет python3?
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Почему бы не добавить MS C#?

c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\csc.exe /target:exe /out:solution.exe ИмяФайла.cs

  • 9 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Тоже спрашивали -- проблемы с запуском в песочнице
    • 9 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      а можно подробней что за проблемы? тоже очень хочется свежий C#
9 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
Rendering to html failed: Transformation failed: Unclosed math text.
  • 9 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Unable to parse markup [type=CF_HTML]

    • 9 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

      WTF??


      дубль3.
      давайте запускать ruby так:
      ruby script_name.rb ONLINE_JUDGE

      Чтобы иметь возможность писать в скрипте вот так.
      Очень удобно!
      • 9 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Или просто:
        ruby script_name.rb ONLINE_JUDGE

        а в скрипте обрабатывать так.
      • 9 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        К слову про WTF - это оно на значки доллара так забавно реагирует... ;-)
        • 9 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          тогда надо галочку к комменту добавить "не парсить" или что-то в этом роде, а то, если бы не ваш коммент гадал бы в чем прикол.
          спасибо.
      • 9 лет назад, # ^ |
          Проголосовать: нравится +3 Проголосовать: не нравится
        Я поддерживаю камрада. Для C# (Mono), Ruby, Python и Haskell не определены макросы ONLINE_JUDGE. Это затрудняет написание автоматических генераторов тестов и вносит дисбаланс во всю экосистему. Давайте холить и лелеять более редкие языки. Людям которые их выбрали нужно дать возможность быть на равне с теми, кто использует более популярные платформы. Свободу попугаям!
        • 9 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          Ну для Python можно использовать if __debug__ (там -O передаётся). А с остальными и правда беда.
        • 9 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          Чтобы дать возможность быть наравне надо, в первую очередь, не давать задач которые на некоторых языках невозможно решить в принципе. Но, как я понял, администрация считает что эти языки настолько хороши, что единственный способ их урезвонить это зарезать нафиг по тайм-лимиту.
          • 8 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится

            Ну так скорость написания кода на Python, Ruby и подобных выше чем на С++, то есть люди, которые используют их, получают определенное преимущество. А так все справедливо: используй на здоровье, но знай о TL

            • 8 лет назад, # ^ |
                Проголосовать: нравится 0 Проголосовать: не нравится

              "Используй, но знай о TL" это просто другой способ сказать "не используй"))) Потому когда волнует TL (а это практически всегда) приходится писать на С и ко.

    • 9 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Unable to parse markup [type=CF_HTML]

9 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится
Could you give the detail about the compiler used to compile (newly-added) OCaml?  I'd like to know if the optimizing compiler ocamlopt is used (which I suppose it should be.)  Anyway, thanks for adding OCaml.
»
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Реквестирую обновление Ruby до 1.9.3, по причине того, что много исправлено и много чего добавлено и улучшего, скорость повысилась. Список улучшений.
»
9 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится
Неплохо бы было добавить поддержку D (D2). Очень удобный язык, на мой взгляд.
»
9 лет назад, # |
  Проголосовать: нравится +12 Проголосовать: не нравится
Update to Java 7?
  • »
    »
    9 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    It will be soon, not as update but as a separate language for now. Also we have desire to use it in production. Do you have such experience?
»
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Мне кажется, имеет смысл добавить один из лиспов. Или Common Lisp, или Scheme. Мне лично больше нравится второй, вариант имплементации - Racket. Михаил, какие дополнительные исследования стоит провести, дабы точнее выяснить - насколько это реально? На что стоит обратить внимание, какие измерения и примеры стоит сделать?
  • »
    »
    9 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

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

    • »
      »
      »
      9 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Ок. В принципе согласен, это вполне может быть нужно только мне одному. спасибо за ответ)

    • »
      »
      »
      9 лет назад, # ^ |
        Проголосовать: нравится +31 Проголосовать: не нравится

      А python3 нужен много кому...

      • »
        »
        »
        »
        9 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Призываю весь сознательный народ, кодящий на питоне, поставить плюс комментарию выше.

      • »
        »
        »
        »
        8 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Плюсую. Python3 необходим.

    • »
      »
      »
      8 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Я считаю, что хоть какой-нибудь лисп должен быть в списке. Лисперам проще перелезть с clojure на racket, чем даже на java. Да и такой вопрос спрашивается не первый раз http://codeforces.com/blog/entry/4722

      Common Lisp не нужен. Это старый стандарт, в котором много вещей лежат за плоскостью стандарта, в реализациях (либо каких-нибудь либах). Имена спешиалов имеют историчность(см. car, cdr). Впрочем, кто-нибудь может быть со мной не согласен.

      Scheme более интересный. Он более функциональный, чем CL, имеет больше фичей. Чего стоит только именованый let. Стандарт развивается http://scheme-reports.org/ Выше предлагали clojure. Удобный язык. Имеет удобные структуры, например. Лежит на JVM, развивается.

      Открытый вопрос: компилировать их, или запускать сразу?

      Если компилировать, не окажется ли, что читерно макросами в компайл-тайме можно что-то посчитать? (defmacro gen () `(quote ,(precalc arg1 arg2)))

      Если интерпретировать, всякие clojure могут работать медленно.

      Проще всего будет ввести какую-нибудь интерпретируемую scheme. Ракет, или что-то другое — огромной разницы нет, все-равно у каждого будет огромный сет стандартных макросов на все случаи жизни.

»
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Is there any possibility to increase time limits for such problems, which impossible to solve in Ruby due to large input data (test 28 for instance)?
Thanks.
  • »
    »
    9 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    This problem has a solution on Python consumed 60 ms and 3100 KB. I think it is possibly to solve it on Ruby. Anyway we do not guarantee that any problem has a solution on languages like Perl/PHP/Python/Ruby.

»
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Добрый день,
предполагается ли поддержка C++ компилятора в Visual Studio 2010 (C++11)?
»
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Why cant we use SortedSet / BigInteger etc in C# ?
Is is possible to include needed libraries / dependencies?

Thanks.
»
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Perl'а нет в списке

»
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Существует ли пример, на котором -foptimize-sibling-calls для gnu c/c++ заметно ухудшает результаты?

»
9 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Why is -fno-optimize-sibling-calls which disables tail call optimization passed to GCC? I've always assumed during the contests that GCC does TCO, so I'm a bit confused.

»
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

ожидается ли в ближайшем будущем добавление параметра "-std=c99" для языка GNU C 4?

»
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Доброго времени суток) Для всех языков программирования могут использоваться ТОЛЬКО стандартная либа и ничего более(ну кроме того, что написал сам)?

  • »
    »
    9 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Ну более-менее да. А вообще — запуск в помощь:)

    там можно проверить, что компилится, а что — нет.

»
9 лет назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится

Жаль, что нет Visual C# 2010.

»
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

It would be nice if you could add the Go programming language. They are close to finalizing the first stable version (Go 1). The latest weekly release is RC1.
http://weekly.golang.org/
http://code.google.com/p/go/downloads/list
The syntax and standard library API are mostly fixed; there are a few remaining implementation bugs but it is already generally very stable and usable.

»
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Вопрос к тем, кто пишет на Python. Почему if __debug__: работает когда я запускаю программу у себя на машине через python -O, но не работает на сервере? То есть на сервере не смотря на заявленный ключ -O ветка дебага выполняется. Я что-то делаю неправильно или так и должно быть? И существуют ли какие-нибудь еще трюки для того, чтобы добавить в текст программы код, который бы выполнялся локально, но не выполнялся при обработке тестирующей системой?

»
8 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

i think "special languages" should not be disabled for those "normal problems"... also, some of normal problems are not so hard for esoteric languages to solve...

»
8 лет назад, # |
  Проголосовать: нравится +11 Проголосовать: не нравится

Проблема с размером стека для программ на C#: дефолтного 1МБ не хватает для многих задач (например DFS для 10^5 уже падает по StackOverflowException). Простой способ

int stackSize = 64000000;
Thread t = new Thread(new ThreadStart(Solve), stackSize);
t.Start();    

не работает, так как For partially trusted code, maxStackSize is ignored if it is greater than the default stack size Поэтому хорошо бы поставить .NET дописать какую-то пост-билд команду, которая поправит хедер бинарника перед запуском, например с Visual Studio идет утилита EditBin, и эта проблема решается так: EDITBIN.EXE /STACK:64000000 file.exe

»
8 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Is there any plans to allow some versions of Lisp in contests? Common Lisp / Racket

»
8 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Если настоящий .net разрешить никак невозможно, то может быть хотя бы моно можно поставить какое-нибудь посвежее? Например на интервьюстрите такой вот код:

using System;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(Environment.OSVersion);
        Console.WriteLine(Environment.Version);
        Console.WriteLine(typeof(SortedSet<int>));
    }
}

генерит такой вот аутпут:

Unix 3.2.0.24
4.0.30319.1
System.Collections.Generic.SortedSet`1[System.Int32]

Тут, на кодфорсе, по прежнему:

Can't compile program.cs:
program.cs(10,34): error CS0246: The type or namespace name `SortedSet' could not be found. Are you missing a using directive or an assembly reference?
  • »
    »
    8 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Кажется, я догадываюсь в чём баг: в строчках компиляции жеж у вас gmcs, его давно уже пора было заменить dmcs! Замените плиз?

»
8 лет назад, # |
Rev. 2   Проголосовать: нравится -12 Проголосовать: не нравится

Add C++14

»
8 лет назад, # |
  Проголосовать: нравится +13 Проголосовать: не нравится

Почему GCC и G++ используются со свитчами O2, а FPC -- без? Эксперимент показывает, что разница есть, причём весьма существенная.

»
8 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

I think Java should have larger stack size. Default stack size is too strict for some problems. Stack size can be changed with -Xss option.

  • »
    »
    8 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    I agree, it should not be hard. For now it's possible to create a new Thread and specify the stack size in Thread's constructor.

»
8 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

I submitted a code in Java,But I get the following error

Source should satisfy regex [^{}]*public\s+class\s+(\w+).*

What does this mean???

  • »
    »
    8 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    It should contain public class SomeName before any '{' or '}'

    or something like this. Can yo give link to the submission ?

    • »
      »
      »
      7 лет назад, # ^ |
        Проголосовать: нравится -8 Проголосовать: не нравится

      thank you! I almost deleted the whole code without knowing that simply reordering the classes would solve the problem :)

  • »
    »
    8 месяцев назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    I am also getting same error what is the solution

»
8 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Когда появится поддержка python3? ответьте , пожалуйста.

»
8 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Мне кажется, или среди доступных компиляторов появился компилятор языка D?

»
8 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

Could you add the mtl package for Haskell to use the very useful Monad Transformer and State Monad

Thanks

»
8 лет назад, # |
  Проголосовать: нравится -8 Проголосовать: не нравится

Will Python 3.x will be supported? You could add it as a separate language, it's not neccessary to replace python 2.x. I think it's not hard to add it at all...

»
8 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

I don't see an F# option when submitting solutions. Help?

  • »
    »
    8 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    There are several discussions about it in this thread in Russian "view" (which you can read, though poorly, via google translate, I think). It looks like F# compiler have technical or some other problems and it was disabled for an unknown period of time...

»
8 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Не знал куда писать, решил сюда. Почему при просмотре задач через "Архив" в некоторых из них нет блока "Отправить". Вот скрин.

  • »
    »
    8 лет назад, # ^ |
      Проголосовать: нравится -15 Проголосовать: не нравится

    Авторы habrahabr.ru и codeforces.com один человек? Интерфейс очень напоминает хабр

  • »
    »
    8 лет назад, # ^ |
      Проголосовать: нравится -10 Проголосовать: не нравится

    Слева сверху есть кнопка "Отослать", нажав на которую можно или отправить сам исходник, или текст программы

»
8 лет назад, # |
  Проголосовать: нравится +17 Проголосовать: не нравится

Could you please upgrade GHC to the latest release (7.6.1)?

There are significant improvements comparing to the current one used in codeforces. It contains newer libraries which providing more powerful apis, provides new features and generates faster programs. These will make people using Haskell be able to challenge more complicated problems.

  • »
    »
    8 лет назад, # ^ |
    Rev. 5   Проголосовать: нравится +17 Проголосовать: не нравится

    I also agree on replacing the outdated GHC6 with GHC7.

    Instead of upgrading to GHC 7.6 directly, I suggest Codeforces to install Haskell-Platform 2012.4.0.0, which is more stable and well supported in many aspects. It contains GHC 7.4 and some new packages like vector, which makes Haskell competitive to imperative languages like C++ and Java in some problems.

    The LLVM backend is now stable in GHC7.4, and with -fllvm flags it will be enabled.

    I use ByteString state monad to parse input in haskell codes, Unfortunately, mtl package is not shipped with GHC (but included in haskell platform), so I have to paste a very long (like 50 lines?) piece of code implementing a very simple state monad each time.

»
8 лет назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

Появилась проблема со скачиванием условий из тренировок. Не нашел, куда еще можно сообщить о баге. Жму "скачать", но меня выбрасывает на страницу с сообщением того, что на codeforces что-то сломалось.

»
8 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

А какова вероятность увидеть в списке языков Objective-C ?

»
8 лет назад, # |
  Проголосовать: нравится +13 Проголосовать: не нравится

Заметил, что в списке языков при отправке решения стало "Microsoft Visual C++ 2008" вместо "2005". Поменялись ли ключи компилятора? Значит ли это, что MSVS 2005 больше не будет использоваться на сервере? Можно ли в ближайшее время ожидать MSVS 2010?

  • »
    »
    8 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится

    а еще лучше MSVS 2012

    • »
      »
      »
      8 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Не знаю, чем хороша или плоха MSVS 2012 по сравнению с предыдущими. Но могу сказать, что среди 2005/2008/2010 самая неудачная была 2008. Когда-то у меня одновременно стояли три упомянутые студии и была возможность сравнить скомпилированные exe-шники одного исходника по производительности. В коде активно использовались STL-контейнеры. Бинарник от 2008 работал в 1.5-2 раза медленнее, чем от 2005 и 2010.

»
8 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

May i know if this g++.exe -static -fno-optimize-sibling-calls -fno-strict-aliasing -DONLINE_JUDGE -lm -s -x c++ -Wl,--stack=268435456 -O2 -o %name%.exe %1 is still valid, ie. applies to GNU C++ 4.7 (currently used in programming contests held here on this site)?

»
8 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Пара вопросов по параметрам GCC:

  1. Нужен ли всё ещё -fno-optimize-sibling-calls? Баг вроде как уже исправили в 4.7: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51323
  2. -fno-strict-aliasing введён просто из-за того, что слишком много людей его неосознанно нарушают, или же по какой-то конкретной причине?
  • »
    »
    8 лет назад, # ^ |
      Проголосовать: нравится +8 Проголосовать: не нравится

    Дело в том, что эта конфигурация вроде как для неопределенной версии cpp.g++. Т.е. это generic конфигурация. Например, эти строки могут попасть в скрипты компиляции каких-нибудь пакетов задач, а у пользователя будет 4.6. Или Полигон разворачивается в том числе в ЛКШ, и какая там версия MinGW я не знаю.

    Оба флага были введены для борьбы с багами GCC, о которых писал e-maxx.

»
8 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

Add Go and Rust please, thank you

»
8 лет назад, # |
Rev. 2   Проголосовать: нравится +8 Проголосовать: не нравится

How the system compiles C++ 0x program? with -std=c++11?

  • »
    »
    8 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    -std=c++0x

    • »
      »
      »
      8 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      thanks

    • »
      »
      »
      8 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

      Maybe it should be changed to -std=gnu++0x for consistency? After all, GNU extensions are enabled when compiling in default mode (the command line for "GNU C++ 4" will implicitly use -std=gnu++98).

    • »
      »
      »
      8 лет назад, # ^ |
        Проголосовать: нравится +5 Проголосовать: не нравится

      Please make it -std=c++11

    • »
      »
      »
      8 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      It seems the compiler haven't enable -std=c++0x, for example here is my code for http://www.codeforces.com/contest/218/problem/A, in which I used 'auto' to declare a variable:

      #include <iostream>
      #include <string>
      #include <algorithm>
      #include <cmath>
      #include <map>
      #include <set>
      using namespace std;
      
      const int N = 1000;
      
      int main() {
      	auto n = 0,k = 0;
      	cin>>n>>k;
      
      	auto a = new int[2*n+1];
      
      	for(int i=0;i<=2*n;i++) {
      		cin>>a[i];
      	}
      
      	for(int i=0;i<=2*n;i++) {
      		if(k && i%2==1 && a[i]-a[i-1]>1 && a[i]-a[i+1]>1) {
      			a[i]--;
      			k--;
      		}
      		cout<<a[i]<<' ';
      	}
      	return 0;
      }
      
»
8 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

In the past two contests, I met a problem with Perl. Such as these submissions.

http://codeforces.com/contest/266/submission/2991670 http://codeforces.com/contest/268/submission/3021653 http://codeforces.com/contest/268/submission/3022677 http://codeforces.com/contest/268/submission/3025426

The programs passes some test cases, but got a "Idleness limit exceeded" on some other cases. Could anyone help me with this problem?

»
8 лет назад, # |
Rev. 2   Проголосовать: нравится +4 Проголосовать: не нравится

У вас указана версия Scala 2.9.2 в апдейте от 5 января, а на сайте за день до этого вышла версия 2.10. Не могли бы вы обновить, пожалуйста? Заранее спасибо.

»
8 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

Is it possible to know why we can't use import collections in our Python code?

»
8 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

OK, I know that [almost] nobody likes it, and that maybe it's not the best thing for programming [contests], but I would really like to use Fortran in the contests. So, that's it. Thanks anyway!

»
8 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

Какая полная строка компиляции для C++11 (c++0x здесь)?

Наверное, стоит добавить эту информацию в пост.

»
8 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Well, probably many people write things like that and it may be annoying but... I think that scheme/lisp is a really nice language and that it would be nice to have the possibility to submit code in it. It is quite unique compared to other languages.

»
8 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

As I am taking an assembly language course, I found it hard to find problems to practice. I think it will be great if CF add a assembly compiler to the system so we can use some simple problem to improve our assembly programming skills.

»
8 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Sorry for repeating, but I think it's a right time to finally add Python 3. It would be really nice from your side.

»
8 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

Mike, could you please add GCC C99 build target? It's so sweet to have variables in the middle of the scope and in for loop. Just gcc -std=c99. Or even update GNU C to support C99 — this shouldn't break existing C89 programs, while some people may take advantage of C99. Note you have C++11 as separate target.

»
7 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Скажите, а нельзя ли в качестве интерпретатора питона использовать не классический CPython, а его jit-разновидность pypy? Совместимость у него полная с 2.7.3 (на уровне необходимом для codeforces), а по скорости гораздо быстрее.

Это бы увеличило конкурентноспособность питона по отношению к компилируемым языкам. И не надо будет никаких "коеффициентов". В общем, дайте нам счастье :-)

  • »
    »
    7 лет назад, # ^ |
      Проголосовать: нравится +9 Проголосовать: не нравится

    ну что ж, раз pypy настолько быстрее, то давайте потестируем его на какой-нибудь задаче.

    задача: http://codeforces.ru/contest/265/problem/C

    решение: http://codeforces.ru/contest/265/submission/3467611

    CPU: Intel Core i5-2410M

    ОС: Ubuntu 12.04.2 x64 с ядром 3.5.0-28-generic

    python: 2.7.3 (default, Aug 1 2012, 05:14:39) [GCC 4.6.3]

    pypy: 2.0.0-beta2 with GCC 4.6.3 (из репозитория ppa:pypy/pypy-weekly)

    в файле input.txt — случайная строка из 1000000 букв l и r, как указано в условии.

    Результаты:

    time python -O lisska.py < input.txt > output_py.txt
    
    real	0m1.544s
    user	0m1.492s
    sys	0m0.048s
    
    time pypy -O lisska.py < input.txt > output_pypy.txt
    
    real	0m1.725s
    user	0m1.636s
    sys	0m0.084s
    

    мораль: pypy не нужен

    • »
      »
      »
      7 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Да-да. Я когда несколько лет назад настраивал Python пробовал разные реализации. Однозначно сказать, что какая-то оказывалась быстрее на задачах было нельзя.

    • »
      »
      »
      7 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Тоже решил потестировать.

      Задача: 282B - Раскрашивание яиц
      Решение: 3303340

      Генератор теста:

      n = 1000000
      print n
      for i in range(n):
          print "1000 0"
      

      Intel(R) Core(TM)2 Duo CPU
      Ubuntu 10.04 2.6.32-46-generic x86_64 GNU/Linux
      CPython: Python 2.6.5
      PyPy 1.9.0 with GCC 4.4.3 (https://bitbucket.org/pypy/pypy/downloads/pypy-1.9-linux64.tar.bz2)

      CPython:
      real    0m5.561s
      user    0m4.330s
      sys     0m0.320s
      

      PyPy: ждал 10 минут, так и не досчиталось.

      ОК, уберем из решения инкрементальную конкатенацию строк — 3661508:

      CPython:
      real    0m5.044s
      user    0m4.020s
      sys     0m0.270s
      
      PyPy:
      real    0m3.125s
      user    0m2.200s
      sys     0m0.110s
      

      Т.е. если писать код "правильно", то PyPy получился несколько быстрее. Если же писать "неправильно" (но вполне удобоваримо для CPython), то PyPy может задуматься на вечность.

    • »
      »
      »
      7 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится +2 Проголосовать: не нравится

      Хорошо, давайте проведём тестирование

      • Железо: Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz RAM16Gb
      • cPython: 2.7.3
      • PyPy: 1.9.0

      Тест №1. Линейное решето Эратосфена.
      """ Исходники — http://pastebin.com/6uY7nZHT """

      python eratosthenes.py
      4.88s user 0.02s system 99% cpu 4.909 total

      pypy eratosthenes.py
      0.53s user 0.04s system 100% cpu 0.567 total

      Кстати, этот алгоритм с такими параметрами (N=10**7) был нужен в задаче 300E — http://codeforces.ru/blog/entry/7497 (авторское решение).

      Тест №2. Сорировка списка с помощью list.sort().
      """ Исходники — http://pastebin.com/Sjm7yps9 Делал два замера, с сортировкой и без, потом смотрим разницу """

      С сортировкой:
      python sort.py 11.18s user 0.09s system 99% cpu 11.273 total
      pypy sort.py 2.95s user 0.05s system 99% cpu 3.013 total

      Без:
      python sort.py 4.62s user 0.08s system 99% cpu 4.701 total
      pypy sort.py 0.95s user 0.02s system 100% cpu 0.971 total

      А сорировка — один из наиболее часто использемых алгоритмов.

      Тест №3. Длинная арифметика
      """ Исходники — http://pastebin.com/Npv0zePC Импровизированный тест на суммы и умножения длинных чисел """

      python long_arithmetics.py 12.56s user 0.00s system 99% cpu 12.565 total
      pypy long_arithmetics.py 8.86s user 0.02s system 99% cpu 8.879 total

      Тест №4. Списки — добавление элементов
      """ Исходники — http://pastebin.com/FMAEpqaa """

      python lists.py 7.22s user 1.05s system 99% cpu 8.269 total
      pypy lists.py 2.07s user 1.79s system 99% cpu 3.860 total

      Тест №5. Словари — добавление и поиск
      """ Исходники — http://pastebin.com/6NM01LSM """

      python dicts.py 5.51s user 1.00s system 99% cpu 6.515 total
      pypy dicts.py 3.10s user 0.80s system 99% cpu 3.919 total

    • »
      »
      »
      7 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится +10 Проголосовать: не нравится

      CNT0, взял специально ваш пример. Сгенерил файл из 10 ** 6 случайных букв l или r. У меня оба питона сработали одинаково, в рамках погрешности:

      >>> time python -O bad.py < input.txt > output.txt
      python -O bad.py < bad > result 1.08s user 0.04s system 97% cpu 1.153 total

      >>> time pypy -O bad.py < bad > result
      pypy -O bad.py < bad > result 1.09s user 0.06s system 97% cpu 1.187 total

      Но вы в коде используете "устаревшую" возможность сортировки с помощью cmp (в питоне 3.0 была вырезана). jit её не мог подхватить, поэтому и тесты не показали выигрыша (в случаях, когда jit не зайдествован, pypy действительно может быть медленнее классической реализации). Поэтому давайте посмотрим на решение этой же задачи, написанное обычными питоновскими циклами: http://codeforces.ru/contest/265/submission/3228965

      >>> time python -O bad2.py < bad > result
      python -O bad2.py < bad > result 0.45s user 0.06s system 93% cpu 0.549 total

      >>> time pypy -O bad2.py < bad > result
      pypy -O bad2.py < bad > result 0.23s user 0.07s system 94% cpu 0.322 total

      И что видим? Питон проиграл в два раза. Прошу обратить внимание, что ваше решение через cmp работало в 2-4 раза медленнее.

      Оба интерпретатора — это инструменты, которые надо правильно использовать для получения максимального результата. Поэтому, призываю делать выводы объективно, без эмоций, с адекватными тестами.

»
7 лет назад, # |
  Проголосовать: нравится +4 Проголосовать: не нравится

круто.

»
7 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Будет ли поддержка VB.NET?

»
7 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

А возможна ли поддержка JavaScript ? При запуске оного в одном из движков. будь то Rhino, V8 ("d8"), или др. ?

»
7 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

I would like to +1 to numerous requests in this thread about missing Haskell libraries. Here is a list of the most important ones, in my opinion:

vector — provides Vector data type. Reference: 'Use this package whenever you'd use an array in another language'

unordered-containers — provides HashMap and HashSet data types.

mtl — provides Control.Monad.State, Control.Monad.Reader and others. Crucial for writing stateful code, without them it feels like part of the language is missing.

These are really the most basic packages and IMHO shouldn't be missing. (How would you feel about exclusion of std::vector from C++?) It would be great if at least these packages were installed but it's really simpler to just install Haskell Platform.

»
7 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

About Ruby. Ruby has no built-in support for multi-dimensional arrays, and the workaround like Array.new(n) { Array.new(m) { 0 } } is really a pain in the ass.

I think arrays are really important to algorithm problems. So just like other guys suggested to add the 'vector' hackage to Haskell(which I'll totally vote for it), maybe a more handy version of multi-dimensional array for Ruby should be added, like 'narray'.

Here's the webpage for narray. http://narray.rubyforge.org/SPEC.en

It's pretty neat.

»
7 лет назад, # |
  Проголосовать: нравится 0