Table of Contents

Class LinqDataCalcExtensions

Namespace
LinqDataCalc
Assembly
LinqDataCalc.dll

Main LinqDataCalcExtensions Class implementation.

public static class LinqDataCalcExtensions
Inheritance
LinqDataCalcExtensions
Inherited Members

Methods

AsNumberTuples(IEnumerable<object>)

Retrieve a list of numeric tuples from an input list of objects.

public static IList<Tuple<int, ulong, long, double, decimal>> AsNumberTuples(this IEnumerable<object> elements)

Parameters

elements IEnumerable<object>

The list of objects to be used as input

Returns

IList<Tuple<int, ulong, long, double, decimal>>

A list of tuples with the relevant data types retrieved from the objects list

Examples

Get a List of zero-filled Tuples with numeric values (int/ulong/long/double/decimal).

object[] types = { "###","hello1","!*",439,30,12,1.3,3.2m,new List{1,3,5,78,14,24,40,9},'d',3283782378289,"2902",92.4m,"345,2",881.74m,30333.1434,-43902,(new int[]{10,490,20,103,40,30}),930 };
var resTuple = types.AsNumberTuples();

BTreeGen(double, int)

Generate a binary tree of random height, based on a prespecified complexity factor value (needs to be of double data type).

public static LinqDataCalcExtensions.Node BTreeGen(this double nodeDensity, int depth)

Parameters

nodeDensity double

The density factor of which to generate the random tree nodes with

depth int

The b-tree depth for which to determine the height with

Returns

LinqDataCalcExtensions.Node

A randomly generated b-tree root with leaf nodes that consist of Node data type

Examples

Generate a binary tree of specified depth N with random nodes density.

var tree_root = 0.543.BTreeGen(6);

BTreeGen2(int, double)

Generate a range of binary trees of random height, based on a prespecified complexity factor value (needs to be of double data type) and yields an enumerable based on those b-trees.

public static IEnumerable<LinqDataCalcExtensions.Node> BTreeGen2(int depth, double nodeDensity)

Parameters

depth int

The b-tree depth for which to determine the height with

nodeDensity double

The density factor of which to generate the random tree nodes with

Returns

IEnumerable<LinqDataCalcExtensions.Node>

An IEnumerable of multiple b-tree roots with random leaf nodes that consist of Node data type

Examples

Generate a binary tree range of specified depth N with random nodes density.

var ienum_tree_roots = LinqDataCalcExtensions.BTreeGen2(3,0.75);

BTreeHeight(Node)

Calculation of a b-tree total height counting edges from the root node, to the end of the leafs of the data structure. (Utilizes queuing on adding/removing nodes for height calculation)

public static int BTreeHeight(this LinqDataCalcExtensions.Node input)

Parameters

input LinqDataCalcExtensions.Node

The root node of the b-tree of which to calculate the height from.

Returns

int

Calculated b-tree data structure height (root node = start).

Examples

Calculate the b-tree height from the root node to outer leafs.

var tree_root = 0.543.BTreeGen(6); //creates a root b-tree of size 6
LinqDataCalcExtensions.BTreeHeight(tree_root); // result of total height 5

ChunkOf<T>(IEnumerable<T>, int)

Retrieves chunks of size N from a list as a nested list.

public static IEnumerable<IEnumerable<T>> ChunkOf<T>(this IEnumerable<T> elements, int len)

Parameters

elements IEnumerable<T>

List of elements used as input

len int

Length of N - chunks that the elements list is to be splitted into

Returns

IEnumerable<IEnumerable<T>>

A nested enumerable list of which sub lists are chunks of equal length

Type Parameters

T

Any type of elements in the list

Examples

Split an IEnumerable into chunks of Length N.

int[] num_seq = { -990,-940,-770,-599,-543,-513,-482,-451,-445,-371,-240,-371,-940 };
var num = num_seq.AsEnumerable();
var result = num.ChunkOf(3);

CompareBytes(byte[], byte[])

Compare the bytes in two 1-dimensional byte arrays.

public static bool CompareBytes(this byte[] larray, byte[] rarray)

Parameters

larray byte[]
rarray byte[]

Returns

bool

True or False depending on the result

Examples

Check whether two 1-dimensional byte arrays are equal.

byte[] b1 = new byte[]{77,90,144,0,3,0,0,0,4,0,0,0,255,255,0,0,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,14,31,32,100};
byte[] b2 = new byte[]{77,90,144,0,3,0,0,0,4,0,0,0,255,20,0,0,0,0,0,0,128,0,0,0,14,31,186,14,0,180,9,205,33,184,1,76,103,114};
bool result = b1.CompareBytes(b2);

DictionaryRndFill(Dictionary<string, Tuple<int, int>>, int)

Retrieve a dictionary with random integer numbers and a randomly produced string.

public static IDictionary<string, Tuple<int, int>> DictionaryRndFill(this Dictionary<string, Tuple<int, int>> dictionary, int length)

Parameters

dictionary Dictionary<string, Tuple<int, int>>
length int

The maximum amount of info produced

Returns

IDictionary<string, Tuple<int, int>>

A dictionary of key=string/value=Tuple(int,int) type layout filled with random values

Examples

Get an IDictionary filled with string keys and corresponding integer random values.

// 1 - full code not shown.. Initialize a dictionary of key-value type key=string/value=Tuple(int,int)
          //2 - call following method of the dictionary -> dict_var.DictionaryRndFill(10);

DiffBytes(byte[], byte[])

Checks two 1-dimensional byte arrays and returns a list of the positions where the bytes are different with the byte values.

public static IDictionary<int, int> DiffBytes(this byte[] mainarr, byte[] diffarr)

Parameters

mainarr byte[]

The main byte array to be compared

diffarr byte[]

The secondary byte array to be compared against

Returns

IDictionary<int, int>

An Dictionary with the different bytes and the array positions that contains the difference against.

Examples

Check two 1-dimensional byte arrays, and return a list of different bytes and the point of difference.

byte[] b1 = new byte[]{77,90,144,0,3,0,0,0,4,0,0,0,255,255,0,0,184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,14,31,32,100};
byte[] b2 = new byte[]{77,90,144,0,3,0,0,0,4,0,0,0,255,20,0,0,0,0,0,0,128,0,0,0,14,31,186,14,0,180,9,205,33,184,1,76,103,114};
var result = b1.DiffBytes(b2);

ExpectedValue(IEnumerable<double>, IEnumerable<double>)

Based on a number list of probability values and a secondary list of possible expected outcomes of that probability, retrieve the overall expected value of the frequency of occurence on the inital observation/event.

public static double ExpectedValue(this IEnumerable<double> probabilities, IEnumerable<double> outcomes)

Parameters

probabilities IEnumerable<double>

List of probability values

outcomes IEnumerable<double>

List of expected outcome values

Returns

double

The expected outcome/frequency of occurence value

Examples

Calculates Expected value of two probability sequences.

double expected = new double[]{1,2,3,4,5,6,7,8}.ExpectedValue(Enumerable.Repeat(0.125,8));

Factorial(IEnumerable<int>)

Calculates the factorial of any given value, from a provided range of values.

public static IEnumerable<int> Factorial(this IEnumerable<int> values)

Parameters

values IEnumerable<int>

List of input values

Returns

IEnumerable<int>

The list of factorials based on their original values

Examples

Calculates Factorial values for an IEnumerable.

var result = Enumerable.Range(1,10).Factorial();

FiboSeq(int)

Fibonacci sequence for a given number as input.

public static IEnumerable<ulong> FiboSeq(this int numLimit)

Parameters

numLimit int

The max number that fibonacci seq. gets generated for

Returns

IEnumerable<ulong>

An IEnumerable with fibonacci numbers.

Examples

Get the resulting numeric fibonacci sequence.

var seq_out = 10.FiboSeq();
var seq_out = 100.FiboSeq();

FiboSeqGenerator(int)

Fibonacci sequence yield utilizing generator functions.

public static IEnumerable<ulong> FiboSeqGenerator(this int num)

Parameters

num int

The max number that fibonacci seq. gets generated for

Returns

IEnumerable<ulong>

An IEnumerable with large fibonacci numbers.

Examples

Get the resulting numeric fibonacci sequence.

var seq_out = 10.FiboSeqGenerator();
var seq_out = 100.FiboSeqGenerator();

GetRandomElements<T>(IEnumerable<T>, int)

Retrieve a list of random elements from an input list.

public static IEnumerable<T> GetRandomElements<T>(this IEnumerable<T> elements, int totElements)

Parameters

elements IEnumerable<T>

The list of elements to be used as input

totElements int

The maximum number of random elements to be retrieved

Returns

IEnumerable<T>

A list of random elements with specified total length

Type Parameters

T

Any type of elements in the list

Examples

