Всем доброго времени суток.
Я вызываю функцию для строк длиной до 2000 символов и выглядит как
cB = "-(1/0)+((1+1)/-(0+0+1)+1)"
cB = "0+(1/0/1)+(1/0/0/0/0/1)"
cB = "1/1/1/1/1/0/0/01/1/0/01/1/00/0/0/1/1/0/0/10"
с:
1: TRUE
0: FALSE
+: logical AND
/: logical OR
-: logical NOT
Как видите, она строго математическая: сначала brackets
, затем logical AND
и, наконец, logical OR
Функция:
String cB = cdb.Value
for (int m = 0; m < 10; m++)
{
if (cB.Length == 1)
{
break;
}
else
{
cB = cB.Replace("01", "0").Replace("10", "0").Replace("11", "1").Replace("00", "0");
cB = cB.Replace("-0", "1").Replace("-1", "0");
cB = cB.Replace("(0)", "0").Replace("(1)", "1").Replace("(-0)", "1").Replace("(-1)", "0");
for (int n = 0; n < 10; n++)
{
if (!cB.Contains("+"))
{
break;
}
cB = cB.Replace("0+0", "0").Replace("1+1", "1").Replace("0+1", "0").Replace("1+0", "0");
cB = cB.Replace("(0)", "0").Replace("(1)", "1").Replace("(-0)", "1").Replace("(-1)", "0");
}
for (int p = 0; p < 10; p++)
{
if (!cB.Contains("/"))
{
break;
}
cB = cB.Replace("0/0", "0").Replace("1/1", "1").Replace("0/1", "1").Replace("1/0", "1");
cB = cB.Replace("(0)", "0").Replace("(1)", "1").Replace("(-0)", "1").Replace("(-1)", "0");
}
}
}
if (cB == "1")
{
result = 1;
}
else if (cB == "0")
{
result = 0;
}
else
{
result = 9;
}
Желаемый результат из трех приведенных строк: 0 0 1
Моя проблема в том, что функция действительно медленная. Поэтому я прошу вас помочь мне, пожалуйста:)
Я забыл упомянуть, что я абсолютный новичок в C#