p__d

Automty1D_Problem

Apr 16th, 2016
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.77 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Automaty1D_2
  8. {
  9.     class Program
  10.     {
  11.         private int[] ruleArray;
  12.         // ReSharper disable once InconsistentNaming
  13.         private int leftSideBC;
  14.         // ReSharper disable once InconsistentNaming
  15.         private int rightSideBC;
  16.  
  17.         private int[] numbersArray = {0, 0, 0, 1, 0, 0, 0 };
  18.         private int[] nArray;
  19.  
  20.         static void Main(string[] args)
  21.         {
  22.             var program = new Program();
  23.             program.Run();
  24.            
  25.         }
  26.        
  27.         private void Run()
  28.         {
  29.             Console.Write("ReguĊ‚a (0 - 255): ");
  30.             int ruleDec = Convert.ToInt32(Console.ReadLine());
  31.             ConvertDecToBin(ruleDec);
  32.  
  33.             Console.Write("Liczba " + ruleDec + " zapisana binarnie: ");
  34.             Array.ForEach(ruleArray, Console.Write);
  35.  
  36.             /*Console.Write("\nPodaj rozmiar tablicy: ");
  37.             int numbersAmount = Convert.ToInt32(Console.ReadLine());
  38.  
  39.             numbersArray = new int[numbersAmount];*/
  40.  
  41.             Console.Write("Oraz liczbe krokow: ");
  42.             int stepsAmount = Convert.ToInt32(Console.ReadLine());
  43.  
  44.             Console.Write("Lewy warunek brzegowy (0 albo 1): ");
  45.             leftSideBC = Convert.ToInt32(Console.ReadLine());
  46.  
  47.             Console.Write("Prawy warunek brzegowy (0 albo 1): ");
  48.             rightSideBC = Convert.ToInt32(Console.ReadLine());
  49.  
  50.             //FillArrayWithRndNumbers();
  51.             ShowArray();
  52.  
  53.             PerformSteps(stepsAmount);
  54.  
  55.             Console.ReadKey();
  56.         }
  57.  
  58.         private void ConvertDecToBin(int ruleDec)
  59.         {
  60.             var ruleInBin = Convert.ToString(ruleDec, 2);
  61.             var padRuleInBin = ruleInBin.PadLeft(8, '0');
  62.             var ruleInBinCharArray = padRuleInBin.ToCharArray();
  63.  
  64.             var charList = new List<char>(ruleInBinCharArray);
  65.  
  66.             ruleArray = charList.ConvertAll(Convert.ToInt32).ToArray();
  67.             for (int i = 0; i < ruleArray.Length; i++)
  68.             {
  69.                 ruleArray[i] -= 48;
  70.             }
  71.         }
  72.  
  73.         private void PerformSteps(int stepsAmount)
  74.         {
  75.             for (int i = 0; i < stepsAmount; i++)
  76.             {
  77.                 CheckNumber();
  78.                 ShowArray();
  79.             }          
  80.         }
  81.  
  82.         private void ShowArray()
  83.         {
  84.             foreach (var element in numbersArray)
  85.             {
  86.                 Console.Write(element);
  87.             }
  88.             Console.Write("\n");
  89.         }
  90.  
  91.         private void FillArrayWithRndNumbers()
  92.         {
  93.             Random rnd = new Random();
  94.  
  95.             for (int i = 0; i < numbersArray.Length; i++)
  96.             {
  97.                 numbersArray[i] = rnd.Next(0, 2);
  98.             }
  99.         }
  100.  
  101.         private void CheckNumber()
  102.         {
  103.             var tmpNumbersArray = numbersArray;
  104.            
  105.             for (int i = 0; i < numbersArray.Length; i++)
  106.             {
  107.                 if (i == 0) //first
  108.                 {
  109.                     tmpNumbersArray[i] = CheckConditionAndReturnNewValue(leftSideBC, numbersArray[i], numbersArray[i + 1]);
  110.                 }
  111.                 else if (i == numbersArray.Length - 1) //last
  112.                 {
  113.                     tmpNumbersArray[i] = CheckConditionAndReturnNewValue(numbersArray[i - 1], numbersArray[i], rightSideBC);
  114.                 }
  115.                 else
  116.                 {
  117.                     tmpNumbersArray[i] = CheckConditionAndReturnNewValue(numbersArray[i - 1], numbersArray[i], numbersArray[i + 1]);
  118.                 }
  119.             }
  120.             numbersArray = tmpNumbersArray;
  121.         }
  122.  
  123.         private int CheckConditionAndReturnNewValue(int left, int middle, int right)
  124.         {
  125.             Console.WriteLine("{0},{1}, {2}", left, middle, right);
  126.             if (middle == 1)
  127.             {
  128.                 if (left == 1 && right == 1)
  129.                     middle = ruleArray[0];
  130.                 else if (left == 1 && right == 0)
  131.                     middle = ruleArray[1];
  132.                 else if (left == 0 && right == 1)
  133.                     middle = ruleArray[4];
  134.                 else if (left == 0 && right == 0)
  135.                     middle = ruleArray[5];
  136.             }
  137.  
  138.             else if (middle == 0)
  139.             {
  140.                 if (left == 1 && right == 1)
  141.                     middle = ruleArray[2];
  142.                 else if (left == 1 && right == 0)
  143.                     middle = ruleArray[3];
  144.                 else if (left == 0 && right == 1)
  145.                     middle = ruleArray[6];
  146.                 else if (left == 0 && right == 0)
  147.                     middle = ruleArray[7];
  148.             }
  149.             return middle;
  150.         }
  151.     }
  152. }
Advertisement
Add Comment
Please, Sign In to add comment