Get an IEnumerable of 10 randomly selected elements.

var tenElements = Enumerable.Range(1,100).GetRandomElements(10);

HammingDist(string, string)

Hamming distance calculation for comparing two strings of equal length Retrieves the different characters count in both strings

public static int HammingDist(this string leftStr, string rightStr)

Parameters

leftStr string

The left string part

rightStr string

The right string part

Returns

int

Maximum integer value in case both strings are not equal in legth, Number of differences in both strings otherwise.

Examples

Retrieve a default value as result if strings are not equal or hamming comparison value.

int res = "ABCDHFGF".HammingDist("ABCDEFO9"); //res equals to 3
   int res = "ABC".HammingDist("AAABBBCCCDD77"); //res equals to MaxInt
   int res = "A8udhhG".HammingDist("A8udhhG"); //res equals to 0
   int res = "A8udhhG".HammingDist("A8UDHHG"); //res equals to 4

HammingDistAlgo(int, int, AlgoType)

Hamming Distance calculation between two integer numbers using different algorithm variants, multiple algo. selections. (Calculated bit-level differences between numerical values)

public static int HammingDistAlgo(this int leftNum, int rightNum, LinqDataCalcExtensions.AlgoType hamming_alg)

Parameters

leftNum int

The leftmost number to compare with

rightNum int

The rightmost number to be compared with

hamming_alg LinqDataCalcExtensions.AlgoType

The hamming distance algorithm selection Can only use: AlgoType.DistLoop, AlgoType.DistXOR1, AlgoType.DistXOR2 for setting appropriate variant to use.

Returns

int

Examples

Calculating the hamming distance between two integers by using different methods.

int res = (-995).HammingDistAlgo((-48),LinqDataCalcExtensions.AlgoType.DistXOR1);
    int res = (-995).HammingDistAlgo((-48),LinqDataCalcExtensions.AlgoType.DistXOR2);
    int res = (-995).HammingDistAlgo((-48),LinqDataCalcExtensions.AlgoType.DistLoop);
    //Result in all cases above = 7

HammingWeight(uint)

Hamming Weight Calculation for bit-depth of integers (UInt support of 32-bit integer values) Utilizes direct "bit manipulation, bit swapping" algorithm for hamming weight calculation.

public static int HammingWeight(this uint in_x)

Parameters

in_x uint

The integer value to return the numerical weight for

Returns

int

The calculated integer value of hamming weight

Examples

Calculate the resulting hamming weight of an integer value.

uint testVal = 0x10043091; //int values
int result = testVal.HammingWeight();

HammingWeight(ulong)

Hamming Weight Calculation for bit-depth of long integers (ULong support of 64-bit integer values) Utilizes direct "bit manipulation, bit swapping" algorithm for hamming weight calculation.

public static int HammingWeight(this ulong in_x)

Parameters

in_x ulong

The long integer value to return the numerical weight for

Returns

int

The calculated integer value of hamming weight

Examples

Calculate the resulting hamming weight of a long integer value.

ulong testVal = 0x8891930311; //large int values
int result = testVal.HammingWeight();

HappySeq(int)

For a provided maximum value, generate happy numbers sequence up to that value.

public static IEnumerable<int> HappySeq(this int endLimit)

Parameters

endLimit int

The numeric sequence upper limit to generate the happy numbers for

Returns

IEnumerable<int>

A list of integer numbers.

Examples

Get the integers in a sequence that produce a happy sum.

var list_out = 150.HappySeq();
var list_out = 10.HappySeq();
var list_out = 0.HappySeq(); //list_out Length = 0
var list_out = 1.HappySeq(); //list_out Length = 1 (value = 1)

IEnumRndFill(IEnumerable<int>, object)

Retrieve a list with random integer or decimal numbers depending on input provided.

public static IEnumerable<object> IEnumRndFill(this IEnumerable<int> retIntSeq, object number)

Parameters

retIntSeq IEnumerable<int>

The list used as input

number object

A numeric value, decimal or integer

Returns

IEnumerable<object>

A list of random values

Examples

Get an IEnumerable filled with random integer/double values.

var resultInt = Enumerable.Repeat(0,10).IEnumRndFill(5); // fills with  random integers
var resultDouble = Enumerable.Repeat(0,10).IEnumRndFill(1.5); // fills with random doubles

IterateAt<T>(IEnumerable<T>, int)

Retrieves a range of values from a list iteratively as a nested list. Element list at index 1 at indexes 1,2 at 1,2,3 up to N.

