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

Автор PML, 14 лет назад, По-русски
Подскажите, как проверить своё решение "вручную" на определённую задачу (на Windows-е) если есть архив задачи (тесты, авторские решение, чекер, и т.п.).
  • Проголосовать: нравится
  • +1
  • Проголосовать: не нравится

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

Больше конкретики, телепатические модули сейчас очень доргие :)

Какой архив?

Попробуйте найти какой нить manual или хотя бы информацию от авторов.

Ну или хотя бы дайте ссылку на этот архив. Неужели все вместе не разберёмся :)

  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Я имею ввиду такую штуку: у меня в какой-нибудь папке есть входные и выходные данные (допустим в формате in01.txt и out01.txt) мне нужно "ручками" написать такую программку, чтоб она запускала моё решение на каждом тесте и сравнивала "мой" ответ с правильным ответом. Ну если это возможно то чтоб показывала время работы моего решения на каждом тесте (только для того чтоб отслеживать TimeLimit-ы). Но мне это нужно на С/С++.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Имеется ввиду что надо проверить какую-то конкретную задачу или написать систему проверки?

Если первое то могу посоветовать скачать от сюда run.exe он умеет отслеживать TL,ML, RE. Для запуска нужно написать несложный бат-скрипт. Также можно поискать в интернете программу tchoose. Она умеет полностью тестировать задачу если ей дать тесты и чекер.
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Можно про батнички поподробнее и с примером?
    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Вот батник которым я всегда пользуюсь если ответ всегда один:

      del result.txt
      echo off
      for %%i in (??) do
      (
      copy %%i input.txt
      solution.exe
      fc output.txt %%i.a >> result.txt
      )

      Значит у нас в папке с батником лежат наша программа(solution.exe) и тесты(01, 01.а, 02, 02.а, и т.д). А входной файл это input.txt, а выходной output.txt. И результат проверки лежит в result.txt.
      • 14 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        А время?
        Тут уже видимо нужно run.exe прикрутить.
        Но осталось кажется немного.
        • 14 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          del result.txt
          echo off
          for %%i in (??) do
          (
          copy %%i input.txt
          run -t 2s -m 64M solution.exe
          fc output.txt %%i.a >> result.txt
          )

          Так же в папке должна быть программа run.exe
          • 14 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            "run -t 2s -m 64M solution.exe" означает, что ограничение на время 2 сек, а на память 64 мегабайта.
          • 14 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            а еще рану нужен invoke.dll но он вместе с ним в одном архиве идет.
      • 14 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        А вот батник если ответов может быть несколько:

        del result.txt
        echo off
        for %%i in (??) do
        (
        copy %%i input.txt
        solution.exe
        check.exe input.txt output.txt %%i.a >> result.txt
        )

        Все точно также, но только здесь используется чекер задачи(check.exe).
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
У меня какая-то проблема с циклом. (( Например если у меня 10 тестов в формате (in01.txt out01.txt), (in02.txt out02.txt) и т.д. как в точности будет выглядеть цикл?
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Щас, подожди плз минут 5. Я попробую решить твою проблему.
    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Вот test.bat

      del result.txt
      echo off
      for %%i in (1, 1, 9) do
      (
      copy in0%%i.txt input.txt
      run -t 2s -m 64M solution
      check input.txt output.txt out%%i.txt >> result.txt
      )
      for %%i in (10, 1, 99) do
      (
      copy in%%i.txt input.txt
      run -t 2s -m 64M solution
      check input.txt output.txt out%%i.txt >> result.txt
      )
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    рекомендую вбить в консоль help for и почитать. мне обычно в таких случаях помогало.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

В чём проще всего разобраться, если не нужно какой то сверх супертости системы:

http://www.contester.ru/

готовая тестирующая система. Устанавливаешь систему, создаёшь контест, создаёшь задачу, загружаешь тесты, чекер. И всё. Короче готовая тестирующая система, не нужно париться с настройкой. Я пользуюсь. Правда я так и не разобрался как писать чекеры на сях. Только делфя, это значит что она должна быть поставлена на твоём компе (возможно пойдёт паскаль - посмотри на форуме или на сайте). Короче стоит чуть разобраться, чтобы потом пользоваться.

14 лет назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится
Довольно неплохим решением будет тестер тимуса:
очень удобно и есть почти исчерпывающий мануал