Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace LFSR
- {
- public partial class LFSR : Form
- {
- public LFSR()
- {
- InitializeComponent();
- }
- int k1, k2, k3; // lista przy lfsr - dlugosc
- int KK, K1, K2, K3; // watki wielkosc
- int xor1, xor2, xor3;
- int[] j1, j2, j3; // tab do losowych
- int[] h1, h2, h3;
- int ww1, ww2, ww3; // lista dla f(x) wyrazy wolne
- int liczba = 20000;
- int[] test;
- int[] tabw1, tabw2, tabw3; //tablice do trzymania wartosci wynikowych
- private void label7_Click(object sender, EventArgs e)
- {
- }
- private void label6_Click(object sender, EventArgs e)
- {
- }
- private void label8_Click(object sender, EventArgs e)
- {
- }
- private void label10_Click(object sender, EventArgs e)
- {
- }
- private void Form1_Load(object sender, EventArgs e)
- {
- }
- void lista()
- {
- k1 = (int)numericUpDown1.Value;
- k2 = (int)numericUpDown2.Value;
- k3 = (int)numericUpDown3.Value;
- ww1 = (int)numericUpDown4.Value;
- ww2 = (int)numericUpDown5.Value;
- ww3 = (int)numericUpDown6.Value;
- }
- void losowe(int numer, string nazwa)
- {
- if (numer > 0)
- {
- if (numer == k1 && numer > 0 && nazwa == "k1")
- {
- K1 = (2 * numer) - 1;
- textBox1.Clear();
- var rand = new Random();
- j1 = new int[k1];
- int p0 = 0;
- for (int x = 0; x < k1; x++)
- {
- int b;
- b = rand.Next(0, 2);
- if (b == 1) p0++;
- j1[x] = b;
- }
- h1 = new int[p0];
- for (int i = 0; i < j1.Length; i++)
- {
- textBox1.Text = textBox1.Text + j1[i];
- }
- int poz = 0;
- for (int z = 0; z < j1.Length; z++)
- {
- if (j1[z] == 1)
- {
- h1[poz] = z;
- poz++;
- }
- }
- int zmshift = 0;
- tabw1 = new int[K1];
- for (int p = 0; p < K1; p++)
- {
- przesun();
- pokaz();
- xor();
- }
- void pokaz()
- {
- textBox4.Clear();
- for (int d = 0; d < tabw1.Length; d++)
- {
- textBox4.Text = textBox4.Text + tabw1[d].ToString();
- }
- }
- void przesun()
- {
- int[] d0 = new int[j1.Length];
- d0[0] = xor1;
- for (int c = 0; c < j1.Length; c++)
- {
- d0[(c + 1) % d0.Length] = j1[c];
- }
- tabw1[zmshift] = j1[j1.Length - 1];
- zmshift++;
- j1 = d0;
- }
- void xor()
- {
- xor1 = 0;
- int[] temp = new int[poz];
- for (int a = 0; a < poz; a++)
- {
- temp[a] = j1[h1[a]];
- }
- xor1 = ww1 ^ temp[0];
- for (int a = 1; a < (temp.Length); a++)
- {
- xor1 = xor1 ^ temp[a];
- }
- }
- }
- else if (numer == k2 && numer > 0 && nazwa == "k2")
- {
- K2 = (2 * numer) - 1;
- var rand = new Random();
- j2 = new int[k2];
- textBox2.Clear();
- int pp2 = 0;
- for (int x = 0; x < k2; x++)
- {
- int b;
- b = rand.Next(0, 2);
- j2[x] = b;
- if (b == 1) pp2++;
- }
- h2 = new int[pp2];
- for (int i = 0; i < j2.Length; i++)
- {
- textBox2.Text = textBox2.Text + j2[i];
- }
- int pos2 = 0;
- for (int z = 0; z < j2.Length; z++)
- {
- if (j2[z] == 1)
- {
- h2[pos2] = z;
- pos2++;
- }
- }
- int s2 = 0;
- int liczba0 = 0;
- tabw2 = new int[K2];
- for (int p = 0; p < K2; p++)
- {
- przesun();
- pokaz();
- xor();
- }
- void pokaz()
- {
- textBox5.Clear();
- for (int d = 0; d < tabw2.Length; d++)
- {
- textBox5.Text = textBox5.Text + tabw2[d].ToString();
- }
- }
- void przesun()
- {
- int[] demo2 = new int[j2.Length];
- demo2[0] = xor2;
- for (int c = 0; c < j2.Length; c++)
- {
- demo2[(c + 1) % demo2.Length] = j2[c];
- }
- tabw2[s2] = j2[j2.Length - 1];
- s2++;
- j2 = demo2;
- }
- void xor()
- {
- xor2 = 0;
- int[] temp2 = new int[pos2];
- for (int a = 0; a < pos2; a++)
- {
- temp2[a] = j2[h2[a]];
- }
- xor2 = ww2 ^ temp2[0];
- for (int a = 1; a < (temp2.Length); a++)
- {
- xor2 = xor2 ^ temp2[a];
- }
- }
- }
- else if (numer == k3 && numer > 0 && nazwa == "k3")
- {
- K3 = (2 * numer) - 1;
- var rand = new Random();
- j3 = new int[k3];
- textBox3.Clear();
- int pp3 = 0;
- for (int x = 0; x < k3; x++)
- {
- int b;
- b = rand.Next(0, 2);
- j3[x] = b;
- if (b == 1) pp3++;
- }
- h3 = new int[pp3];
- for (int i = 0; i < j3.Length; i++)
- {
- textBox3.Text = textBox3.Text + j3[i];
- }
- int pos3 = 0;
- for (int z = 0; z < j3.Length; z++)
- {
- if (j3[z] == 1)
- {
- h3[pos3] = z;
- pos3++;
- }
- }
- int s3 = 0;
- int liczba0 = 0;
- tabw3 = new int[K3];
- for (int p = 0; p < K3; p++)
- {
- przesun();
- pokaz();
- xor();
- }
- void pokaz()
- {
- textBox6.Clear();
- for (int d = 0; d < tabw3.Length; d++)
- {
- textBox6.Text = textBox6.Text + tabw3[d].ToString();
- }
- }
- void przesun()
- {
- int[] demo3 = new int[j3.Length];
- demo3[0] = xor3;
- for (int c = 0; c < j3.Length; c++)
- {
- demo3[(c + 1) % demo3.Length] = j3[c];
- }
- tabw3[s3] = j3[j3.Length - 1];
- s3++;
- j3 = demo3;
- }
- void xor()
- {
- xor1 = 0;
- int[] temp3 = new int[pos3];
- for (int a = 0; a < pos3; a++)
- {
- temp3[a] = j3[h3[a]];
- }
- xor3 = ww3 ^ temp3[0];
- for (int a = 1; a < (temp3.Length); a++)
- {
- xor3 = xor3 ^ temp3[a];
- }
- }
- }
- }
- }
- void generowanie()
- {
- richTextBox1.Clear();
- test = new int[liczba];
- textBox1.Clear();
- var rand1 = new Random();
- int t1 = 0;
- int bit1 = 0;
- for (int x = 0; x < liczba; x++)
- {
- bit1 = rand1.Next(0, 2);
- if (bit1 == 1) t1++;
- test[x] = bit1;
- }
- foreach (var it in test)
- {
- richTextBox1.Text = richTextBox1.Text + it.ToString();
- }
- monobit0();
- podciagi1();
- }
- void geffegene() // GENERATOR GEFFE
- {
- richTextBox2.Clear();
- if (tabw1.Length > 0 && tabw2.Length > 0 && tabw3.Length > 0)
- {
- int x = tabw1.Length; int y = tabw2.Length; int z = tabw3.Length;
- int[] l1 = tabw1;
- int[] l2 = tabw2;
- int[] l3 = tabw3;
- int max = Math.Max(x, Math.Max(y, z));
- int[] geff = new int[max];
- int x1, x2, x3, xr; x1 = x2 = x3 = xr = 0;
- int p11, p12, p13; p11 = p12 = p13 = 0;
- int n1(int i1)
- {
- int n11 = i1;
- if (n11 == 0)
- {
- n11 = 1;
- }
- else if (n11 == 1)
- {
- n11 = 0;
- }
- return n11;
- }
- for (int t = 0; t < max; t++)
- {
- int t1 = 0;
- if (p11 < tabw1.Length)
- {
- x1 = tabw1[p11];
- p11++;
- }
- else
- {
- x1 = tabw1[0];
- p11 = 0;
- }
- if (p12 < tabw2.Length)
- {
- x2 = tabw2[p12];
- p12++;
- }
- else
- {
- x2 = tabw2[0];
- p12 = 0;
- }
- if (p13 < tabw3.Length)
- {
- x3 = tabw3[p13];
- p13++;
- }
- else
- {
- x3 = tabw3[0];
- p13 = 0;
- }
- t1 = n1(x2);
- xr = ((x1 | x2) ^ (t1 | x3));
- geff[t] = xr;
- }
- foreach (var inti in geff)
- {
- richTextBox2.Text = richTextBox2.Text + inti.ToString();
- }
- }
- }
- void startandgo()
- {
- richTextBox3.Clear();
- int[] stopG = new int[tabw1.Length];
- int l2 = 0; int l3 = 0; int xp = 0; int xr = 0; int wt1 = 0; int wt2 = 0;
- for (int u = 0; u < tabw1.Length; u++)
- {
- xp = tabw1[u];
- if (xp == 1)
- {
- l2++;
- if (l2 < tabw2.Length)
- {
- wt1 = tabw2[l2];
- }
- else
- {
- l2 = 0;
- wt1 = tabw2[0];
- }
- if (l3 < tabw3.Length)
- {
- wt2 = tabw3[l3];
- }
- else
- {
- l3 = 0;
- wt2 = tabw3[l3];
- }
- xr = wt1 ^ wt2;
- stopG[u] = xr;
- }
- else if (xp == 0)
- {
- l3++;
- if (l2 < tabw2.Length)
- {
- wt1 = tabw2[l2];
- }
- else
- {
- l2 = 0;
- wt1 = tabw2[0];
- }
- if (l3 < tabw3.Length)
- {
- wt2 = tabw3[l3];
- }
- else
- {
- l3 = 0;
- wt2 = tabw3[l3];
- }
- xr = wt1 ^ wt2;
- stopG[u] = xr;
- }
- }
- foreach (var item in stopG)
- {
- richTextBox3.Text = richTextBox3.Text + item.ToString();
- }
- }
- void shrinkinggene() // SHRINKING
- {
- richTextBox4.Clear();
- if (tabw1.Length > 0 && tabw2.Length > 0)
- {
- int x = tabw1.Length; int y = tabw2.Length;
- int[] l1 = tabw1;
- int[] l2 = tabw2;
- int[] shrink = new int[tabw1.Length];
- string shriS = "";
- int p11, p12; p11 = p12 = 0;
- int x1, x2, xr; x1 = x2 = xr = 0;
- for (int s = 0; s < x; s++)
- {
- x1 = tabw1[s];
- if (p11 < tabw2.Length)
- {
- x2 = tabw2[p11];
- p11++;
- }
- else
- {
- x2 = tabw2[0];
- p11 = 0;
- }
- if (x1 == 1)
- {
- shriS = shriS + x2.ToString();
- }
- }
- richTextBox4.Text = shriS;
- }
- }
- void monobit0()
- {
- int licznik = 0;
- foreach (var items in test)
- {
- if (items == 1)
- {
- licznik++;
- }
- }
- if ((licznik > 9725) && (licznik < 10275))
- {
- monobit.Text = "TEST ZALICZONY <-monobit->";
- monobit.BackColor = Color.Green;
- }
- else
- {
- monobit.Text = "TEST NIEZALICZONY <-monobit->";
- monobit.BackColor = Color.Red;
- }
- }
- void podciagi1()
- {
- int[] podc = new int[769]; int podc1 = 0;
- int liczzera = 0; int liczjedynki = 0;
- int tymcz = 0;
- int[] tymcz0 = new int[26];int[] last = new int[6];
- for(int e=1;e<test.Length+1;e++)
- {
- if(test.Length-e>27)
- {
- if (!(e % 26 == 0))
- {
- tymcz0[tymcz] = test[e - 1];
- tymcz++;
- }
- else if (e % 26 == 0 && e != 0)
- {
- for (int g = 0; g < 26; g++)
- {
- if (tymcz0[g] == 1) liczjedynki++;
- else liczzera++;
- tymcz = 0;
- }
- if (liczzera == 26 || liczjedynki == 26)
- {
- if(podc1!=769)
- {
- podc[podc1] = 1; podc1++;
- }
- }
- else
- {
- if(podc1!=769)
- {
- podc[podc1] = 0; podc1++;
- }
- }
- }
- }
- }
- if(podc.Contains(1))
- {
- podciagi.Text = "TEST NIE ZALICZONY <-podciagi->";
- podciagi.BackColor = Color.Red;
- }
- else
- {
- podciagi.Text = "TEST ZALICZONY <-podciagi->";
- podciagi.BackColor = Color.Green;
- }
- }
- private void button7_Click(object sender, EventArgs e)
- {
- generowanie();
- }
- private void stopandgo_Click(object sender, EventArgs e)
- {
- startandgo();
- }
- private void shrinking_Click(object sender, EventArgs e)
- {
- shrinkinggene();
- }
- private void geffe_Click(object sender, EventArgs e)
- {
- geffegene();
- }
- private void button1_Click(object sender, EventArgs e)
- {
- lista();
- losowe(k1,"k1");
- }
- private void button4_Click(object sender, EventArgs e)
- {
- lista();
- losowe(k2,"k2");
- }
- private void button6_Click(object sender, EventArgs e)
- {
- lista();
- losowe(k3,"k3");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement