Guest User

Game of Bits

a guest
Jul 8th, 2015
274
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.85 KB | None | 0 0
  1. using System;
  2.  
  3. class GameOfBits
  4. {
  5.     static void Main()
  6.     {
  7.         uint num = uint.Parse(Console.ReadLine());
  8.         uint newNum = num;
  9.         string binary = Convert.ToString(num, 2);
  10.         Console.WriteLine(binary + " num");
  11.         string command = Console.ReadLine();
  12.         while (command != "Game Over!")
  13.         {
  14.             if (command == "Even")
  15.             {
  16.                 num >>= 1;
  17.                 Console.WriteLine(Convert.ToString(num, 2).PadLeft(32, '0') + " num >>= 1");
  18.  
  19.             }
  20.             newNum = ExtractBits(newNum, num);
  21.             num = newNum;
  22.             command = Console.ReadLine();
  23.         }
  24.  
  25.         int count = 0;
  26.         while (newNum > 0)
  27.         {
  28.             uint bit = newNum & 1;
  29.             if (bit == 1)
  30.             {
  31.                 count++;
  32.             }
  33.             newNum >>= 1;
  34.         }
  35.  
  36.         Console.WriteLine("{0} -> {1}", num, count);
  37.     }
  38.  
  39.     private static uint ExtractBits(uint newNum, uint num)
  40.     {
  41.         newNum = num & 1;
  42.         Console.WriteLine(Convert.ToString(newNum, 2).PadLeft(32, '0') + " newNUm = num & 1");
  43.         num >>= 2;
  44.         Console.WriteLine(Convert.ToString(num, 2).PadLeft(32, '0') + " num >>= 2");
  45.         int count = 1;
  46.         while (num != 0)
  47.         {
  48.             uint mask = (num & 1);
  49.             Console.WriteLine(Convert.ToString(mask, 2).PadLeft(32, '0') + " mask = (num & 1)");
  50.             mask = mask << count;
  51.             Console.WriteLine(Convert.ToString(mask, 2).PadLeft(32, '0') + " mask = mask << count");
  52.             Console.WriteLine(Convert.ToString(newNum, 2).PadLeft(32, '0') + " newNum");
  53.             newNum |= mask;
  54.             Console.WriteLine(Convert.ToString(newNum, 2).PadLeft(32, '0') + " result of newNum |= mask");
  55.             num >>= 2;
  56.             count++;
  57.         }
  58.         return newNum;
  59.     }
  60. }
Advertisement
Add Comment
Please, Sign In to add comment