mercredi 27 novembre 2024

public static string Decode(List words, string message)

 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