Advertisement
MonsterScripter

CodinGame_2023_08_27__07_55_36__mime_type.scala

Aug 27th, 2023
1,990
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 3.09 KB | None | 0 0
  1. import scala.collection.mutable.Map
  2. import scala.io.StdIn._
  3.  
  4. /**
  5.  * Objectif
  6.  * 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é.
  7.  * Vous devez écrire un programme qui permet de détecter le type MIME d'un fichier à partir de son nom.
  8.  *
  9.  * Règles
  10.  * Une table qui associe un type MIME avec une extension de fichier vous est fournie.
  11.  * 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.
  12.  * L'extension d'un fichier se définit par la partie du nom qui se trouve après le dernier point qui le compose.
  13.  * 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.
  14.  * 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.
  15.  *
  16.  * Entrées du jeu
  17.  * Entrée
  18.  * Ligne 1: Nombre N d’éléments composant la table d'association.
  19.  * Ligne 2 : Nombre Q de noms de fichiers à analyser.
  20.  * N lignes suivantes : Une extension de fichier par ligne et son type MIME correspondant (séparé par un espace).
  21.  * Q lignes suivantes : Un nom de fichier par ligne.
  22.  *
  23.  * Sortie
  24.  * 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.
  25.  *
  26.  * Contraintes
  27.  * 0 < N < 10000
  28.  * 0 < Q < 10000
  29.  * Les extensions de fichiers sont composées d'un maximum de 10 caractères ascii alphanumériques.
  30.  * Les type MIME sont composés d'un maximum de 50 caractères ascii alphanumérique et de ponctuations.
  31.  * Les noms de fichiers sont composés d'un maximum de 256 caractères ascii alphanumériques et points.
  32.  * Il n'y a pas d'espaces dans les noms de fichiers, les extensions et les types MIME.
  33.  *
  34.  * Exemple
  35.  * Entrée
  36.  * 2
  37.  * 4
  38.  * html text/html
  39.  * png image/png
  40.  * test.html
  41.  * noextension
  42.  * portrait.png
  43.  * doc.TXT
  44.  *
  45.  * Sortie
  46.  * text/html
  47.  * UNKNOWN
  48.  * image/png
  49.  * UNKNOWN
  50.  */
  51.  
  52. object Solution extends App {
  53.     val n = readLine.toInt // Nombre d'éléments constituant la table d'association.
  54.     val q = readLine.toInt // Nombre Q de noms de fichiers à analyser.
  55.     var mtMap: Map[String, String] = Map()
  56.    
  57.     // Remplissage de la table d'association entre les extensions et les types MIME
  58.     for (i <- 0 until n) {
  59.         val Array(ext, mt) = readLine split " "
  60.         mtMap = mtMap + (ext.toLowerCase -> mt)
  61.     }
  62.    
  63.     // Analyse des noms de fichiers
  64.     for (i <- 0 until q) {
  65.         val fname = readLine // Un nom de fichier par ligne.
  66.         val fnameSplit = fname.split('.')
  67.        
  68.         if (fnameSplit.length <= 1 || (fname.lastIndexOf('.') == fname.length() - 1)) {
  69.             println("UNKNOWN")
  70.         } else {
  71.             val extension = fnameSplit(fnameSplit.length - 1).toLowerCase
  72.             val e: Option[String] = mtMap.get(extension)
  73.             println(if (e.isDefined) e.get else "UNKNOWN")
  74.         }
  75.     }
  76. }
  77.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement