using System.Text;

public class LSystemNodeLiteral
{
    public string name { get; }
    public int values_number { get; }

    public float[] values { get; set; }

    public LSystemNodeLiteral(string name, int values_number)
    {
        this.name = name;
        this.values_number = values_number;
        //in case it would be 0 
        values = new float[values_number];
    }
    public LSystemNodeLiteral(LSystemNodeLiteral other)
    {
        this.name = other.name;
        this.values_number = other.values_number;
        //in case it would be 0 
        values = new float[this.values_number];
        other.values.CopyTo(values, 0);
    }

    public static bool operator ==(LSystemNodeLiteral thisLiteral, LSystemNodeLiteral other)
    {
        return thisLiteral.name == other.name && thisLiteral.values_number == other.values_number;
    }
    public static bool operator !=(LSystemNodeLiteral thisLiteral, LSystemNodeLiteral other)
    {
        return !(thisLiteral.name == other.name && thisLiteral.values_number == other.values_number);
    }

    public override string ToString()
    {
        if (values_number == 0)
        {
            return name;
        }
        else
        {
            StringBuilder sb = new StringBuilder(name, name.Length + values_number * 7 + 4);
            sb.Append("(");
            for (int i = 0; i < values_number; i++)
            {
                var v = values[i];
                sb.AppendFormat("{0:0.##}", v);
                if (i < values_number - 1)
                {
                    sb.Append(",");
                }
            }
            sb.Append(")");
            return sb.ToString();
        }
    }
}