Моделирование поведения жидкости в ASCII

Аватар Типичный программист
Отредактировано

3К открытий3К показов

Небольшая программка, моделирующая поведение жидкости в ASCII-режиме и терминале 80×25 символов.

Деобфусцированный код:

			#include <stdio.h>
#include <unistd.h>
#include <complex.h>

double complex a[97687], *p, *q, *r = a, w = 0, d;

int x, y;

char b[6856] = "\x1b[2J"  "\x1b"  "[1;1H     ";
char *o = b;
char *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;
}
		

Инструкции по сборке и запуску.

Следите за новыми постами
Следите за новыми постами по любимым темам
3К открытий3К показов