Advertisement
dimipan80

Exam July Morning 5. Bit Paths

Jul 27th, 2014
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.05 KB | None | 0 0
  1. using System;
  2. using System.Globalization;
  3. using System.Threading;
  4.  
  5. public class BitPaths
  6. {
  7.     public static void Main()
  8.     {
  9.         Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
  10.         checked
  11.         {
  12.             int countOfPaths = int.Parse(Console.ReadLine());
  13.  
  14.             int[] rowNums = new int[8];
  15.             for (int i = 0; i < countOfPaths; i++)
  16.             {
  17.                 string inputLine = Console.ReadLine();
  18.                 string[] numStr = inputLine.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
  19.                 int startBitPosition = 3 - int.Parse(numStr[0]);                
  20.                 int bitValue = (rowNums[0] >> startBitPosition) & 1;
  21.                 if (bitValue == 0)
  22.                 {
  23.                     rowNums[0] |= 1 << startBitPosition;
  24.                 }
  25.                 else
  26.                 {
  27.                     int bitMask = 1 << startBitPosition;
  28.                     rowNums[0] &= ~bitMask;
  29.                 }
  30.  
  31.                 int previousPos = startBitPosition;
  32.                 for (int row = 1; row < rowNums.Length; row++)
  33.                 {
  34.                     int number = rowNums[row];
  35.                     int bitPosition = previousPos + ((-1) * int.Parse(numStr[row]));
  36.                     bitValue = (number >> bitPosition) & 1;
  37.                     if (bitValue == 0)
  38.                     {
  39.                         rowNums[row] = number | (1 << bitPosition);
  40.                     }
  41.                     else
  42.                     {
  43.                         int bitMask = 1 << bitPosition;
  44.                         rowNums[row] = number & ~bitMask;
  45.                     }
  46.  
  47.                     previousPos = bitPosition;
  48.                 }
  49.             }
  50.  
  51.             int sumNums = 0;
  52.             foreach (int num in rowNums)
  53.             {
  54.                 sumNums += num;
  55.             }
  56.  
  57.             string binaryNum = Convert.ToString(sumNums, 2);
  58.  
  59.             Console.WriteLine(binaryNum);
  60.             Console.WriteLine("{0:X}", sumNums);
  61.         }
  62.     }
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement