public static string GetGroupString(SCarnoGroup group, char[] letters) { ArrayList groupChars = new ArrayList(); int[] mintermIndexes = GetMintermsIndexes(GetMintermsInsideGroup(group)); int firstMintermIndex = mintermIndexes[0]; int indexesCount = mintermIndexes.GetLength(0); int equalityResult = firstMintermIndex; byte lettersCount = (byte)letters.GetLength(0); bool flag; // Group string for group RectGroup_16 if ((group.Type == EGroupTypes.RectGroup_16 && lettersCount == 4) || (group.Type == EGroupTypes.RectGroup_8_Hor && lettersCount == 3)) { return("1 (True)"); } // Find bits in minterms that are equal (bits with same height) for (byte i = 0; i < lettersCount; i++) { flag = true; for (int j = 1; j < indexesCount; j++) { if (BinaryManip.GetBitValue(firstMintermIndex, i) != BinaryManip.GetBitValue(mintermIndexes[j], i)) { flag = false; break; } } BinaryManip.SetBitValue(ref equalityResult, i, flag); } // - - - // Produce group string for (byte i = 0; i < lettersCount; i++) { if (BinaryManip.GetBitValue(equalityResult, i)) { string tmpStr; if (BinaryManip.GetBitValue(firstMintermIndex, i)) { tmpStr = letters[lettersCount - i - 1].ToString(); } else { tmpStr = letters[lettersCount - i - 1].ToString() + "\'"; } groupChars.Add(tmpStr); } } groupChars.Reverse(); // - - - // Return all strings string[] str = (string[])groupChars.ToArray(typeof(string)); return(string.Concat(str)); }
public void SetBitValue(byte bitIndex, bool newBitValue) { BinaryManip.SetBitValue(ref m_mintermIndex, bitIndex, newBitValue); }