mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-11-18 21:06:31 +00:00
40 lines
1.4 KiB
C
40 lines
1.4 KiB
C
// Based on Fluid_Sim
|
|
// an IOCCC 2012 winner
|
|
// by Yusuke Endoh
|
|
|
|
#define G 1 // gravity
|
|
#define P 4 // pressure
|
|
#define V 8 // viscosity
|
|
|
|
#include <stdio.h>// .IOCCC Fluid- #
|
|
#include <unistd.h> //2012 _Sim!_ #
|
|
#include <complex.h> //|||| ,____. IOCCC- #
|
|
double complex a[97687], *p, *q, *r = a, w = 0, d;
|
|
int x , y;
|
|
char b [6856] = "\x1b[2J" "\x1b" "[1;1H ", *o = b, *t;
|
|
|
|
int main(
|
|
) {
|
|
|
|
for (; 0 < (x = getc(stdin));)
|
|
w = x > 10 ? 32 < x ? 4[*r++ = w, r] = w + 1, *r = r[5] = x == 35, r += 9 : 0, w - I : (x = w + 2);;
|
|
for (;; puts(o), o = b + 4) {
|
|
for (p = a; p[2] = p[1] * 9, p < r; p += 5)
|
|
for (q = a; w = cabs(d = *p - *q) / 2 - 1, q < r; q += 5)
|
|
if (0 < (x = 1 - w))
|
|
p[2] += w * w;
|
|
for (p = a; p[3] = G, p < r; p += 5)
|
|
for (q = a; w = cabs(d = *p - *q) / 2 - 1, q < r; q += 5)
|
|
if (0 < (x = 1 - w))
|
|
p[3] += w * (d * (3 - p[2] - q[2]) * P + p[4] * V - q[4] * V) / p[2];
|
|
for (x = 011; 2012 - 1 > x++;)
|
|
b[x] = 0;
|
|
for (p = a; (t = b + 10 + (x = *p * I) + 80 * (y = *p / 2), *p += p[4] += p[3] / 10 * !p[1]), p < r; p += 5)
|
|
x = 0 <= x && x < 79 && 0 <= y && y < 23 ? 1[1[*t |= 8, t] |= 4, t += 80] = 1, *t |= 2 : 0;
|
|
for (x = 011; 2012 - 1 > x++;)
|
|
b[x] = " '`-.|//,\\" "|\\_" "\\/\x23\n"[x % 80 - 9 ? x[b] : 16];;
|
|
|
|
usleep(12321);
|
|
} return 0;
|
|
}
|