public static IEnumerable<IEnumerable<T>> IterateAt<T>(this IEnumerable<T> elements, int size)

Parameters

elements IEnumerable<T>

List of elements used as input

size int

Number of max iterations that lists are retrieved

Returns

IEnumerable<IEnumerable<T>>

A nested enumerable list that has a maximum length defined by -size- parameter

Type Parameters

T

Any type of elements in the list

Examples

Get the Nth iteration of an IEnumerable in nested form.

int[] num_seq = { -990,-940,-770,-599,-543,-513,-482,-451,-445,-371,-240,-371,-940 };
var num = num_seq.AsEnumerable();
var result = num.IterateAt(4);

LetterCombinationsOf(string)

Retrieve all letter combinations (power sets) of a provided string.

public static List<string> LetterCombinationsOf(this string strElement)

Parameters

strElement string

The string of letters used as input

Returns

List<string>

A list of all combinations for the input string

Examples

Get a List of strings displaying letter combinations.

var combinations = ("He1l01!").LetterCombinationsOf();

LevnDist(string, string)

Levenshtein distance for two input strings and edit differences for those. (Can be applied between two strings of equal or differing length in size)

public static int LevnDist(this string strLeft, string strRight)

Parameters

strLeft string

The leftmost string to find edit diffs from

strRight string

The rightmost string to compare edit diffs with

Returns

int

Calculated sum or edit distance per input set of strings as integer.

Examples

Calculate the levenshtein distance between strings left, right.

int result = "Paints".LevnDist("ants"); //result = 2
    int result = "Compute".LevnDist("Confuse"); // result  = 3

LevnDistEditMatrix(string, string)

Levenshtein edit distance matrix retrieval with full set of calculations. (Can be applied between two strings of equal or differing length in size)

public static IEnumerable<int[,]> LevnDistEditMatrix(this string str1, string str2)

Parameters

str1 string

The leftmost string to compare edit diffs from

str2 string

The rightmost string to compare edit diffs with

Returns

IEnumerable<int[,]>

An enumerable of the entire 2-dimensional edit distances matrix with all distance calculations.

Examples

Calculate the levenshtein distance of two strings, return the entire set of iterations, element at array position [N,M] is the result of the total diff distance.

var result_ienum = "test2".LevnDistEditMatrix("arst22"); //last matrix element = 3
    var result_ienum = "ant".LevnDistEditMatrix("aunt"); //last matrix element = 1

LevnDistRecur(string, string, int[,])

A recursive Levenstein implementation utilizing memoized cache for faster execution time. (Can be applied between two strings of equal or differing length in size)

public static int LevnDistRecur(this string leftStrIn, string rightStrIn, int[,] memo)

Parameters

leftStrIn string

The leftmost string to find edit diffs from

rightStrIn string

The rightmost string to compare edit diffs with

memo int[,]

The matrix to store the intermediary distance cost results in Note: Needs to be the same size as NxM such that N = length of leftStrIn, M = length of rightStrIn

Returns

int

Calculated sum or edit distance per input set of strings as integer.

Examples

Calculate the levenshtein distance between strings left, right.

int result = "test2".LevnDistRecur("arst22",new int[("test2".Length)+1,("arst22".Length)+1]); // result = 3
    int result = "Sam".LevnDistRecur("Samantha",new int[("Sam".Length)+1,("Samantha".Length)+1]); // result = 5

MatrixProduct(int[,], int[,])

Matrix dot product calculation for 2-dimensional integer arrays of shape NxM. (PLINQ utilization for large data sets handling)

public static int[,] MatrixProduct(this int[,] matrixA, int[,] matrixB)

Parameters

matrixA int[,]

First integer matrix to be used for multipl. product

matrixB int[,]

Second integer matrix to be multiplied with for multipl. product

Returns

int[,]

The product matrix in a 2-dimensional matrix format

Examples

Calculate and retrieve the dot product of multiplying the two input matrices.

var result = new int[4,2]{{2,2},{3,7},{8,4},{8,5}}.MatrixProduct(new int[2,3]{{1,2,4},{12,42,9}}); // Result as a 2-dim array

MatrixProductv2(int[,], int[,], int)

Matrix dot product calculation for 2-dimensional integer arrays of shape NxM. (Outputs the finalized product matrix in either list of lists or standard 2-d array format)

public static object MatrixProductv2(this int[,] mtrx1, int[,] mtrx2, int twoDim = 0)

Parameters

