Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- struct Xs {
- int x[32];
- int y[32];
- };
- void print(int n, struct Xs *pX)
- {
- int i, len;
- char *p, buf[4096];
- len = sprintf(buf, "x%d = ", n);
- p = buf + len;
- for (i = 0; i < 32; i++)
- {
- if (pX->y[i])
- {
- len = sprintf(p, "y%d ^ ", i);
- p += len;
- }
- }
- for (i = 0; i < 32; i++)
- {
- if (pX->x[i])
- {
- len = sprintf(p, "x%d ^ ", i);
- p += len;
- }
- }
- *(p-3) = '\0';
- puts(buf);
- }
- int main()
- {
- int i, j, k, flag;
- struct Xs X[32];
- memset(X, 0, sizeof(X));
- for (i = 0; i < 32; i++)
- {
- X[i].y[i] = 1;
- j = (i + 8) % 32;
- k = (i + 7) % 32;
- X[i].x[j] = 1;
- X[i].x[k] = 1;
- }
- while (1)
- {
- flag = 0;
- for (i = 0; i < 32; i++)
- {
- for (j = 0; j < 32; j++)
- {
- if (j == i)
- continue;
- if (X[i].x[j])
- {
- flag = 1;
- X[i].x[j] = 0;
- for (k = 0; k < 32; k++)
- {
- if (X[j].y[k])
- X[i].y[k] ^= X[j].y[k];
- }
- for (k = 0; k < 32; k++)
- {
- if (X[j].x[k])
- X[i].x[k] ^= X[j].x[k];
- }
- // print(i, &X[i]);
- }
- }
- }
- if (flag == 0)
- break;
- }
- printf("---\n");
- for (i = 0; i < 32; i++)
- print(i, &X[i]);
- printf("---\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement