// Based on Fluid_Sim // an IOCCC 2012 winner // by Yusuke Endoh #define G 1 // gravity #define P 4 // pressure #define V 8 // viscosity #include // .IOCCC Fluid- # #include //2012 _Sim!_ # #include //|||| ,____. 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; }