public bool Equals(NTuple <T> other)
    {
        if (ReferenceEquals(this, other))
        {
            return(true);
        }
        if (other == null)
        {
            return(false);
        }
        var length = _values.Length;

        if (length != other._values.Length)
        {
            return(false);
        }
        for (var i = 0; i < length; ++i)
        {
            if (!Equals(_values[i], other._values[i]))
            {
                return(false);
            }
        }
        return(true);
    }
Пример #2
0
        static void convertOth(String inputFilename, String outputFilename)
        {
            var fileTxt = File.ReadAllText(inputFilename);
            var array = fileTxt.Split(new[] { ' ', '\n', '\r', '{', '}' }, StringSplitOptions.RemoveEmptyEntries);

            int index = 0;
            var nTuples = Convert.ToInt32(array[index++]);
            List<NTuple> list = new List<NTuple>();
            for (int i = 0; i < nTuples; i++)
            {
                int n = Convert.ToInt32(array[index++]);
                int m = Convert.ToInt32(array[index++]);
                var tuple = new NTuple(n, m);
                for (int seq = 0; seq < m; seq++)
                {
                    var fields = tuple.getNewFieldsList();
                    for (int fieled = 0; fieled < n; fieled++)
                    {
                        var val = array[index++];
                        fields.Add(convertToBoard(Convert.ToInt32(val)));
                    }
                }
                for (int weight = 0; weight < tuple.getNumberOfWeights(); weight++)
                {
                    var val = array[index++];
                    double value = 0;
                    try
                    {
                        value = Convert.ToDouble(val);
                    }
                    catch
                    {
                        value = Convert.ToDouble(val.Replace(".", ","));
                    }
                    tuple.weights.Add(value);
                }
                if (!tuple.check())
                    throw new Exception("Niepoprawny NTuple!");
                list.Add(tuple);
            }

            using (var output = new BinaryWriter(new FileStream(outputFilename, FileMode.Create)))
            {
                // format pliku
                output.Write((int)0);
                int nF = 0;
                int nW = 0;
                int nT = 0;
                var fieldsMove = new List<int>();
                var weightsMove = new List<int>();
                weightsMove.Add(0);
                fieldsMove.Add(0);
                for (int i = 0; i < list.Count; i++)
                {
                    var t = list[i];
                    for (int j = 0; j < t.m; j++)
                    {
                        fieldsMove.Add(fieldsMove[fieldsMove.Count - 1] + t.n);
                        nF += t.n;
                    }
                    weightsMove.Add(weightsMove[weightsMove.Count - 1] + t.getNumberOfWeights());
                    nW += t.getNumberOfWeights();
                    nT += t.m;
                }
                output.Write(nF);
                output.Write(nW);
                output.Write(nT);
                for (int i = 0; i < list.Count; i++)
                {
                    var t = list[i];
                    for (int j = 0; j < t.m; j++)
                        for (int k = 0; k < t.n; k++)
                            output.Write(t.fields[j][k]);
                }
                for (int i = 0; i < list.Count; i++)
                {
                    var t = list[i];
                    for (int k = 0; k < t.getNumberOfWeights(); k++)
                        output.Write(t.weights[k]);
                }
                index = 0;
                for (int i = 0; i < list.Count; i++)
                {
                    var t = list[i];
                    for (int j = 0; j < t.m; j++)
                    {
                        output.Write(t.n);
                        output.Write(fieldsMove[index]);
                        output.Write(weightsMove[i]);
                        index++;
                    }
                }
            }
        }
Пример #3
0
        static void convertOth(String inputFilename, String outputFilename)
        {
            var fileTxt = File.ReadAllText(inputFilename);
            var array   = fileTxt.Split(new[] { ' ', '\n', '\r', '{', '}' }, StringSplitOptions.RemoveEmptyEntries);

            int           index   = 0;
            var           nTuples = Convert.ToInt32(array[index++]);
            List <NTuple> list    = new List <NTuple>();

            for (int i = 0; i < nTuples; i++)
            {
                int n     = Convert.ToInt32(array[index++]);
                int m     = Convert.ToInt32(array[index++]);
                var tuple = new NTuple(n, m);
                for (int seq = 0; seq < m; seq++)
                {
                    var fields = tuple.getNewFieldsList();
                    for (int fieled = 0; fieled < n; fieled++)
                    {
                        var val = array[index++];
                        fields.Add(convertToBoard(Convert.ToInt32(val)));
                    }
                }
                for (int weight = 0; weight < tuple.getNumberOfWeights(); weight++)
                {
                    var    val   = array[index++];
                    double value = 0;
                    try
                    {
                        value = Convert.ToDouble(val);
                    }
                    catch
                    {
                        value = Convert.ToDouble(val.Replace(".", ","));
                    }
                    tuple.weights.Add(value);
                }
                if (!tuple.check())
                {
                    throw new Exception("Niepoprawny NTuple!");
                }
                list.Add(tuple);
            }

            using (var output = new BinaryWriter(new FileStream(outputFilename, FileMode.Create)))
            {
                // format pliku
                output.Write((int)0);
                int nF          = 0;
                int nW          = 0;
                int nT          = 0;
                var fieldsMove  = new List <int>();
                var weightsMove = new List <int>();
                weightsMove.Add(0);
                fieldsMove.Add(0);
                for (int i = 0; i < list.Count; i++)
                {
                    var t = list[i];
                    for (int j = 0; j < t.m; j++)
                    {
                        fieldsMove.Add(fieldsMove[fieldsMove.Count - 1] + t.n);
                        nF += t.n;
                    }
                    weightsMove.Add(weightsMove[weightsMove.Count - 1] + t.getNumberOfWeights());
                    nW += t.getNumberOfWeights();
                    nT += t.m;
                }
                output.Write(nF);
                output.Write(nW);
                output.Write(nT);
                for (int i = 0; i < list.Count; i++)
                {
                    var t = list[i];
                    for (int j = 0; j < t.m; j++)
                    {
                        for (int k = 0; k < t.n; k++)
                        {
                            output.Write(t.fields[j][k]);
                        }
                    }
                }
                for (int i = 0; i < list.Count; i++)
                {
                    var t = list[i];
                    for (int k = 0; k < t.getNumberOfWeights(); k++)
                    {
                        output.Write(t.weights[k]);
                    }
                }
                index = 0;
                for (int i = 0; i < list.Count; i++)
                {
                    var t = list[i];
                    for (int j = 0; j < t.m; j++)
                    {
                        output.Write(t.n);
                        output.Write(fieldsMove[index]);
                        output.Write(weightsMove[i]);
                        index++;
                    }
                }
            }
        }