mtrx1 int[,]

First integer matrix to be used for multipl. product

mtrx2 int[,]

Second integer matrix to be multiplied with for multipl. product

twoDim int

Selection option to retrieve the product result as a list of sublists or as a normal 2-dimensional matrix

Returns

object

An Object of either List of sublists type or int[,] type that defines product matrix result.

Examples

Calculate and retrieve the dot product of multiplying two matrices in both list-of-lists format or standard 2-dimensional array format. This can be determined by a variable, defaults to 2-dimensional array output.

var result_1 = new int[4,2]{{2,2},{3,7},{8,4},{8,5}}.MatrixProductv2(new int[2,3]{{1,2,4},{12,42,9}},0); // Results to 2-dim array output
var result_2 = new int[4,2]{{2,2},{3,7},{8,4},{8,5}}.MatrixProductv2(new int[2,3]{{1,2,4},{12,42,9}},1); // Results to list of lists output

MatrixTranspose<T>(T[,])

Transposes a 2-dimensional array of different data type such that rows N become columns M and vice-versa.

public static T[,] MatrixTranspose<T>(this T[,] matrixIn)

Parameters

matrixIn T[,]

The 2-dimensional input matrix to invert rows with columns from

Returns

T[,]

Transposed 2-dimensional matrix of the original input array for any kind of array elements.

Type Parameters

T

Any kind of elements in a sequence

Examples

Transpose 2-dimensional matrix of dimensions [N,M].

int[,] matrixT1 = new int[6,2] { {3,4},{5,9},{10,44},{3,77},{88,0},{0,90} }; //test with integers matrix

double[,] matrixT2 = new double[5,9]{ {9.0,34.0,0.99,3.1,9.4,4.51,9.87,1.43,9.88}, {2.4,22.01,55.10,9.09,1.30,9.99,10.45,9.0,8.01},
                                      {4.6,4.3,3.4,68.009,45.92,3.54,9.89,5.69,0.849},{1.2,4.5,33.5,54.4,45.9,5.89,9.09,1.223,4.54},
                                      {4.5,1.0,4,42.9,9.9,9.9,9,9,9} }; //test with doubles matrix

var resultT1 = matrixT1.MatrixTranspose(); // results in a 2x6 matrix
var resultT2 = matrixT2.MatrixTranspose();  // results in a 9x5 matrix

MatrixTranspose<T>(T[][])

Transposes a 2-dimensional jagged -or uneven- array of different data type such that rows N become columns M and vice-versa.

public static T[][] MatrixTranspose<T>(this T[][] matrixIn)

Parameters

matrixIn T[][]

The 2-dimensional jagged array to invert rows with columns from

Returns

T[][]

Transposed 2-dimensional jagged array of the original input array for any kind of array elements.

Type Parameters

T

Any kind of elements in a sequence

Examples

Transposed 2-dimensional jagged array of dimensions [N][M].

string[][] matrixT3 = new string[][]{ //test with strings array
new string[12]{"This", "is a", "test","this","side","should","appear","on the left","of ","your","screen","if the"},
new string[12]{" script"," has ","been run ","as", " expected.","Test ","run"," already ","for a ","matrix of ","nxm size "," where n is" },
new string[12]{"equal to 3"," and ","m equal"," to "," twelve"," If n"," and  m","increase"," or decrease then","output should","vary ","accordingly"}
};

var resultT3 = matrixT3.MatrixTranspose(); //results in a 12x3 jagged array [12][3]

MaxCollVals(List<List<int>>, bool)

Retrieve either the maximum or minimum set of value from every nested integer list-of-lists data structure.

public static List<int> MaxCollVals(this List<List<int>> inputColl, bool isMax = true)

Parameters

inputColl List<List<int>>

Input nested list to retrieve max-min set of values from

isMax bool

Option to retrieve either the maximum or minimum values per subset in every list-of-lists dataset

Returns

List<int>

An integer list containing the maximum value of each column-compared subset in list-of lists

Examples

Retrieve all the maximum, or minimum integer values for each column-based subset in the input nested list.

// 1 - Provided that you initialize a list of lists (code not shown..)
// . . . 
allValues.Add(valuesSet1); // 2 - populate the lists of lists
allValues.Add(valuesSet2);
allValues.Add(valuesSet3);
allValues.Add(valuesSet4);
var result = allValues.MaxCollVals(); //defaults to maximum subset of values for every column-compared subset of lists
var result = allValues.MaxCollVals(false); //results to minimum subset of values for every column-compared subset of lists

