mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-02-05 06:31:25 +00:00
water: add initial code
This commit is contained in:
parent
aecf0f01c7
commit
d3aef17371
39
gr-sim/water/water.c
Normal file
39
gr-sim/water/water.c
Normal file
@ -0,0 +1,39 @@
|
||||
// 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;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user