2010-04-22 4 views
1

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

Пример

клиент программа принимает строки один за другим, а просто повторяет его обратно. Когда он сталкивается с линией с «done», она существует немедленно.

Программа клиента в Java выглядит следующим образом:

import java.util.*; 
class Main{ 
    public static void main (String[] args){ 
    Scanner in = new Scanner(System.in); 
    String s; 
    while (!(s=in.nextLine()).equals("done")) 
     System.out.println(s); 
    } 
} 

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

Сеанс может выглядеть следующим образом:

Judge  Client 
------------------ 
Hello 
      Hello 
World 
      World 
done 

У меня возникли проблемы написания программы судьи и с его судить клиентскую программу. Я был бы признателен, если бы кто-нибудь мог написать программу для моего примера.

ответ

0

Вы получаете программы для общения друг с другом через командную строку.

На окнах, вы бы написать:

java judge | java client 

Так это перенаправив вывод judge на вход client.

То есть, если judge записывает в стандартный поток вывода (который он будет), а клиент считывает из стандартного потока ввода (который есть у вас), тогда он будет работать.

+0

Да. Проблема в том, что клиенту также необходимо * написать * вывод судье, так что это не совсем один способ. – directx