public static CodePiece GenerateCode(bool value) { CodePiece p = new CodePiece(); p[0, 0] = BCHelper.Dig(value ? (byte)1 : (byte)0); return(p); }
private static void GetFactors(CodePiece p, long a) // Wenn nicht möglich so gut wie mögl und am ende add { List <int> result = new List <int>(); if (a < 10) { p.AppendRight(BCHelper.Dig((byte)a)); return; } for (byte i = 9; i > 1; i--) { if (a % i == 0) { GetFactors(p, a / i); p.AppendRight(BCHelper.Dig(i)); p.AppendRight(BCHelper.Mult); return; } } for (byte i = 1; i < 10; i++) { if ((a - i) % 9 == 0) { GetFactors(p, a - i); p.AppendRight(BCHelper.Dig(i)); p.AppendRight(BCHelper.Add); return; } } throw new WTFException(); }
public static CodePiece GenerateCode(long d) { if (d < 0 || d > 9) { return(null); } CodePiece p = new CodePiece(); p[0, 0] = BCHelper.Dig((byte)d); return(p); }
public static CodePiece GenerateCode(long lit) { CodePiece p = new CodePiece(); bool isneg; if (isneg = lit < 0) { lit *= -1; } string rep = ConvertToBase(lit, 9); int pos = 0; if (isneg) { p[pos++, 0] = BCHelper.Digit0; } for (int i = 0; i < rep.Length; i++) { p[pos++, 0] = BCHelper.Dig((byte)(rep[rep.Length - i - 1] - '0')); if (i + 1 != rep.Length) { p[pos++, 0] = BCHelper.Dig(9); } } int count = rep.Length - 1; for (int i = 0; i < count; i++) { p[pos++, 0] = BCHelper.Mult; p[pos++, 0] = BCHelper.Add; } if (isneg) { p[pos++, 0] = BCHelper.Sub; } return(p); }
public override CodePiece GenerateCode(CodeGenEnvironment env, bool reversed) { CodePiece p = new CodePiece(); int i = 0; if (reversed) { foreach (byte val in Value) { p[i--, 0] = BCHelper.Dig(val); } } else { foreach (byte val in Value) { p[i++, 0] = BCHelper.Dig(val); } } p.NormalizeX(); return(p); }
public static CodePiece GenerateCode(long lit) { if (lit < 0) { CodePiece p = GenerateCode(-lit); if (p == null) { return(null); } p.AppendLeft(BCHelper.Digit0); p.AppendRight(BCHelper.Sub); p.NormalizeX(); return(p); } if (lit >= 0 && lit <= 9) { return(new CodePiece(BCHelper.Dig((byte)lit))); } if (lit < MIN_ASCII && lit >= (MIN_ASCII - 9)) { if (lit + 9 == '"') { CodePiece p = GenerateCode(lit + 8); if (p == null) { return(null); } p.AppendRight(BCHelper.Digit8); p.AppendRight(BCHelper.Sub); return(p); } else { CodePiece p = GenerateCode(lit + 9); if (p == null) { return(null); } p.AppendRight(BCHelper.Digit9); p.AppendRight(BCHelper.Sub); return(p); } } if (lit < (MIN_ASCII - 9)) { return(null); } List <char> str; List <StripOp> ops; if (CalculateStringOps(out str, out ops, lit)) { CodePiece p = new CodePiece(); p.AppendRight(BCHelper.Stringmode); foreach (char c in str) { p.AppendRight(BCHelper.Chr(c)); } p.AppendRight(BCHelper.Stringmode); for (int i = 0; i < ops.Count; i++) { switch (ops[i]) { case StripOp.Add: p.AppendRight(BCHelper.Add); break; case StripOp.Mult: p.AppendRight(BCHelper.Mult); break; default: throw new WTFException(); } } return(p); } return(null); }