en c#, implementer function public static string Decode(List<string> words, string message) tous les mots qu'ils connaissent sont contenus dans list predefinie. words est une liste de chaine de carateres contenant des mots connus (max: 20) toutes les lettre sont en miniscules, sans accents. message est une chaine de caratere contenant le message codé. Toutes les lettre sont aussi en minucules, sans accents. La methode doit return une chaine de caratere contenant le message décodé
using System;
using System.Collections.Generic;
public class Program
{
// Fonction pour vérifier si deux mots sont similaires (ex: mélangés)
public static bool AreWordsSimilar(string word1, string word2)
{
// Si la longueur des deux mots est différente, ils ne sont pas similaires
if (word1.Length != word2.Length)
return false;
// Vérification que les lettres des deux mots sont les mêmes (indépendamment de l'ordre)
var word1Array = word1.ToCharArray();
var word2Array = word2.ToCharArray();
Array.Sort(word1Array);
Array.Sort(word2Array);
return new string(word1Array) == new string(word2Array);
}
public static string Decode(List<string> words, string message)
{
string decodedMessage = "";
int i = 0;
// Parcourir le message codé caractère par caractère
while (i < message.Length)
{
bool foundMatch = false;
// Vérifier les mots connus dans la liste
foreach (var word in words)
{
// Si le mot correspond à une sous-chaîne du message à partir de la position i
if (i + word.Length <= message.Length && AreWordsSimilar(message.Substring(i, word.Length), word))
{
decodedMessage += word; // Ajouter le mot trouvé au message décodé
i += word.Length; // Avancer l'index de i après le mot décodé
foundMatch = true;
break; // Sortir de la boucle dès qu'un mot est trouvé
}
}
// Si aucun mot n'est trouvé, ajouter le caractère actuel du message
if (!foundMatch)
{
decodedMessage += message[i];
i++; // Passer au caractère suivant
}
}
return decodedMessage;
}
public static void Main()
{
// Liste des mots connus
List<string> knownWords = new List<string> { "ball", "funny", "hello", "is", "message", "strawberry", "this" };
// Message codé à décoder
string message = "hlelo tihs masegse is fnnuy";
// Décodage du message
string decodedMessage = Decode(knownWords, message);
Console.WriteLine($"Message décodé : {decodedMessage}");
}
}
Aucun commentaire:
Enregistrer un commentaire