Advertisement
MonsterScripter

CodinGame_2023_09_01__18_21_50__mime_type.cpp

Sep 1st, 2023
650
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.56 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. /*
  6.     Objectif
  7.     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é. Ce type MIME est généralement déduit de l'extension du fichier à transférer.
  8.  
  9.     Vous devez écrire un programme qui permet de détecter le type MIME d'un fichier à partir de son nom.
  10.  
  11.     Règles
  12.     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.
  13.  
  14.     L'extension d'un fichier se définit par la partie du nom qui se trouve après le dernier point qui le compose.
  15.     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.
  16.    
  17.     Entrées du jeu
  18.     Entrée
  19.     Ligne 1: Nombre N d’éléments composant la table d'association.
  20.     Ligne 2 : Nombre Q de noms de fichiers à analyser.
  21.     N lignes suivantes : Une extension de fichier par ligne et son type MIME correspondant (séparé par un espace).
  22.     Q lignes suivantes : Un nom de fichier par ligne.
  23.    
  24.     Sortie
  25.     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.
  26.    
  27.     Contraintes
  28.     0 < N < 10000
  29.     0 < Q < 10000
  30.     Les extensions de fichiers sont composées d'un maximum de 10 caractères ascii alphanumériques.
  31.     Les type MIME sont composés d'un maximum de 50 caractères ascii alphanumérique et de ponctuations.
  32.     Les noms de fichiers sont composés d'un maximum de 256 caractères ascii alphanumériques et points.
  33.     Il n'y a pas d'espaces dans les noms de fichiers, les extensions et les types MIME.
  34.    
  35.     Exemple
  36.     Entrée
  37.     2
  38.     4
  39.     html text/html
  40.     png image/png
  41.     test.html
  42.     noextension
  43.     portrait.png
  44.     doc.TXT
  45.    
  46.     Sortie
  47.     text/html
  48.     UNKNOWN
  49.     image/png
  50.     UNKNOWN
  51. */
  52.  
  53. class Solution
  54. {
  55.     static void Main(string[] args)
  56.     {
  57.         int N = int.Parse(Console.ReadLine()); // Nombre d'éléments constituant la table d'association.
  58.         int Q = int.Parse(Console.ReadLine()); // Nombre Q de noms de fichiers à analyser.
  59.  
  60.         Dictionary<string, string> mtMap = new Dictionary<string, string>();
  61.  
  62.         for (int i = 0; i < N; i++)
  63.         {
  64.             string[] inputs = Console.ReadLine().Split(' ');
  65.             string EXT = inputs[0].ToLower(); // Extension de fichier
  66.             string MT = inputs[1]; // Type MIME.
  67.             mtMap[EXT] = MT;
  68.         }
  69.  
  70.         for (int i = 0; i < Q; i++)
  71.         {
  72.             string FNAME = Console.ReadLine(); // Un nom de fichier par ligne.
  73.             int dotPos = FNAME.LastIndexOf('.');
  74.            
  75.             if (dotPos == -1 || dotPos == FNAME.Length - 1)
  76.             {
  77.                 Console.WriteLine("UNKNOWN");
  78.             }
  79.             else
  80.             {
  81.                 string extension = FNAME.Substring(dotPos + 1).ToLower();
  82.                 if (mtMap.ContainsKey(extension))
  83.                 {
  84.                     Console.WriteLine(mtMap[extension]);
  85.                 }
  86.                 else
  87.                 {
  88.                     Console.WriteLine("UNKNOWN");
  89.                 }
  90.             }
  91.         }
  92.     }
  93. }
  94.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement