#include <stdio.h>

int talalat = 0;
char tabla[8][8];

int eddigjo(int oszlop, int sor) {
  for(int i=0; i<oszlop; i++) {
    if(tabla[i][sor]==1)
      return 0;
  }
  int i=oszlop-1;
  int j=sor-1;
  while((i>=0) && (j>=0)) {
    if(tabla[i][j]==1)
      return 0;
    --i;
    --j;
  }
  i=oszlop-1;
  j=sor+1;
  while((i>=0) && (j<8)) {
    if(tabla[i][j]==1) {
      return 0;
    }
    --i;
    ++j;
  }
  return 1;
}

void print_tabla(void) {
  for(int i=0; i<8; i++) {
    for(int j=0; j<8; j++) {
      printf(tabla[j][i]==0?".":"*");
    }
    printf("\r");
  }
}

void egykiralyno(int oszlop) {
  if(oszlop==8) {
    bpoke(0x4048, 4);
    bpoke(0x4049, 2*12+1);
    print_tabla();
    printf("%d", ++talalat);
    return;
  }

  for(int i=0; i<8; i++) {
    tabla[oszlop][i] = 1;
    if(eddigjo(oszlop, i))
      egykiralyno(oszlop+1);
    tabla[oszlop][i] = 0;
  }
}

void main(void) {
  printf("%cNyolckiralyno problema megoldasai%c", 12, 6); // clear screen + overwrite characters

  for(int i=0;i<8;i++) {
    for(int j=0;j<8; j++) {
      tabla[i][j]=0;
    }
  }
  egykiralyno(0);
}
