-1
votes

Comment calculer un ensemble complet de dépendances à l'aide du dictionnaire C #

Je dois créer une solution pour une transaction entrant dans un système, cette transaction doit valider et récupérer des informations, après avoir besoin d'envoyer les informations à un processeur. Les entrées de la transaction sont aussi ci-dessous: xxx

dans le message, le premier jeton est le nom d'un élément (par exemple. A). Les jetons restants sont les noms des choses que ce premier élément dépend de (par ex. E. B C).

Le programme devrait ensuite calculer l'ensemble complet de dépendances au groupe d'éléments, par exemple, en regardant ci-dessus, nous le voyons dépend directement de B et C. B à son tour s'appuie sur C et E, C s'appuie sur g et e n'a aucune dépendance. Cela signifie qu'on repose en fin de compte sur B, C, E et G. L'ensemble complet des dépendances et la sortie de mon code doit être aussi ci-dessous: xxx

c'est quoi J'ai jusqu'à présent: xxx

J'utilise un dictionnaire pour atteindre la dépendance pour les lettres mais je ne sais pas comment définir la clé et les valeurs.

Ceci est l'ajout à la montre de mon code en cours d'exécution.

 Entrez l'image Description ici

Le résultat de ce code devrait être aussi ci-dessous: xxx


4 commentaires

Je suis tout à fait difficile de savoir comment vous obtiendriez a b c e f g h de cela. Il n'y a pas de g h ou g / h séparément dans l'entrée. En général, la relation entre votre entrée et votre sortie est mystérieuse. S'il s'agit d'une version simplifiée de votre problème, envisagez de le simplifier.


La corrélation entre vos intrants et vos sorties n'a pas de sens pour moi. Le Json ne semble pas être pertinent ici. Pouvez-vous s'il vous plaît simplement fournir l'entrée comme ancienne C #, puis décrivez comment vous vous attendez à ce que la sortie soit calculée?


Je dois calculer l'ensemble complet de dépendances au groupe d'articles, par exemple, en regardant A, nous le voyons dépend directement de B et C. B à son tour s'appuie sur C et E, C s'appuie sur G et E n'a aucune dépendance . Cela signifie qu'on repose en fin de compte sur B, C, E et G. J'espère que cela est clair maintenant.


Cela signifie qu'on repose en fin de compte sur b, c, e et g. a b c e f g h Je suis en difficulté pour réconcilier ces deux déclarations contradictoires.


3 Réponses :


0
votes

Après avoir compris votre problème, ce qui, je pense que c'est un exercice logique. J'ai atteint dans une sortie correcte.

Vous aurez besoin d'une méthode récursive pour renseigner toute la chaîne de dépendances d'une lettre. P>

J'ai apporté des changements dans votre code pour adapter mon solutio, basicaly je suis Utilisation d'une course dicntionarienne Les valeurs sont la liste. p>

Méthode récursive: P>

A: A B C G E F H
B: B C G E F H
C: C G
D: D A B C G E F H
E: E F H
F: F H


1 commentaires

@aline je sais que peut-être que vous avez la réponse, mais ... j'ai posté une autre solution.



0
votes
A B C E F G H
B C E F G H
C G
D A B C E F G H
E F H
F H

1 commentaires

@ALINE Je ne crois pas que j'ai changé les intrants du message d'origine. Dites-vous qu'ils sont différents? Si cette solution était correcte, veuillez marquer comme réponse, ou au moins à l'avance.



1
votes

J'ai une solution à base de Linq assez soignée. J'ai pris la liberté de commencer avec entrées code> comme une éventail de chaînes.

var json = File.ReadAllText(@"C:inputs.json");
List<Wrapper> f = JsonConvert.DeserializeObject<List<Wrapper>>(json);
string[] inputs = f.SelectMany(x => x.Inputs, (x, y) => y.Input).ToArray();


1 commentaires

@aline - Désolé, mais je n'ai pas changé l'entrée. Au lieu d'obtenir la gamme de cordes de Json, je viens de la codé dur en C #. C'est juste pour que je n'ai pas besoin de tout le code jsonConvert.deserializeObject dans ma réponse.