MaxMatrixVal(int[,], bool)

Retrieve either the maximum or minimum value in a 2-dimensional integer matrix.

public static int MaxMatrixVal(this int[,] mtrx, bool isMax = true)

Parameters

mtrx int[,]

Input matrix to retrieve max-min values from

isMax bool

Option to retrieve either the maximum or minimum value from 2-dimensional dataset from

Returns

int

The maximum or minimum integer value of the input matrix

Examples

Retrieve the maximum, or minimum integer value from the input matrix.

int[,] arr2d = new int[,]{{10,40,13,40},{9,10,40,99},{9,10,40,99},{9,10,49,19},{9,10,40,990},{9,10,422,99}};
var result = arr2d.MaxMatrixVal() // defaults to maximum value = 990
var result = arr2d.MaxMatrixVal(false) // retrieve minimum value = 9

MaxMultiDimVal(int[][], bool)

Retrieve either the maximum or minimum value in a jagged array data structure.

public static int MaxMultiDimVal(this int[][] mtrx, bool isMax = true)

Parameters

mtrx int[][]

Input matrix to retrieve max-min values from

isMax bool

Option to retrieve either the maximum or minimum value from the jagged array dataset

Returns

int

The maximum or minimum integer value of the input array of arrays

Examples

Retrieve the maximum, or minimum integer value from the input array of arrays.

int[] arr1 = new int[] {1,2,3,5,4};
int[] arr2 = new int[] {3,2,1,0,10,39,10,43,11};
int[] arr3 = new int[]{24,1,90};
int[][] main_arr = new int[][]{arr1,arr2,arr3};
var result = main_arr.MaxMultiDimVal() // defaults to maximum value = 90
var result = main_arr.MaxMultiDimVal(false) // retrieve minimum value = 0

MedianValue(IEnumerable<int>)

Return the median value in an -ordered- numeric sequence.

public static double MedianValue(this IEnumerable<int> elements)

Parameters

elements IEnumerable<int>

The numeric sequence used as input

Returns

double

Double median value for the selected sequence

Examples

Get the median value in an IEnumerable.

int[] num_seq = { -990,-940,-770,-599,-543,-513,-482,-451,-445,-371,-240 };
    var num = num_seq.AsEnumerable();
    double result = num.MedianValue();

ModeValues(IEnumerable<int>)

Retrieve the mode values in a sequence of numbers. (The most frequently occuring number - ordered)

public static IEnumerable<KeyValuePair<int, int>> ModeValues(this IEnumerable<int> elements)

Parameters

elements IEnumerable<int>

The numeric sequence used as input

Returns

IEnumerable<KeyValuePair<int, int>>

An IEnumerable KeyValuePair with Key=total per the mode value and Value=occuring value in the sequence.

Examples

Get the top used values in an IEnumerable.

int[] num_seq = { -990,-940,-770,-599,-543,-513,-482,-451,-445,-371,-240,-371,-940 };
    var num = num_seq.AsEnumerable();
    var result = num.ModeValues();

OddOrEven<T>(IEnumerable<T>)

Checks whether the total length of a sequence is odd or even.

public static bool OddOrEven<T>(this IEnumerable<T> elements)

Parameters

elements IEnumerable<T>

The data sequence to be checked

Returns

bool

True or False depending on the result

Type Parameters

T

Any kind of elements in a sequence

Examples

Check whether length of IEnumerable is odd or even.

bool oddlen = new int[]{4,43,13,50,40}.OddOrEven();

PowerOf(int, int)

Raises a number to the Nth power recursively.

public static int PowerOf(this int value, int powBy)

Parameters

value int

The integer to raise to the Nth power

powBy int

The Nth power value

Returns

int

Result of the power of a number

Examples

Calculates Nth power of an integer.

int result = new int[]{4,43,13,50,40}.Select(n=>n.PowerOf(3));

ReorderElementsIterator<T>(IEnumerable<T>, Random)

Implementation of the iterative functionality for the list reording.

public static IEnumerable<T> ReorderElementsIterator<T>(this IEnumerable<T> elements, Random prng)

Parameters

elements IEnumerable<T>

The list of elements to be used as input

prng Random

The Random object to be used as seed for shuffling indexes

Returns

IEnumerable<T>

A list of reordered elements using random index shuffling in the initial list

Type Parameters

T

Any type of elements in the list

ReorderElements<T>(IEnumerable<T>)

