From d9771a17c2d9f9dc20d6cac95d3e89f601dc1839 Mon Sep 17 00:00:00 2001
From: Vytor Calixto <vytorcalixto@gmail.com>
Date: Tue, 23 May 2017 00:53:52 -0300
Subject: [PATCH] =?UTF-8?q?Add=20fun=C3=A7=C3=A3o=20para=20ver=20m=C3=ADni?=
 =?UTF-8?q?mo=20e=20m=C3=A1ximo=20de=20jogadas?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Makefile |  4 ++--
 main.c   | 24 ++++++++++++++++++++++--
 2 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/Makefile b/Makefile
index 19e58f7..7c05fe5 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 6752821..8d59c2b 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);
 
-- 
GitLab