diff --git a/Makefile b/Makefile index 19e58f7ffc6e9f735fc0c2044608c5dd943a7c03..7c05fe51a1b74208aa4d919384a1669fa8f09a20 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -CFLAGS = -std=c99 -O2 -W -Wall -g +CFLAGS = -std=c99 -O2 -W -Wall -g .PHONY: all clean @@ -11,7 +11,7 @@ test: main ./runTests.sh main: main.c libs/jogador.o libs/tabuleiro.o libs/grafo.o libs/vertice.o libs/filha.o libs/lista.o libs/no.o - $(CC) $(CFLAGS) -o $@ $^ + $(CC) $(CFLAGS) -o $@ $^ -lm clean: $(RM) *.o diff --git a/main.c b/main.c index 67528217503bdda091e2cc64e4e63993ddea065a..8d59c2b9591fc38e6e2616d8fd68c092533d8286 100644 --- a/main.c +++ b/main.c @@ -3,20 +3,40 @@ #include <stdio.h> #include <stdbool.h> #include <time.h> +#include <math.h> #include "libs/tabuleiro.h" #include "libs/no.h" #include "libs/lista.h" #include "libs/grafo.h" #include "libs/jogador.h" -int main() { +int main(int argc, char *argv[]) { Tblr t = criaTblr(); // Aloca o tabuleiro em um único array em vez de um "array de arrays" if(!leTblr(t)) { puts("Erro na leitura do tabuleiro"); return -1; } - + + // Se colocar UMA e APENAS UMA coisa depois do main + if(argc == 2) { + // Calcula e imprime o número mÃnimo e máximo de jogadas + if(t->x != t->y) { + puts("Apenas funciona para tabuleiros quadrados"); + } else { + // Max é 2n + sqrt(2k)n + k + double max = 2*(t->x) + (sqrt(2*t->cores))*(t->x) + t->cores; + printf("\tNúmero máximo de jogadas: %f\n", max); + // Min é válido para 2 <= k <= n² + // Min é sqrt(k - 1)n/2 - k/2 + if(t->cores >= 2 && t->cores <= (t->x*t->x)) { + double n2 = t->x/2; + double min = (sqrt(t->cores - 1)*t->x/2) - (t->cores/2); + printf("\tNúmero mÃnimo de jogadas: %f\n", min); + } + } + } + //TODO imprimindo o tabuleiro // imprimeTblr(t);