-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrotate.c
88 lines (88 loc) · 2.6 KB
/
rotate.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
void *memset(void *a, int b, int c);
void printf(char *msg);
void usleep(int time);
void putchar(char c);
int m(int a, int b) { return (a * b + 5000) / 10000; }
void a(int *c, int *s, int d, int t)
{
int k = m(*c, d) - m(*s, t);
int l = m(*s, d) + m(*c, t);
*c = k;
*s = l;
}
int main()
{
int z[1760];
char b[1760];
printf("\e[2J");
int q = 10000;
int r = 0;
int u = 10000;
int v = 0;
for (;;)
{
memset(b, 32, 1760);
memset(z, 0, 1760 * sizeof(int));
int l = 0;
int p = 10000;
for (int i = 0; i < 88; i = i + 1)
{
int w = 0;
int e = 10000;
for (int j = 0; j < 314; j = j + 1)
{
int f = p + 20000;
int g = 100000000 / (m(m(w, f), r) + m(l, q) + 50000);
int t = m(m(w, q), f) - m(l, r);
int x = 40 + 30 * m(g, m(m(e, u), f) - m(t, v)) / 10000;
int y = 12 + 15 * m(g, m(m(e, v), f) + m(t, u)) / 10000;
int o = x + 80 * y;
int N = 8 * (m(m(l, r) - m(m(w, q), p), u) - m(m(w, r), p) - m(l, q) - m(m(e, v), p)) / 10000;
if (22 > y)
{
if (y > 0)
{
if (x > 0)
{
if (80 > x)
{
if (g > z[o])
{
z[o] = g;
if (N >= 1)
{
b[o] = ".,-~:;=!*#$@"[N];
}
else
{
b[o] = ".,-~:;=!*#$@"[0];
}
}
}
}
}
}
a(&e, &w, 9998, 200);
}
a(&p, &l, 9974 + i % 2, 714);
}
printf("\e[H");
for (int k = 0; k < 1761; k = k + 1)
{
if (k % 80)
{
}
else
{
putchar(10);
}
putchar(b[k]);
}
a(&q, &r, 9992, 400);
a(&u, &v, 9998, 200);
printf("Author: @a1k0n. Rewritten by @hsjoihs so that it works without flo");
printf("ating types.\nNote that rounding errors gradually reduce the donut's size.\n");
usleep(50000);
}
return 0;
}