/// <summary> /// zählt die anzahl der Transitionen und füllt die Liste der Symbole auf /// </summary> /// <returns>Anzahl der Zustände</returns> private int CountStates() { int CountStates = 0; m_Symbols.Clear(); TMState sts = m_TM.GetStates; while (sts != null) { CountStates++; string symbl = sts.GetRead(); AddSymbol(symbl); sts = sts.GetNext(); } return(CountStates); }
/// <summary> /// konvertiert die Transitionen /// </summary> /// <returns>konvertierte Transitionen</returns> private string ConvertTransitions() { ArrayList colStates = null; string Transitions = ""; TMState sts = m_TM.GetStates; int NodesCnt = NodesTotal(m_BitLen); while (sts != null) { sts = GetNextState(sts, ref colStates); if (colStates.Count > 0) { string StateSymbl = ((TMState)colStates[0]).GetStateF() + "_"; string Trans = "# Zustand: " + StateSymbl + "\r\n"; for (int NodesNr = 1; NodesNr < NodesCnt; NodesNr++) { string StateNrBinaer = GenerateBinNr(NodesNr); string StateNrBinaerBefore = GenerateBinNr(GetTreeNrBefore(NodesNr)); int rdSymbl = ((NodesNr + 1) % 2); Trans += CreateTrans(StateSymbl + StateNrBinaerBefore, rdSymbl.ToString(), StateSymbl + StateNrBinaer, rdSymbl.ToString(), "R", (rdSymbl != 0)); } Trans += "\r\n"; for (int i = 0; i < colStates.Count; i++) { TMState actSts = (TMState)colStates[i]; string AddSymbl = ConvertSymbol(actSts.GetRead());; for (int Depth = 0; Depth < m_BitLen; Depth++) { Trans += CreateTrans(StateSymbl + AddSymbl, "0", StateSymbl + AddSymbl + "Z", "0", "L", false); Trans += CreateTrans(StateSymbl + AddSymbl, "1", StateSymbl + AddSymbl + "Z", "1", "L", true); AddSymbl += "Z"; } Trans += "\r\n"; char[] writeSymbl = ConvertSymbol(actSts.GetWrite()).ToCharArray(); if (actSts.GetMove().ToUpper().Equals("R")) { for (int Depth = 0; Depth < writeSymbl.Length - 1; Depth++) { Trans += CreateTrans(StateSymbl + AddSymbl, "0", StateSymbl + AddSymbl + "W", writeSymbl[Depth].ToString(), "R", false); Trans += CreateTrans(StateSymbl + AddSymbl, "1", StateSymbl + AddSymbl + "W", writeSymbl[Depth].ToString(), "R", true); AddSymbl += "W"; } Trans += CreateTrans(StateSymbl + AddSymbl, "0", actSts.GetStateN() + "_", writeSymbl[writeSymbl.Length - 1].ToString(), "R", false); Trans += CreateTrans(StateSymbl + AddSymbl, "1", actSts.GetStateN() + "_", writeSymbl[writeSymbl.Length - 1].ToString(), "R", true); } else { for (int Depth = 0; Depth < writeSymbl.Length; Depth++) { Trans += CreateTrans(StateSymbl + AddSymbl, "0", StateSymbl + AddSymbl + "W", writeSymbl[Depth].ToString(), "R", false); Trans += CreateTrans(StateSymbl + AddSymbl, "1", StateSymbl + AddSymbl + "W", writeSymbl[Depth].ToString(), "R", true); AddSymbl += "W"; } Trans += "\r\n"; for (int Depth = 0; Depth < writeSymbl.Length * 2 - 1; Depth++) { Trans += CreateTrans(StateSymbl + AddSymbl, "0", StateSymbl + AddSymbl + "Z", "0", "L", false); Trans += CreateTrans(StateSymbl + AddSymbl, "1", StateSymbl + AddSymbl + "Z", "1", "L", true); AddSymbl += "Z"; } Trans += CreateTrans(StateSymbl + AddSymbl, "0", actSts.GetStateN() + "_", "0", "L", false); Trans += CreateTrans(StateSymbl + AddSymbl, "1", actSts.GetStateN() + "_", "1", "L", true); } Trans += "\r\n"; } Transitions += Trans; } } return(Transitions); }