public int GetHeight([FromRoute] string element, [FromQuery] int?heightOfLadderInRungs = null) { FilterArray shard = GetShard(element); return(shard.GetIndexesAssociatedWithAnElement(element, heightOfLadderInRungs).Count( index => shard[index])); }
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); }
/// <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"); } } }
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); }
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> </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>"); } }
public void AssignRandomBit([FromRoute] int shardNumber, [FromRoute] int valueToAssign) { FilterArray shard = GetShard(shardNumber); shard.AssignRandomBit(valueToAssign); }