Advertisement
Filkolev

BitBuilder-fixed

Dec 14th, 2014
288
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.38 KB | None | 0 0
  1. using System;
  2.  
  3. class BitBuilder
  4. {
  5.     static void Main()
  6.     {
  7.         long number = Convert.ToInt64(Console.ReadLine());
  8.  
  9.         string action = "";
  10.         int position = 0;
  11.  
  12.         while (true)
  13.         {
  14.             long mask = 0;
  15.  
  16.             string positionString = Console.ReadLine();
  17.  
  18.             if (positionString == "quit")
  19.             {
  20.                 Console.WriteLine(number);
  21.                 return;
  22.             }
  23.  
  24.             position = Convert.ToInt32(positionString);
  25.             action = Console.ReadLine();
  26.  
  27.             string maskAsString = new string('1', position);
  28.  
  29.             if (position != 0)
  30.             {
  31.                 mask = Convert.ToInt64(maskAsString, 2);
  32.             }
  33.  
  34.             if (action == "flip")
  35.             {
  36.                 number = number ^ (1 << position);
  37.             }
  38.  
  39.             long rightBits = number & mask;
  40.  
  41.             if (action == "insert")
  42.             {
  43.                 number = number >> position;
  44.                 number = number << (position + 1);
  45.                 number = number | ((long)1 << position);
  46.                 number = number | rightBits;
  47.             }
  48.  
  49.             if (action == "remove")
  50.             {
  51.                 number = number >> (position + 1);
  52.                 number = number << position;
  53.                 number = (long)number | rightBits;
  54.             }
  55.         }
  56.     }
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement