mirror of
				https://github.com/deater/dos33fsprogs.git
				synced 2025-10-30 17:16:14 +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;
 | |
| }
 |