2010-04-22 3 views
1

Une tâche réactive est parfois vue dans le concours de programmation IOI. Contrairement aux tâches par lots, les solutions réactives prennent en charge les entrées d'un autre programme et les émettent en sortie. Le programme «interroge» le programme du juge un certain nombre de fois, puis émet une réponse finale.Comment créer des tâches réactives pour programmer des compétitions?

Un exemple

Le programme client accepte lignes une par une, et tout simplement écho en arrière. Quand il a rencontré une ligne avec "done", il existe immédiatement.

Le programme client en Java ressemble à ceci:

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); 
    } 
} 

Le programme juge donne l'entrée et la sortie traite du programme client. Dans cet exemple, il lui fournit une entrée prédéfinie et vérifie si le programme client l'a renvoyé correctement.

Une séance pourrait se présenter comme suit:

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

Je vais avoir du mal à écrire le programme de juge et de l'avoir juge le programme client. J'apprécierais que quelqu'un puisse écrire un programme de juge pour mon exemple.

Répondre

0

Vous obtenez des programmes pour communiquer entre eux via l'invite de commande.

Sur les fenêtres, vous écririez:

java judge | java client 

Il est redirigeant la sortie de judge à l'entrée de client. C'est-à-dire que tant que judge écrira dans le flux de sortie standard (ce qui sera le cas) et que le client lit le flux d'entrée standard (qui est le vôtre), alors cela fonctionnera.

+0

Oui. Le problème est que le client doit aussi * écrire * la sortie au juge, donc ce n'est pas complètement à sens unique. – directx

Questions connexes