私は多くの解決策を試しましたが、どれも正しい答えを与えてくれません。
他のいくつかの変数に依存する変数があり、それらはオペランドと呼ばれます。それぞれがそのオペランドのリストを含むそのような変数のリストがあります。新しい変数の式を作成するたびに、次のような循環依存関係があるかどうかを確認したい
A (またはそのオペランドのいずれか)-> B (またはそのオペランドのいずれか)-> C (またはそのオペランドのいずれか)-> D(またはそのオペランドのいずれか)-> A
これまでのところ、私はこれを思いついた
foreach (var newVar in newlyCreatedVars)
{
newVar.Rank = 0;
List<string> tags = newVar.Operands.ToList();
List<string> temp;
while (tags.Count > 0)
{
var dependentVars= newlyCreatedVars.Where(t => tags.Contains(t.Name)).ToList();
temp = new List<string>();
tags.Clear();
temp.AddRange(dependentVars.SelectMany(t => t.Operands).ToArray());
if (temp.Count > 0)
{
newVar.Rank++;
tags = temp;
}
var dep = newlyCreatedVars.Where(t=> newVar .Operands.Contains(t.Name)).ToList();
if(dep.Exists(t=> t.Rank > newVar .Rank))
return false;
}
}
助けてください。
ありがとう :)