Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Automaty1D_2
- {
- class Program
- {
- private int[] ruleArray;
- // ReSharper disable once InconsistentNaming
- private int leftSideBC;
- // ReSharper disable once InconsistentNaming
- private int rightSideBC;
- private int[] numbersArray = {0, 0, 0, 1, 0, 0, 0 };
- private int[] nArray;
- static void Main(string[] args)
- {
- var program = new Program();
- program.Run();
- }
- private void Run()
- {
- Console.Write("ReguĊa (0 - 255): ");
- int ruleDec = Convert.ToInt32(Console.ReadLine());
- ConvertDecToBin(ruleDec);
- Console.Write("Liczba " + ruleDec + " zapisana binarnie: ");
- Array.ForEach(ruleArray, Console.Write);
- /*Console.Write("\nPodaj rozmiar tablicy: ");
- int numbersAmount = Convert.ToInt32(Console.ReadLine());
- numbersArray = new int[numbersAmount];*/
- Console.Write("Oraz liczbe krokow: ");
- int stepsAmount = Convert.ToInt32(Console.ReadLine());
- Console.Write("Lewy warunek brzegowy (0 albo 1): ");
- leftSideBC = Convert.ToInt32(Console.ReadLine());
- Console.Write("Prawy warunek brzegowy (0 albo 1): ");
- rightSideBC = Convert.ToInt32(Console.ReadLine());
- //FillArrayWithRndNumbers();
- ShowArray();
- PerformSteps(stepsAmount);
- Console.ReadKey();
- }
- private void ConvertDecToBin(int ruleDec)
- {
- var ruleInBin = Convert.ToString(ruleDec, 2);
- var padRuleInBin = ruleInBin.PadLeft(8, '0');
- var ruleInBinCharArray = padRuleInBin.ToCharArray();
- var charList = new List<char>(ruleInBinCharArray);
- ruleArray = charList.ConvertAll(Convert.ToInt32).ToArray();
- for (int i = 0; i < ruleArray.Length; i++)
- {
- ruleArray[i] -= 48;
- }
- }
- private void PerformSteps(int stepsAmount)
- {
- for (int i = 0; i < stepsAmount; i++)
- {
- CheckNumber();
- ShowArray();
- }
- }
- private void ShowArray()
- {
- foreach (var element in numbersArray)
- {
- Console.Write(element);
- }
- Console.Write("\n");
- }
- private void FillArrayWithRndNumbers()
- {
- Random rnd = new Random();
- for (int i = 0; i < numbersArray.Length; i++)
- {
- numbersArray[i] = rnd.Next(0, 2);
- }
- }
- private void CheckNumber()
- {
- var tmpNumbersArray = numbersArray;
- for (int i = 0; i < numbersArray.Length; i++)
- {
- if (i == 0) //first
- {
- tmpNumbersArray[i] = CheckConditionAndReturnNewValue(leftSideBC, numbersArray[i], numbersArray[i + 1]);
- }
- else if (i == numbersArray.Length - 1) //last
- {
- tmpNumbersArray[i] = CheckConditionAndReturnNewValue(numbersArray[i - 1], numbersArray[i], rightSideBC);
- }
- else
- {
- tmpNumbersArray[i] = CheckConditionAndReturnNewValue(numbersArray[i - 1], numbersArray[i], numbersArray[i + 1]);
- }
- }
- numbersArray = tmpNumbersArray;
- }
- private int CheckConditionAndReturnNewValue(int left, int middle, int right)
- {
- Console.WriteLine("{0},{1}, {2}", left, middle, right);
- if (middle == 1)
- {
- if (left == 1 && right == 1)
- middle = ruleArray[0];
- else if (left == 1 && right == 0)
- middle = ruleArray[1];
- else if (left == 0 && right == 1)
- middle = ruleArray[4];
- else if (left == 0 && right == 0)
- middle = ruleArray[5];
- }
- else if (middle == 0)
- {
- if (left == 1 && right == 1)
- middle = ruleArray[2];
- else if (left == 1 && right == 0)
- middle = ruleArray[3];
- else if (left == 0 && right == 1)
- middle = ruleArray[6];
- else if (left == 0 && right == 0)
- middle = ruleArray[7];
- }
- return middle;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment