もしかしてこういうこと?
string previous = string.Empty;
while (b != previous)
{
previous = b;
b = b.Replace("true and false", "false");
b = b.Replace("true and true", "true");
b = b.Replace("false and true", "false");
b = b.Replace("false and false", "false");
b = b.Replace("false or false", "false");
b = b.Replace("true or false", "true");
b = b.Replace("true or true", "true");
b = b.Replace("false or true", "true");
b = b.Replace("(false)", "false");
b = b.Replace("(true)", "true");
b = b.Replace("not false", "true");
b = b.Replace("not true", "false");
}
仕様では、次のようなあいまいな定式化が許可されていることに注意してください。
"false and false or true"
"false and true or true"
これらの式は両方とも、andが最初に評価される場合は「true」、 orが最初に評価される場合は「false」です。したがって、すべてのレベルで括弧を必要とする方がよいでしょう。左から右への評価を要求することも別のオプションですが、それではコードが少し複雑になります。
このスタイルの問題に対するこのスタイルの解法に反対するかもしれない人は、一部の数学者が、すべての数学がこの種の記号操作に還元される可能性があると信じていることを思い出してください。ラッセルとホワイトヘッドの『プリンキピア・マセマティカ』に対する主な批判の 1 つは、公式にあまりにも多くの意味を埋め込んでいるということだと言われています。