Advertisement
fbinnzhivko

03. Byte Party

Mar 11th, 2016
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.59 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4.  
  5. class ByteParty
  6. {
  7.     static void Main()
  8.     {
  9.         int n = int.Parse(Console.ReadLine());
  10.  
  11.         char[,] numbersAsBinary = new char[n, 8];
  12.  
  13.         for (int i = 0; i < n; i++)
  14.         {
  15.             int num = int.Parse(Console.ReadLine());
  16.             string bits = Convert.ToString(num, 2).PadLeft(8, '0');
  17.             char[] line = bits.ToCharArray();
  18.  
  19.             for (int j = numbersAsBinary.GetLength(1) - 1; j >= 0; j--)
  20.             {
  21.                 numbersAsBinary[i, j] = bits[j];
  22.             }
  23.         }
  24.  
  25.         List<int> commands = new List<int>();
  26.         List<int> positions = new List<int>();
  27.  
  28.         while (true)
  29.         {
  30.             string[] line = Console.ReadLine().Split(new char[] {' '},StringSplitOptions.RemoveEmptyEntries);
  31.             if (line[0] == "party")
  32.             {
  33.                 break;
  34.             }
  35.             else
  36.             {
  37.                 commands.Add(int.Parse(line[0]));
  38.                 positions.Add(int.Parse(line[1]));
  39.             }
  40.         }
  41.  
  42.         for (int i = 0; i < commands.Count; i++)
  43.         {
  44.             int currentCommand = commands[i];
  45.             int pos = 7 - positions[i];
  46.             switch (currentCommand)
  47.             {
  48.                 case -1:
  49.                     for (int k = 0; k < n; k++)
  50.                     {
  51.                         if (numbersAsBinary[k, pos] == '0')
  52.                         {
  53.                             numbersAsBinary[k, pos] = '1';
  54.                         }
  55.                         else
  56.                         {
  57.                             numbersAsBinary[k, pos] = '0';
  58.                         }
  59.                     }
  60.                     break;
  61.                 case 0:
  62.                     for (int k = 0; k < n; k++)
  63.                     {
  64.                         numbersAsBinary[k, pos] = '0';
  65.                     }
  66.                     break;
  67.                 case 1:
  68.                     for (int k = 0; k < n; k++)
  69.                     {
  70.                         numbersAsBinary[k, pos] = '1';
  71.                     }
  72.                     break;
  73.             }
  74.         }
  75.  
  76.         for (int i = 0; i < numbersAsBinary.GetLength(0); i++)
  77.         {
  78.             StringBuilder currentNumber = new StringBuilder();
  79.  
  80.             for (int j = 0; j < numbersAsBinary.GetLength(1); j++)
  81.             {
  82.                 currentNumber.Append(numbersAsBinary[i, j]);
  83.             }
  84.  
  85.             int newNumber = Convert.ToInt32(currentNumber.ToString(), 2);
  86.             Console.WriteLine(newNumber);
  87.         }
  88.     }
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement