UP | HOME

Concours Prog @ UNS

Table des matières

Introduction

Vous allez participer à un concours de programmation en binôme pendant 4 heures. Ce concours vous fera progresser sur les aspects suivants :

  1. Algorithmique : élaborer des algorithmes pour résoudre des problèmes simples, principalement de la recherche et du tri.
  2. Programmation : implémentation correcte d’algorithmes et gestion simple entrées/sorties.
  3. Travail en temps limité: organisation et concentration sont nécessaires, mais sans oublier de s’amuser …

Inscription   KEY

DEADLINE: <2017-12-12 mar.>

Le concours s’effectue en binôme. Le formulaire d’inscription est disponible ici.

Vous pourrez aussi vous inscrire sur place.

Déroulement de la compétition

  1. La compétition dure 4 heures.
  2. 7 problèmes ou plus sont posés.
  3. Chaque solution à un problème soumise au juge est appelée un run.
  4. Chaque run est accepté ou refusé par le juge.

Score

Résoudre le maximum de problèmes le plus rapidement possible.

  1. Les équipes sont classées en fonction du nombre de problèmes résolus.
  2. Les égalités sont arbitrées par le délai total, puis, si nécessaire, la date du dernier run.

Le délai pour résoudre un problème est le temps passé entre le début de la compétition et le run accepté.

Environnement de travail

  • Vous travaillez sur les machines du 3ème étage du Petit Valrose.
  • Vous avez accès à internet

Préparer le concours

ECHO - Commande echo   KEY

Vous allez programmer la fameuse commande echo pour un vecteur d’entiers. Ce programme sera souvent un point de départ pour résoudre les autres problème.
La solution est donnée avec le langage R. Lisez-la attentivement! Vous n'avez qu'à suivre les indications pour résoudre ce problème.

Input

L’entrée du programme est une suite d’entiers naturels (approximativement 200000) compris entre 1 et 1000000.

Output

Afficher un entier par ligne (depuis la suite d’entiers lue en entrée).

Example

Input:
2
10
20

Output:
2
10
20

Answer

Lecture des données depuis l’entrée standard

ReadStdin <- function(what = integer()) {
  ## Lire un vecteur (par défaut d'entiers) sur l'entrée standard.
  ## L'argument what permet de choisir le type de données. 
  ## Par exemple, ReadStdin(what = character()) lit un vecteur de chaînes de caractères.
  ##
  ## Capturer le flux d'entrée standard.
  stream <- file("stdin","r") 
  ## Lire le flux jusqu'à la fin dans un vecteur.
  x <- scan(file=stream, what= what, quiet=TRUE) 
  ## Ferme proprement le flux (pour éviter un warning).
  close(stream)
  ## Renvoyer le vecteur lu.
  return(x)
}

Écriture du résultat sur la sortie standard

WriteStdout <- function(x, collapse = "\n") {
  ## Écrire le vecteur numérique x sur la sortie standard
  ##
  ## Utiliser l'écriture décimale (pas la notation scientifique).
  y <- format(as.numeric(x), scientific = FALSE, trim = TRUE) 
  ## Écrire le vecteur. Par défaut, il y a un nombre par ligne.
  cat(y, sep = collapse) 
  ## Attention, on appelle la fonction cat et non pas print!
}

Procédure principale

######################################
## 1. Lire les données depuis l'entrée standard:
## Ici, l'entrée est un vecteur de nombres. 
x <- ReadStdin()
######################################
## 2. Traitement de l'entrée 
## Ici, il n'y a rien à faire pour echo.
y <- x 
######################################
## 3. Écrire le résultat du traitement sur la sortie standard
WriteStdout(y)

Tester le script avant de la soumettre.

  • Pour le tester avec un terminal shell (pas dans l’interpréteur R)

    On crée un fichier d’entrée contenant des cas de test pour le problème.

    echo -e `seq -s '\n' 1 20` >  test.in
    

    Ici, le fichier test.in contient les nombres entiers compris entre 1 et 20.

    cat test.in
    

    Le contenu du fichier est redirigée sur l’entrée standard de notre script R. La commande Rscript permet d’exécuter un script R dans un terminal shell.

    Rscript ECHO.R < test.in
    
  • Pour le tester avec un interpréteur R (par exemple, dans RStudio)   KEY
    • Exécuter le programme
    • Taper ou copier/coller l’entrée dans l’invite de l’interpréteur
    • Taper ctrl-d quand vous avez fini

Submit a solution

Il faut maintenant soumettre le fichier ECHO.R pour obtenir le verdict du juge après un run.

  • Lancer la commande pc2team.sh & dans un terminal shell.
  • Entrer votre login et votre mot de passe.
  • En cas de besoin, consulter le guide officiel (en anglais).

Guide officiel des équipes

Il est disponible ici en anglais.

Autres langages

Quelques solutions dans d’autres langages sont données ici à titre indicatif.

Created: 2017-12-08 ven. 11:09