0

数学演算文字列に自動的かつランダムに括弧を追加するアイデアはありますか?

例えば。

指定された操作文字列:

57 x 40-14+84÷19

上記の文字列にランダムに括弧を自動追加する必要があります。

したがって、次のようになります。

(57 x 40)-14 +(84÷19)または

(57 x 40)-(14 + 84÷19)または

57 x(40-14)+(84÷19)または

57 x(40-14 + 84÷19)または

57 x(40-(14 + 84)÷19)

本当にありがとうございました!!

ミック、

4

2 に答える 2

1

私は3つのことを想定しました:

  1. 数値と演算子の間には常にスペース文字があります
  2. すべての数値は整数です(他のタイプに簡単に変更できます)
  3. 数ではないものはすべて演算子です

C#の例:

Math m = new Math(); 
string p = m.DoStuff("57 x 40 - 14 + 84 ÷ 19");
Console.WriteLine(p);

class Math
{       
    internal string DoStuff(string p)
    {
        bool isParOpen = false;
        Random rnd = new Random();
        StringBuilder result = new StringBuilder();
        int i;

        string[] stack = p.Split(' ');
        foreach (var item in stack)
        {
            if (int.TryParse(item, out i))
            {
                if (rnd.Next(2) == 1)
                {
                    result.Append(isParOpen ? string.Format("{0}) ", item) : string.Format("({0} ", item));
                    isParOpen = !isParOpen;
                }
                else
                {
                    result.Append(item).Append(" ");
                }
            }
            else
            {
                result.Append(item).Append(" ");
            }
        }

        if (isParOpen)
        {
            result.Append(")");
        }

        return result.ToString();
    }
}
于 2012-05-14T12:57:46.633 に答える
0

数学表現を文字列として処理する場合は、括弧をランダムに追加して(たとえば、文字列にランダムな文字を追加する)、スクリプトエンジンを使用して、表現を評価できます

于 2012-05-14T12:42:24.600 に答える