Commit d9771a17 authored by Vytor Calixto's avatar Vytor Calixto 👾

Add função para ver mínimo e máximo de jogadas

parent e6e8c8f2
Pipeline #9784 passed with stage
in 6 minutes and 8 seconds
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
......
......@@ -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);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment