Пример #1
0
        public int GetHeight([FromRoute] string element, [FromQuery] int?heightOfLadderInRungs = null)
        {
            FilterArray shard = GetShard(element);

            return(shard.GetIndexesAssociatedWithAnElement(element, heightOfLadderInRungs).Count(
                       index => shard[index]));
        }
Пример #2
0
        public int DistributedStepAsync([FromRoute] string element, [FromQuery] int?heightOfLadderInRungs)
        {
            FilterArray shard = GetShard(element);
            // Get the set of rungs
            List <int> rungIndexes = shard.GetIndexesAssociatedWithAnElement(element, heightOfLadderInRungs ?? MaxLadderHeight).ToList();
            // Select the subset of rungs that have value zero (that are above the element in the ladder)
            List <int> rungsAbove = rungIndexes.Where(rung => !shard[rung]).ToList();

            // Identify an element of the array to set
            if (rungsAbove.Count > 0)
            {
                // If there are rungs with value value zero/false (rungs above the element), pick one at random
                shard.SetBitToOne(
                    rungsAbove[(int)(StrongRandomNumberGenerator.Get32Bits((uint)rungsAbove.Count))]);
            }
            else
            {
                // Set an average of one element by picking two random elements, each of which should have p=0.5
                // of being zero/false, and setting them to 1/true regardless of their previous value.
                FilterClient.AssignRandomBit(1);
                FilterClient.AssignRandomBit(1);
            }

            // Clear an average of one element by picking two random elements, each of which should have p=0.5
            // of being one/true, and setting them to 0/false regardless of their previous value.
            FilterClient.AssignRandomBit(0);
            FilterClient.AssignRandomBit(0);

            // Return the height of the ladder before the step
            return(rungIndexes.Count - rungsAbove.Count);
        }
Пример #3
0
 /// <summary>
 /// Get the fitler array that stores a shard based on the shard number.
 /// </summary>
 /// <param name="shardNumber">The shard number (index) to get.</param>
 /// <returns>A filter array containing all of the bits for a given shard.</returns>
 protected FilterArray GetShard(int shardNumber)
 {
     if (!ShardsByIndex.ContainsKey(shardNumber))
     {
         // If there are not bits for this shard, create one.
         ShardsByIndex[shardNumber] = new FilterArray(NumberOfBitsPerShard, MaxLadderHeight, true, SecretSaltToPreventAlgorithmicComplexityAttacks);
     }
     return(ShardsByIndex[shardNumber]);
 }
 public void GetResult(int[] ArrayOfNums, FilterArray UserChoice)
 {
     Console.Clear();
     for (int counter = 0; counter < ArrayOfNums.Length; counter++)
     {
         if (UserChoice(ArrayOfNums[counter]))
         {
             Console.Write(ArrayOfNums[counter] + "\t");
         }
     }
 }
Пример #5
0
        public static FilterArray SimpleFilter(string field, string op, string val)
        {
            Filter filter = new Filter(field, op, new List <string>()
            {
                val
            });
            FilterArray filters = new FilterArray {
                filter
            };

            return(filters);
        }
Пример #6
0
        static void Main(string[] args)
        {
            var GetArrayElement = "";

            int[] ArrayOfNums = new int[10];
            int   GetNumber;

            Console.WriteLine("Enter 10 numbers");
            for (int count = 0; count < 10; count++)
            {
                Console.ForegroundColor = ConsoleColor.Gray;
                Console.Write("Number {0} --> \t", count + 1);
                GetArrayElement = Console.ReadLine();
                bool parseSuccess = int.TryParse(GetArrayElement, out GetNumber);
                if (parseSuccess)
                {
                    ArrayOfNums[count] = GetNumber;
                }
                else
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("This is not a number! Enter Again");
                    count -= 1;
                }
            }
            Console.Clear();
            DelegateTest DelTestClass    = new DelegateTest();
            FilterArray  DelEvenNum      = new FilterArray(EvenNum);
            FilterArray  DelCompareNum   = new FilterArray(CompareNum);
            FilterArray  DelDivisibleNum = new FilterArray(DivisibleNum);
            bool         Value           = true;

            while (Value)
            {
                Console.ForegroundColor = ConsoleColor.Gray;
                Console.WriteLine("\nEnter Your Choice \n 1.Return all even numbers.\n 2.Return numbers greater than 10\n 3.Return numbers divisible by 5.\n 4. Break");
                int UserChoice = Int32.Parse(Console.ReadLine());
                switch (UserChoice)
                {
                case 1:
                    DelTestClass.GetResult(ArrayOfNums, DelEvenNum);
                    break;

                case 2:
                    DelTestClass.GetResult(ArrayOfNums, DelCompareNum);
                    break;

                case 3:
                    DelTestClass.GetResult(ArrayOfNums, DelDivisibleNum);
                    break;

                case 4:
                    Value = false;
                    break;

                default:
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("Wrong choice made!");
                    break;
                }
            }
        }
        private void RenderOstatki(TextWriter w, string _TypeMovement)
        {
            decimal _kol;
            bool    kolExceedRemainder;
            string  formatNumber = "N" + Scale;
            //------------------------------------------
            //фильтр по номеру вагона
            string filter = "";

            if (Filter == 2 && FilterValue.Trim().Length > 0)
            {
                filter = " and ОтправкаВагона like '%" + FilterValue.Trim().Replace("'", "").Replace("%", "") + "%'";
            }
            //------------------------------------------

            if (ost.Columns.IndexOf("ТипТранзакции") == -1)
            {
                return;
            }

            DataRow[] rows = ost.Select("ТипТранзакции=1" + _TypeMovement + filter);

            if (rows.Length == 0)
            {
                return;
            }

            object  summ        = ost.Compute("Sum(Факт)", "ТипТранзакции=1" + _TypeMovement);
            decimal ostatokFakt = summ == DBNull.Value ? 0m : Convert.ToDecimal(summ);

            summ = ost.Compute("Sum(Расчет)", "ТипТранзакции=1" + _TypeMovement);
            decimal ostatokRaschet = summ == DBNull.Value ? 0m : Convert.ToDecimal(summ);

            summ = NaborDoc.Compute("Sum(Количество)", "ТипТранзакции=1" + _TypeMovement);
            decimal nabor = summ == DBNull.Value ? 0m : Convert.ToDecimal(summ);

            w.Write("<tr>");
            w.Write("<td style='PADDING-LEFT: 10px'><b><i>");
            switch (_TypeMovement)
            {
            case "1":
                w.Write(Resx.GetString("TTN_lblProduction"));
                break;

            case "2":
                w.Write(Resx.GetString("TTN_lblPurchase"));
                break;

            case "3":
                w.Write(Resx.GetString("lblMove"));
                break;

            case "4":
                w.Write(Resx.GetString("TTN_lblRests"));
                break;
            }
            w.Write("</i></b></td><td>&nbsp;</td>");

            w.Write("<td nowrap align='right' {0}>{1}</td>",
                    ostatokFakt < 0 ? "style='COLOR: Red'" : "",
                    ostatokFakt.ToString(formatNumber));

            w.Write("<td nowrap align='right' style='COLOR: DimGray'>{0}</td>", ostatokRaschet.ToString(formatNumber));

            w.Write("<td align='right'>{0}</td>", nabor.ToString(formatNumber));//<div class='nmb' type='number' contenteditable=true ></div>
            w.Write("</tr>");

            decimal Raschet = 0m, Fakt = 0m;

            foreach (DataRow r in rows)
            {
                //Фильтр по номеру накладной
                //---------------------------------
                if (Filter == 3 && FilterValue.Trim().Length > 0)
                {
                    if (!FilterArray.Contains(r["КодДвиженияНаСкладе"]))
                    {
                        continue;
                    }
                }
                //---------------------------------
                bool Finished = r["ТипПодписи"].ToString().Equals("1");

                if (r["Факт"] == DBNull.Value)
                {
                    continue;
                }

                //---------------------------------
                Fakt    = Kesco.Lib.ConvertExtention.Convert.Round(Convert.ToDecimal(r["Факт"]), Scale);
                Raschet = Kesco.Lib.ConvertExtention.Convert.Round(Convert.ToDecimal(r["Расчет"]), Scale);
                //---------------------------------

                string docName = ostDocs[r["КодДокумента"]].ToString();
                string title   = "";
                if (r["ОтправкаВагона"].ToString().Trim().Length > 0)
                {
                    title = docName;
                }
                if (!Finished)
                {
                    title += " " + Resx.GetString("TTN_msgWorkDocumentNotCompleted");
                }

                w.Write("<tr><td  style='PADDING-LEFT: 20px' {0}>", Finished ? "" : "title='" + title + "'");

                //Выводим документ
                if (docName.StartsWith("#"))
                {
                    w.Write(r["ОтправкаВагона"].ToString().Trim().Length > 0 ? r["ОтправкаВагона"].ToString() : docName);
                }
                else
                {
                    RenderLinkDocument(w, int.Parse(r["КодДокумента"].ToString()));
                    w.Write(r["ОтправкаВагона"].ToString().Trim().Length > 0 ? r["ОтправкаВагона"].ToString() : docName.Replace("№", "№ <b>") + "</b>");
                    RenderLinkEnd(w);
                }

                w.Write("</td>");
                w.Write("<td nowrap align='right' {0}>", Finished ? "" : "style='COLOR: DimGray'");
                w.Write((Convert.ToDecimal(r["Приход"])).ToString(formatNumber));
                w.Write("</td>");

                w.Write("<td nowrap align='right' {0}>", Fakt < 0 ? "style='COLOR: Red'" : "");
                w.Write(Fakt.ToString(formatNumber));
                w.Write("</td>");

                w.Write("<td nowrap align='right' style='COLOR: DimGray'>");
                w.Write(Raschet.ToString(formatNumber));
                w.Write("</td>");

                //количество набранное
                if (CurrentDv == 0)
                {
                    w.Write("<td></td>");
                }
                else if (CurrentDv == -1)
                {
                    _kol = GetNaborKol(Convert.ToInt32(r["КодДвиженияНаСкладе"]), "КодДвиженияВНаборе");
                    kolExceedRemainder = (Finished ? Fakt : Raschet) < _kol;
                    w.Write("<td align='right'{1}>{0}</td>", _kol != 0m ? _kol.ToString(formatNumber) : "", kolExceedRemainder ? " class='rn'" : "");
                }
                else
                {
                    _kol = GetNaborKol(CurrentDv, Convert.ToInt32(r["КодДвиженияНаСкладе"]));
                    if (_kol <= 0)
                    {
                        kolExceedRemainder = false;
                    }
                    else
                    {
                        kolExceedRemainder = (Finished ? Fakt : Raschet) < GetNaborKol(Convert.ToInt32(r["КодДвиженияНаСкладе"]), "КодДвиженияВНаборе");
                    }

                    w.Write("<td><div class='nmb{1}' type='number' contenteditable=true dvNabor={0} ok='SetNaborKol()'>", r["КодДвиженияНаСкладе"], kolExceedRemainder ? " rn" : "");
                    if (_kol != 0m)
                    {
                        w.Write(_kol.ToString(formatNumber));
                    }
                    w.Write("</div></td>");
                }

                w.Write("<tr>");
            }
        }
Пример #8
0
        public void AssignRandomBit([FromRoute] int shardNumber, [FromRoute] int valueToAssign)
        {
            FilterArray shard = GetShard(shardNumber);

            shard.AssignRandomBit(valueToAssign);
        }