Advertisement
Guest User

Bit FlipperWithStrings

a guest
Dec 3rd, 2014
290
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.67 KB | None | 0 0
  1. namespace BitFlipperWithStrings
  2. {
  3.     class BitFlipperWithStrings
  4.     {
  5.         static void Main()
  6.         {
  7.             ulong number = ulong.Parse(Console.ReadLine());
  8.             string bitNumber = toBits(number);
  9.             char[] bitArr = bitNumber.ToCharArray();
  10.             int count = 1;
  11.             int i = 0;
  12.             while (i < 64)
  13.             {
  14.                 if (count == 3 && bitArr[i] == '1')
  15.                 {
  16.                     bitArr[i] = '0';
  17.                     bitArr[i - 1] = '0';
  18.                     bitArr[i - 2] = '0';
  19.                     count = 1;
  20.                     i++;
  21.                     continue;
  22.                 }
  23.                 else if (count == 3 && bitArr[i] == '0')
  24.                 {
  25.                     bitArr[i] = '1';
  26.                     bitArr[i - 1] = '1';
  27.                     bitArr[i - 2] = '1';
  28.                     count = 1;
  29.                     i++;
  30.                     continue;
  31.                 }
  32.                 if (i <= 62 && bitArr[i] == bitArr[i + 1])
  33.                 {
  34.                     count++;
  35.                 }
  36.                 else
  37.                 {
  38.                     count = 1;
  39.                 }
  40.                 i++;
  41.             }
  42.             ulong num64 = Convert.ToUInt64(new string(bitArr), 2);
  43.             //Console.WriteLine(new string(bitArr));
  44.             Console.WriteLine(num64);
  45.  
  46.         }
  47.         static string toBits(ulong number)
  48.         {
  49.             string bitNumber = "";
  50.             for (int i = 63; i >= 0; i--)
  51.             {
  52.                 ulong bit = (number >> i) & 1u;
  53.                 bitNumber += bit;
  54.             }
  55.             return bitNumber;
  56.         }
  57.     }
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement