Sujet :
Défis C
-
4ème défi C & C++ : Balade dans le métro parisien
Bonjour à toutes et à tous,
Le 4ème défi C & C++ est lancé. Il s'agit de rechercher le meilleur itinéraire entre 2 stations dans le métro parisien. Ce défi commence aujourd'hui (samedi 9 mai 2009) et les copies sont ramassées le dimanche 14 juin 2009 à minuit.
Pour plus d'information, les différents points d'entrée sont :
Si vous prévoyez de participer au défi, envoyez un petit MP aux organisateurs. Il ne s'agit nullement d'un engagement de votre part mais cela nous permet de composer un jury avec suffisamment de membres en fonction du nombre de réponses prévisibles.
Si vous avez la moindre question concernant ce défi ou si un point du règlement vous parait obscur, il suffit de poster dans la suite de ce message (les questions et les réponses sont publiques).
Un complément d'information concernant ces critères dévaluation des différents projets et ce qu'ils sous entendent sera fourni pendant le déroulement de ce défi. Il n'est pas exclu non plus que certains critères ne disparaissent ou bien fusionnent avec d'autres critères ni que de nouveaux critères n'apparaissent. Toutefois, le poid total de chacune des 5 grandes familles de critères ne sera pas remis en cause. Toute mise à jour des critères fera l'objet d'une diffusion dans ce post.
Bon courage à tous
Raymond
Vous souhaitez participer à la rubrique
Réseaux ?
Contactez-moi
Cafuro
Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
e-verbe
Un logiciel de conjugaison des verbes de la langue française.
Ma page personnelle sur DVP.
-
J'ai une question...
Le règlement dit :
"Les correspondances entre les différentes lignes doivent être détectées par la concordance des noms des stations sur les différentes lignes."
Si je l'applique à la lettre, cela signifie que la ligne de RER E n'est pas connectée au reste du réseau (qui n'a ni station Haussmann-Saint Lazare, ni station Magenta), que la station Auber (de la ligne A du RER) n'est pas connectée au reste du réseau, ou que Saint Michel et Saint Michel Notre Dame ne correspondent pas (pas plus que Neuilly Porte Maillot, ou un certain nombre de stations de la ligne C).
Est ce le cas?
Sinon, ne serait il pas préférable de produire une liste des correspondances, (le cas de stations comme Auber, qui correspondent avec plusieurs stations du métro, étant problématique...)?
Francois
-
Bonjour,
Comme vient de le dire implicitement fcharton,peut-on utiliser un autre fichier comme base de travail?
Un fichier indiquant les correspondances par exemple....
Edit:Quand vous dîtes "-h afffiche l'aide en ligne",je dois renvoyer l'utilisateur vers un page web?
-
Cool, un nouveau défis !
Je dois dire que je me pose la même question que les personnes ci-dessus. La gestion des correspondances est un peu ambigüe dans le fichier texte.
Ok pour les stations utilisées par plusieurs lignes et qui ont le même nom, mais les lignes qui ont des stations de noms différents mais qui en réalité sont une correspondance ?
-

Envoyé par
Bueno
Quand vous dîtes "-h afffiche l'aide en ligne",je dois renvoyer l'utilisateur vers un page web?
Non, cela veut dire que le programme doit affichier (par printf ou cout) le mode de lancement du programme et quelques lignes d'explication des différents paramètres.
Regarde sur le précédent défi comment ont fait les autres. C'est une pratique courante sur beaucoup de programmes "unix like". Quand on ne sait pas quels paramètres accepte un programme, on fait programme -h pour les connaitre et avoir une petite idée sur leur signification et leur usage.
Raymond
Vous souhaitez participer à la rubrique
Réseaux ?
Contactez-moi
Cafuro
Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
e-verbe
Un logiciel de conjugaison des verbes de la langue française.
Ma page personnelle sur DVP.
-

Envoyé par
fcharton
Le règlement dit :
"Les correspondances entre les différentes lignes doivent être détectées par la concordance des noms des stations sur les différentes lignes."
Si je l'applique à la lettre, cela signifie que la ligne de RER E n'est pas connectée au reste du réseau (qui n'a ni station Haussmann-Saint Lazare, ni station Magenta), que la station Auber (de la ligne A du RER) n'est pas connectée au reste du réseau, ou que Saint Michel et Saint Michel Notre Dame ne correspondent pas (pas plus que Neuilly Porte Maillot, ou un certain nombre de stations de la ligne C).
Est ce le cas?
C'est le cas et dans ce cas, il sera impossible d'aller vers auber si la station d'origine n'est pas une autre station sur la ligne A
C'est le fichier fourni sur la page du défi qui doit être utilisé et pas un autre. Interdiction de le modifier pour coller un peu mieux à la réalité. C'est peut être frustant mais le métro parisien est plein de petites particularités et il n'apporte rien pour ce défi de toutes les prendre en compte.
Une autre remarque, votre programme doit être le plus indépendant possible du contenu du fichier et ne doit rien supposer ou interpréter. Ce n'est peut être pas ce fichier qui sera utilisé lors de l'analyse de vos projets par les membres du jury.
Raymond
Vous souhaitez participer à la rubrique
Réseaux ?
Contactez-moi
Cafuro
Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
e-verbe
Un logiciel de conjugaison des verbes de la langue française.
Ma page personnelle sur DVP.
-
Salut,
dans les argv, il y a peut-être un problème du fait des noms de stations qui peuvent contenir des espaces. Faut-il "bricoler" dans les arguments, ou spécifie t-on dans le règlement qu'il ne faut pas passer de noms composés en arguments, ou encore précise t-on qu'il faut les entourer de guillemets?
A+
Pfeuh
-

Envoyé par
pfeuh
dans les argv, il y a peut-être un problème du fait des noms de stations qui peuvent contenir des espaces. Faut-il "bricoler" dans les arguments, ou spécifie t-on dans le règlement qu'il ne faut pas passer de noms composés en arguments, ou encore précise t-on qu'il faut les entourer de guillemets?
Je crois (mais c'est à confirmer) que si tu dois passer un argument avec des espaces à un programme, il suffit de l'encadrer avec des double quotes. Il arrive alors dans le programme (argv) sans les double quotes mais avec les espaces et tout et tout (d'ailleurs, c'est comme cela que l'on passe un nom long Microsoft comme "c:\program files")
Raymond
Vous souhaitez participer à la rubrique
Réseaux ?
Contactez-moi
Cafuro
Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
e-verbe
Un logiciel de conjugaison des verbes de la langue française.
Ma page personnelle sur DVP.
-
Bonjour
Chic un nouveau défi, je vais me refaire...
Mais pour commencer, j'ai une question :
Je vois dans les règles que l'on peut utiliser boost. Je suis interressé par boost::program_option, mais cette bibliothèque nécessite une compilation, et ne peut être utilisé directement (en header only). Cela pose t il problème ?
De plus, je galère pour trouver un moyen de lire un fichier Unicode de manière standard (voire les FAQ par exemple...)
--
Jérémie
-
Il y a une petite contrainte supplémentaire, lors de la saisie des noms des stations des points de départ et d'arrivée. Le programme doit être insensible aux différences majuscules/minuscules, aux accents et autres signes de ponctuation. C'est à dire que si l'utilisateur saisi "champs elysees, le programme doit comprendre qu'il parle en fait de la station "Champs-Elysées". Par contre "Châtelet" est différent de "Châtelet-Les Halles"
De ce fait dans mon code, j'ai pas encore trouvé le moyen d'effectuer la comparaison entre deux chaines sans écrire de caractères avec "accents" dans fichier source. Mon fichier est encodé UTF8... Est-ce que ça peut être pénalisant ?
-

Envoyé par
jfouche
De plus, je galère pour trouver un moyen de lire un fichier Unicode de manière standard (voire les FAQ par exemple...)
Désolé si je n'ai pas mis d'exemple dans la page du défi
Raymond
Vous souhaitez participer à la rubrique
Réseaux ?
Contactez-moi
Cafuro
Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
e-verbe
Un logiciel de conjugaison des verbes de la langue française.
Ma page personnelle sur DVP.
-

Envoyé par
Climoo
De ce fait dans mon code, j'ai pas encore trouvé le moyen d'effectuer la comparaison entre deux chaines sans écrire de caractères avec "accents" dans fichier source. Mon fichier est encodé UTF8... Est-ce que ça peut être pénalisant ?
Rappel, le fichier à utiliser est le fichier qui peut être téléchargé depuis la page du défi (cette URL).
Oui, ce fichier est encodé en Unicode mais c'est une contrainte imposée par le défi.
Raymond
Vous souhaitez participer à la rubrique
Réseaux ?
Contactez-moi
Cafuro
Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
e-verbe
Un logiciel de conjugaison des verbes de la langue française.
Ma page personnelle sur DVP.
-
Je me suis mal exprimé je crois...
Quand je parlais de mon fichier source, je parlais de mon fichier contenant mon code. Et dedans, j'ai écrit des 'é' ou des 'à' par exemple. Je peux me tromper, mais je crois que ça peut poser certains problèmes de portabilité pour la compilation ou l'exécution, car mon fichier n'est plus codé en ASCII.
Et je rejoins jfouche, lire un fichier unicode de manière standard est vraiment galère. Ce que j'ai fait fonctionne, mais j'ai aucune idée de la portabilité
-

Envoyé par
Climoo
Je
Et je rejoins jfouche, lire un fichier unicode de manière standard est vraiment galère
C'est plus ou moins vrai. Et puis c'est un défi, non ?
Le fichier fichier à lire est un fichier encodé en UTF16 avec un BOM.
La lecture est simple mais l'interprétation plus compliquée pour faire du portable.
De plus, les règles du défi impose du C ANSI/ISO (C89/C90) donc pas de wchar_t et les variantes wide des fonction de string.h... Dans tous les cas ce n'est pas portable aisement..
De plus pas d'extension Microsoft autorisée !!
L'affichage de caractères unicode sur la console sans C99 va être sympa ! Qui plus est si le prog doit être portable...
Par contre, petite question car c'est pas clair : le prog doit être portable sur windows ET linux ou fonctionner sur l'un OU sur l'autre ?
PS : encore heureux que les noms de stations ne comportent pas de caractères non ANSI car la lecture d'arguments non ANSI par un main() avec des char, c'est pas jojo ....
-
-
Donc, si le code doit être :
- du C90
- portable sur Linux et windows
- ne pas utiliser de lib tierce
les gars vont s'amuser !!!
Il est aberrant d'imposer un jeu de donnée UTF16 (dont on ne peut supposer le contenu) avec une E/S ASCII/ANSI (imposée par le C90) !
Il faudrait au moins autoriser du C99 (ou révision 95)... ou gérer les stations d'entrée et l'itinéraire de sortie par des fichiers en entrée et en sortie...
-
Désolé de remettre 10 balles dans le nourrain :

Envoyé par
jfouche
j'ai une question :
Je vois dans les
règles que l'on peut utiliser boost. Je suis intéressé par boost::program_option, mais cette bibliothèque nécessite une compilation, et ne peut être utilisé directement (en header only). Cela pose t il problème ?
Peut on utiliser les bibliothèques à compiler de boost ?
Merci
--
Jérémie
-
-
De plus, les règles du défi impose du C ANSI/ISO (C89/C90) donc pas de wchar_t et les variantes wide des fonction de string.h... Dans tous les cas ce n'est pas portable aisement..
.
Pas de wchar_t ?
J'y connais pas grand chose aux normes alors (pour pas dire rien du tout)... Mince... J'ai aucune idée comment faire sans ça !
PS : encore heureux que les noms de stations ne comportent pas de caractères non ANSI car la lecture d'arguments non ANSI par un main() avec des char, c'est pas jojo ....
Ben dans le fichier, y'a plusieurs accents etc. Je croyais que les accents c'était pas ANSI. non?
-
J'ai bien trouvé une solution sans wchar_t mais cela me parait gore 
On verra bien ce que cela donne...
--
Jérémie
Discussions similaires
-
Réponses: 0
Dernier message: 09/05/2009, 12h31
-
Réponses: 0
Dernier message: 09/05/2009, 12h29
Partager