Exemplo n.º 1
0
 public bool Equals(MayanNumeral n)
 {
     return(Base10 == n.Base10);
 }
Exemplo n.º 2
0
    static void Main(string[] args)
    {
        var parsedMayan =
            Enumerable.Range(0, 20)
            .Select(l => new List <string>()).ToArray();

        string[] inputs = Console.ReadLine().Split(' ');
        int      L      = int.Parse(inputs[0]);
        int      H      = int.Parse(inputs[1]);

        for (int i = 0; i < H; i++)
        {
            string numeral = Console.ReadLine();
            int    idx     = 0;
            int    base10  = 0;
            do
            {
                parsedMayan[base10].Add(numeral.Substring(idx, L));

                base10 = base10 + 1;
                idx   += L;
            } while (idx < numeral.Length);
        }

        var baseMayan = new MayanNumeral[20];

        for (int i = 0; i < 20; i++)
        {
            baseMayan[i] = new MayanNumeral(i, parsedMayan[i]);
            Console.Error.WriteLine("#: " + i);
            Console.Error.WriteLine(baseMayan[i]);
        }

        long s1    = 0;
        int  s1Pow = (int.Parse(Console.ReadLine()) / H) - 1;

        for (int i = s1Pow; i >= 0; i--)
        {
            var mn = new List <string>();
            for (int ni = 0; ni < H; ni++)
            {
                mn.Add(Console.ReadLine());
            }
            int base10 = baseMayan.First(m => m.Equals(mn)).Base10;
            Console.Error.WriteLine("S1: Base10: {1}, Pow: {0}", i, base10);
            Console.Error.WriteLine(string.Join("\n", mn));
            s1 += (base10 * (int)Math.Pow(20, i));
        }
        Console.Error.WriteLine("S1: " + s1);

        long s2    = 0;
        int  s2Pow = (int.Parse(Console.ReadLine()) / H) - 1;

        for (int i = s2Pow; i >= 0; i--)
        {
            var mn = new List <string>();
            for (int ni = 0; ni < H; ni++)
            {
                mn.Add(Console.ReadLine());
            }

            int base10 = baseMayan.First(m => m.Equals(mn)).Base10;
            Console.Error.WriteLine("S2: Base10: {1}, Pow: {0}", i, base10);
            Console.Error.WriteLine(string.Join("\n", mn));
            s2 += (base10 * (int)Math.Pow(20, i));
        }
        Console.Error.WriteLine("S2: " + s2);

        string operation = Console.ReadLine();


        long base10Result = 0;

        switch (operation)
        {
        case "+":
            base10Result = s1 + s2;
            break;

        case "-":
            base10Result = s1 - s2;
            break;

        case "/":
            base10Result = s1 / s2;
            break;

        case "*":
            base10Result = s1 * s2;
            break;
        }
        Console.Error.WriteLine("Operation: {0} {1} {2} = {3}", s1, operation, s2, base10Result);

        Console.Error.WriteLine();
        WriteMayanNumber(base10Result, baseMayan);
    }