Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import scala.collection.mutable.Map
- import scala.io.StdIn._
- /**
- * Objectif
- * Le type MIME est utilisé dans de nombreux protocoles internet pour associer un type de média (html, image, vidéo, ...) avec le contenu envoyé.
- * Vous devez écrire un programme qui permet de détecter le type MIME d'un fichier à partir de son nom.
- *
- * Règles
- * Une table qui associe un type MIME avec une extension de fichier vous est fournie.
- * Une liste de noms de fichier à transférer vous sera aussi fournie et vous devrez déduire pour chacun d'eux, le type MIME à utiliser.
- * L'extension d'un fichier se définit par la partie du nom qui se trouve après le dernier point qui le compose.
- * Si l'extension du fichier est présente dans la table d'association (la casse ne compte pas. ex : TXT est équivalent à txt), alors affichez le type MIME correspondant.
- * S'il n'est pas possible de trouver le type MIME associé à un fichier, ou si le fichier n'a pas d'extensions, affichez UNKNOWN.
- *
- * Entrées du jeu
- * Entrée
- * Ligne 1: Nombre N d’éléments composant la table d'association.
- * Ligne 2 : Nombre Q de noms de fichiers à analyser.
- * N lignes suivantes : Une extension de fichier par ligne et son type MIME correspondant (séparé par un espace).
- * Q lignes suivantes : Un nom de fichier par ligne.
- *
- * Sortie
- * Pour chacun des Q noms de fichiers, afficher sur une ligne le type MIME associé. S'il n'y a pas de correspondance, afficher UNKNOWN.
- *
- * Contraintes
- * 0 < N < 10000
- * 0 < Q < 10000
- * Les extensions de fichiers sont composées d'un maximum de 10 caractères ascii alphanumériques.
- * Les type MIME sont composés d'un maximum de 50 caractères ascii alphanumérique et de ponctuations.
- * Les noms de fichiers sont composés d'un maximum de 256 caractères ascii alphanumériques et points.
- * Il n'y a pas d'espaces dans les noms de fichiers, les extensions et les types MIME.
- *
- * Exemple
- * Entrée
- * 2
- * 4
- * html text/html
- * png image/png
- * test.html
- * noextension
- * portrait.png
- * doc.TXT
- *
- * Sortie
- * text/html
- * UNKNOWN
- * image/png
- * UNKNOWN
- */
- object Solution extends App {
- val n = readLine.toInt // Nombre d'éléments constituant la table d'association.
- val q = readLine.toInt // Nombre Q de noms de fichiers à analyser.
- var mtMap: Map[String, String] = Map()
- // Remplissage de la table d'association entre les extensions et les types MIME
- for (i <- 0 until n) {
- val Array(ext, mt) = readLine split " "
- mtMap = mtMap + (ext.toLowerCase -> mt)
- }
- // Analyse des noms de fichiers
- for (i <- 0 until q) {
- val fname = readLine // Un nom de fichier par ligne.
- val fnameSplit = fname.split('.')
- if (fnameSplit.length <= 1 || (fname.lastIndexOf('.') == fname.length() - 1)) {
- println("UNKNOWN")
- } else {
- val extension = fnameSplit(fnameSplit.length - 1).toLowerCase
- val e: Option[String] = mtMap.get(extension)
- println(if (e.isDefined) e.get else "UNKNOWN")
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement