مهلت ارسال پاسخ به چالش تمام شد و این هم کد من برای جواب چالش ترک عملگر ها

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;

namespace multiplication
{
    //multiplication whithout using any operator (boolean operators (&& || !) are permited).
    //solved by Behnam Simjoo on 2019/05/10
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                Console.Clear();
                Console.Write("a=");
                int a = int.Parse(Console.ReadLine());
                Console.Write("b=");
                int b = int.Parse(Console.ReadLine());
                int res = f(a, b);
                Console.WriteLine($"---------------------\nResult: {res}");
                Console.ReadKey();
            }
        }
        static int f(int a,int b)
        {
            if (a < b) { int t = a;  a = b;  b = t; }  //for more speed
            int temp = a;
            for(int i = 1; i < b; i=Sum(i,1))  //using Sum function in place of ++ operation
                a = Sum(a, temp);
            return a;
        }
        static int Sum (int a,int b)
        {
            bool[] ab = Convert.ToString(a, 2).PadLeft(32, '0').Select(s=>s=='1').ToArray();
            bool[] bb = Convert.ToString(b, 2).PadLeft(32, '0').Select(s=>s=='1').ToArray();
            //converting int to bin string and converting 0 to false and 1 to true
            int carry = 0,result=0;
            do {
                carry = 0;
                result = 0;
                bool[] r = new bool[32];
                List<bool> c = new List<bool>(32);
                r=ab.Select((s, i) => s && bb[i] ? false : (s || bb[i])).ToArray();     //Boolean sum without carry
                c.AddRange(ab.Select((s, i) =>s && bb[i]).ToArray());                   //Boolean sum calcuting carry

                // a | b || result of a+b | carry
                //---|---||---------------|------
                // 0 | 0 ||       0       |   0
                // 1 | 0 ||       1       |   0
                // 0 | 1 ||       1       |   0
                // 1 | 1 ||       0       |   1

                //     a=19=00010011|
                //      +            }=> r=00001010 , c=00010001
                //     b=25=00011001|
                //       -----------
                //result=44=00101100
                //shifting c to left
                c.Add(false);
                c.RemoveAt(0);
                // c=00010001 => shift => c=00100010
                ab = c.ToArray();
                bb = r;
                //seting ab = carry and bb = r to continue sum process until carry became zero
                c.Reverse();
                r = r.Reverse().ToArray();
                //reversing boolarrays for BitArray
                Array A = new int[2];
                BitArray res = new BitArray(r);
                res.CopyTo(A, 0);
                BitArray cry = new BitArray(c.ToArray());
                cry.CopyTo(A, 1);
                carry = (int)A.GetValue(1);
                result = (int)A.GetValue(0);
                //converting binary to single integer value
                //then cuntinue process until carry != 0
                //1st next step: r=00001010, c=00100010 => r+c => r=00101000, c=00000100
                //2nd next step: r=00101000, c=00000100 => r+c => r=00101100, c=00000000 => result = 44
            } while (carry != 0);
            return result;
        }
    }
}