#if 0
/*─────────────────────────────────────────────────────────────────╗
│ To the extent possible under law, Justine Tunney has waived      │
│ all copyright and related or neighboring rights to this file,    │
│ as it is written in the following disclaimers:                   │
│   • http://unlicense.org/                                        │
│   • http://creativecommons.org/publicdomain/zero/1.0/            │
╚─────────────────────────────────────────────────────────────────*/
#endif
#include "libc/log/gdb.h"
#include "libc/rand/rand.h"
#include "libc/stdio/stdio.h"

/**
 * @fileovierview gdbexec(s) demo
 * It basically launches an ephemeral `gdb -p $PID -ex "$s"`.
 */

int i;
int M[8][8] = {
    {772549, 921569, 407843, 352941, 717647, 78431, 666667, 627451},
    {321569, 419608, 227451, 396078, 223529, 882353, 952941, 937255},
    {15686, 545098, 31373, 7843, 15686, 298039, 976471, 352941},
    {70588, 858824, 415686, 184314, 25098, 5098, 141176, 47059},
    {141176, 541176, 658824, 227451, 490196, 301961, 937255, 678431},
    {188235, 823529, 858824, 87451, 545098, 611765, 188235, 576471},
    {580392, 913725, 996078, 592157, 7451, 176471, 862745, 784314},
    {278431, 945098, 843137, 439216, 878431, 529412, 262745, 43137},
};

int main(int argc, char *argv[]) {
  int y, x;
  for (i = 0;; ++i) {
    for (y = 0; y < 8; ++y) {
      for (x = 0; x < 8; ++x) {
        if (!(M[y][x] % 2)) {
          M[y][x] /= 2;
        } else {
          M[y][x] *= 3;
          M[y][x] += 1;
        }
      }
    }
    if (rand() % 10000 == 0) {
      gdbexec("print i");
      gdbexec("print M");
      break;
    }
  }
  printf("quitting\n");
  return 0;
}