示例#1
0
        public void Set(string columnName, object value, ICellMapper cellMapper = null)
        {
            if (cellMapper != null)
            {
                value = cellMapper.Map(new Cell(value)).RawValue;
            }

            GetDataRow()[columnName] = value;
        }
示例#2
0
 public ShowGameStateService(IConvertCharService charService,
                             IConsole console,
                             IBattleshipsConfiguration configuration,
                             ICellMapper mapper)
 {
     _charService   = charService;
     _console       = console;
     _configuration = configuration;
     _mapper        = mapper;
 }
 public BattleshipStateBuilder(IReadUserGuess guessReader,
                               IBattleshipsConfiguration configuration,
                               IDetectColisionService detectCollisionService,
                               ICellMapper mapper,
                               IRandom randomService)
 {
     _guessReader            = guessReader;
     _configuration          = configuration;
     _detectCollisionService = detectCollisionService;
     _mapper = mapper;
     _random = randomService;
 }
示例#4
0
        public static void CalcMeteoAvg(List <Row> meteoRows, string meteoColumnName,
                                        TableProcessing.Table calcsHydroTable, string hydroColumnName,
                                        ICellMapper cellMapper, params TableProcessing.Table[] resultTables)
        {
            var valuesColumnName = meteoColumnName + "_Values";


            calcsHydroTable.IterateRows(hydroRow =>
            {
                var intList = hydroRow["OI_METEO"].ToIntList();

                double number = 0;

                var realMeteoColumnName = meteoColumnName;

                if (meteoColumnName.StartsWith("&"))
                {
                    var hydroPtr        = meteoColumnName.Substring(1);
                    realMeteoColumnName = hydroRow[hydroPtr].StringValue;
                }

                Etc.NoThrow(() =>
                {
                    var doubleQuery = from meteoRow in meteoRows
                                      where intList.Contains(meteoRow["OI_Meteo"].IntValue) &&
                                      double.TryParse(
                        meteoRow[realMeteoColumnName].StringValue, out number)
                                      select number;

                    var enumerable = doubleQuery.ToList();

                    var strQuery = from dbl in enumerable
                                   select cellMapper.Map(new Cell(dbl)).StringValue;

                    var res = string.Join(";", strQuery.ToArray());

                    hydroRow.Set(valuesColumnName, res);

                    hydroRow.Set(hydroColumnName,
                                 enumerable.Average(), cellMapper);
                });
            }, valuesColumnName, hydroColumnName);

            foreach (var table in resultTables)
            {
                table.AddColumn(calcsHydroTable.Column(hydroColumnName));
            }
        }
示例#5
0
        protected void RowsDateDiff(string aName, string bName, string resultName,
                                    bool addToEstimationTable = true, ICellMapper resultMapper = null)
        {
            tables.CalcsHydro.IterateRows(row =>
            {
                row.Set(resultName, DateDiff(row, aName, bName), resultMapper);
            }, resultName);

            if (!addToEstimationTable)
            {
                return;
            }

            tables.ResultEstimation.Column(resultName)
            .SetDataFrom(tables.CalcsHydro.Column(resultName));
        }
示例#6
0
        public void Set(int index, object value, ICellMapper cellMapper)
        {
            value = cellMapper.Map(new Cell(value)).RawValue;

            Table.DataTable.Rows[index][Name] = value;
        }
示例#7
0
        public static void RestoreColumn(TableProcessing.Table coeffsTable,
                                         Column xCol, Column yCol,
                                         ICellMapper resultMapper, string equationName,
                                         bool needPlusA = true)
        {
            var count = xCol.Height;

            var xDoubles = new List <double>();
            var yDoubles = new List <double>();

            for (var i = 0; i < count; i++)
            {
                if (!xCol[i].IsEmpty && !yCol[i].IsEmpty)
                {
                    xDoubles.Add(xCol[i].DoubleValue);
                    yDoubles.Add(yCol[i].DoubleValue);
                }
            }

            var restoredColumn = yCol.Table.Column(yCol.Name + "_Restored");
            var usedColumn     = yCol.Table.Column(yCol.Name + "_Used");

            if (xDoubles.Count < 2)
            {
                return;
            }

            var p = Fit.Line(xDoubles.ToArray(), yDoubles.ToArray());

            // y = a + b*x

            var coeffMapper = new RoundDoubleCellMapper(6);

            var a = 0.0;

            if (needPlusA)
            {
                a = p.Item1;
            }

            var b = p.Item2;

            var aValue = "";

            if (needPlusA)
            {
                aValue = coeffMapper.Map(new Cell(a)).StringValue;
            }

            coeffsTable.DataTable.Rows.Add(equationName,
                                           aValue,
                                           coeffMapper.Map(new Cell(b)).StringValue);

            for (var i = 0; i < count; i++)
            {
                if (!xCol[i].IsEmpty)
                {
                    var restoredValue = a + b * xCol[i].DoubleValue;
                    restoredColumn.Set(i, restoredValue, resultMapper);

                    usedColumn.Set(i, yCol[i].IsEmpty ? restoredColumn[i] : yCol[i]);
                }
            }
        }