Retrieve a list of random elements from an input list -using natural reordering-.

public static IEnumerable<T> ReorderElements<T>(this IEnumerable<T> elements)

Parameters

elements IEnumerable<T>

Returns

IEnumerable<T>

A reording elements iterator result with the Random object seed

Type Parameters

T

Any type of elements in the list

Examples

Get an IEnumerable of 10 reordered elements.

var tenElements = Enumerable.Range(1,10).ReorderElements().Take(10);

RndDoubleTuple(IEnumerable<int>, double)

Provided a list of integer values you, retrieve a list of tuples and random doubles with random string values.

public static IList<(double sample, string name)> RndDoubleTuple(this IEnumerable<int> elements, double scaleFact)

Parameters

elements IEnumerable<int>

A list of default integers to be modified

scaleFact double

The scaling factor by which double values are created

Returns

IList<(double sample, string name)>

A list of tuples with random doubles and string values

Examples

Get a List Tuple filled with random doubles and random strings.

var resRndDouble = Enumerable.Range(1,10).RndDoubleTuple(.001);

Remarks

This works using argument deconstruction by ValueTuple type (available with C# >= 7, .NET >= 4.7, VS 2019) Already included .dll reference for ValueTuples (currently .NET = 4.6.)

RndIntTuple(IEnumerable<int>)

Provided a list of integer values you, retrieve a list of tuples and random integer with random string values.

public static IList<(int sample, string name)> RndIntTuple(this IEnumerable<int> elements)

Parameters

elements IEnumerable<int>

A list of default integers to be modified

Returns

IList<(int sample, string name)>

A list of tuples with random integers and string values

Examples

Get an List Tuple filled with random integers and random strings.

var resRndInt = Enumerable.Range(1,10).RndIntTuple();

Remarks

This works using argument deconstruction by ValueTuple type (available with C# >= 7, .NET >= 4.7, VS 2019) Already included .dll reference for ValueTuples (currently .NET = 4.6.)

SequenceEquals<T>(T[,], T[,])

Checks whether two 2-dimensional arrays of any element type are equal.

public static bool SequenceEquals<T>(this T[,] a, T[,] b)

Parameters

a T[,]

The first sequence to be compared

b T[,]

The second sequence to be compared against the first

Returns

bool

True or False depending on the result

Type Parameters

T

Any kind of elements in a sequence

Examples

Check whether two 2-dimensinonal arrays of any type are equal.

int[,] intArray1 = new int[4,4]{{432,31,32,43},{324,321,55,31},{110,34,543,13},{90,321,453,12}};
          int[,] intArray2 = new int[4,4]{{110,43,120,301},{54,312,321,91},{99,45,21,12},{9,32,45,152}};
          bool res = intArray1.SequenceEquals(intArray2);

          byte[,] barray1 = new byte[3,3]{{132,56,32},{30,45,10},{92,100,48}};
          byte[,] barray2 = new byte[3,3]{{132,56,32},{30,45,10},{92,100,48}};
          bool res = barray1.SequenceEquals(barray2);

StandardDeviation(IEnumerable<double>)

Calculates the standard deviation value of double numeric sequence.

public static double StandardDeviation(this IEnumerable<double> values)

Parameters

values IEnumerable<double>

The numeric sequence used as input

Returns

double

Standard deviation double result

Examples

Calculates STDEVP() for long.

double result = new long[]{394392,93993,323993,49240,49329}.StandardDeviation();

StandardDeviation(IEnumerable<int>)

Calculates the standard deviation value of integer numeric sequence.

public static double StandardDeviation(this IEnumerable<int> values)

Parameters

values IEnumerable<int>

The numeric sequence used as input

Returns

double

Standard deviation double result

Examples

Calculates STDEVP().

double result = new int[]{10,23,13,50,4}.StandardDeviation();

StandardDeviation(IEnumerable<long>)

Calculates the standard deviation value of large integer numeric sequence.

public static double StandardDeviation(this IEnumerable<long> values)

Parameters

values IEnumerable<long>

The numeric sequence used as input

Returns

double

Standard deviation double result

Examples

Calculates STDEVP() for doubles.

double result = new double[]{0.1124,2.311,4.11,2.94,5.51).StandardDeviation();

TenPowerOf(int)

Returns the value of 10 raised to the power of N value.

public static object TenPowerOf(this int powOf)

Parameters

powOf int

The Nth power value

Returns

object

Result of the 10 in the power of N (can be float,int,ulong)

Examples

Calculates Nth power of number 10.

long tenthousand = (4).TenPowerOf();

Remarks

The function will not output negative values

ToDoublePowerOf(IEnumerable<int>, double)

Raises each number in a sequence to the Nth power(where N is double).

public static IEnumerable<double> ToDoublePowerOf(this IEnumerable<int> values, double val)

Parameters

values IEnumerable<int>

The list of integers to be raised to the Nth double power

val double

The Nth power double value

Returns

IEnumerable<double>

Resulting list of double values raised to the Nth power

Examples

Calculates Nth double power of all integers in IEnumerable.

int[] num_seq = { -990,-940,-770,-599,-543,-513,-482,-451,-445,-371,-240,-371,-940 };
var num = num_seq.AsEnumerable();
var result = num.ToDoublePowerOff(2.71);

ToIntMatrix(string, int[,])

Present a sequence of numbers in a string, into a 2-dimensional matrix (letters and some characters are ommited) that has zero-fill for extra positions in case that array is larger than input.

public static int[,] ToIntMatrix(this string StrNum, int[,] twodimOut)

Parameters

StrNum string

The string of numbers to be used as input

twodimOut int[,]

The 2d matrix to be used as output

Returns

int[,]

A 2-dimensional integer matrix, of prespecified dimensions N x M

Examples

Retrieve ONLY numbers from a string represented in a 2d matrix array. Note: Minimum array dimensions are 2x2 (used as default when input length less than 4 or when overallocating array space).

int[,] result = "2911".ToIntMatrix(new int[4,4]); // Result OK with zero padding
int[,] result = "2962728abcs1119__1".ToIntMatrix(new int[4,10]); //Result OK with zero padding
int[,] result = "2962728abcs1119__1".ToIntMatrix(new int[4,2]); //Result OK, trimmed
int[,] result = "2962728abcs1119__1".ToIntMatrix(new int[4,3]); //Result OK
int[,] result = "2962728abcs1119__1".ToIntMatrix(new int[10,10]); //Result n/a, trimmed to 2x2 with zero padding
int[,] result = "29".ToIntMatrix(new int[1,2]); //Result n/a, trimmed to 2x2 with zero padding

ToIntPowerOf(IEnumerable<int>, int)

Raises each number in a sequence to the Nth power.

public static IEnumerable<long> ToIntPowerOf(this IEnumerable<int> values, int val)

Parameters

values IEnumerable<int>

The list of integers to be raised to the Nth power

val int

The Nth power value

Returns

IEnumerable<long>

Resulting list of large integers raised to the Nth power

Examples

Calculates Nth power of all integers in IEnumerable.

int[] num_seq = { -990,-940,-770,-599,-543,-513,-482,-451,-445,-371,-240,-371,-940 };
var num = num_seq.AsEnumerable();
var result = num.ToIntPowerOf(3);

VectorProduct(int[], int[])

Calculation of the dot product for integer vectors N -vector multiplication-

public static IEnumerable<int> VectorProduct(this int[] v1, int[] v2)

Parameters

v1 int[]

First integer array vector to multiply values from

v2 int[]

Second integer array vectr to multiply values with

Returns

IEnumerable<int>

An integer IEnumerable containing the dot product values based on the initial vectors

Examples

Calculate and retrieve the dot product of multiplying two vectors as an IEnumerable.

int[] vect1 = {2,3,3}; // First vector
int[] vect2 = {3,2,2}; // Second vector
var result = vect1.VectorProduct(vect2); // result is an IEnumerable list of multipl. values

add(int, int)

Binary addition of two integer numbers incl. carry digits. (negative or positive integer numerical values only)

public static int add(this int from_x, int add_y)

Parameters

from_x int

Numerical value x to perform the addition to

add_y int

Numerical value y to use in addition operation

Returns

int

The integer result of the addition operation

Examples

Retrieve the result of adding integer y to underlying value x or vice-versa.

int result1 = 100.add(93);
int result2 = -90.add(54);

subtract(int, int)

Binary subtraction of two integer numbers incl. carry digits. (negative or positive integer numerical values only)

public static int subtract(this int from_x, int sub_y)

Parameters

from_x int

Numerical value x to perform the subtraction from

sub_y int

Numerical value y to use in subtraction operation

Returns

int

The integer result of the subtraction operation

Examples

Retrieve the result of subtracting integer y from underlying value x or vice-versa.

int result = -483.subtract(53);
int result = -483.subtract(403);