From 05ab74d323dc1eab971f7af48b12a39dc55d91f1 Mon Sep 17 00:00:00 2001
From: Marcela Ribeiro de Oliveira <mro15@inf.ufpr.br>
Date: Sun, 13 May 2018 20:37:56 -0300
Subject: [PATCH] mais uns filtros

---
 include/playunfair.h |  4 +++
 playunfair.cpp       | 72 ++++++++++++++++++++++++++++++++++++++------
 teste2.in            |  2 +-
 3 files changed, 68 insertions(+), 10 deletions(-)

diff --git a/include/playunfair.h b/include/playunfair.h
index e60f0e2..af0ea67 100644
--- a/include/playunfair.h
+++ b/include/playunfair.h
@@ -5,7 +5,11 @@
 int filter(std::string text);
 void parser(std::string &text);
 int isVowel(char c);
+int isF(char c);
 int filter1(std::string text);
 int filter2(std::string text);
 int filter3(std::string text);
 int filter4(std::string text);
+int filter5(std::string text);
+int filter7(std::string text);
+int filter8(std::string text);
diff --git a/playunfair.cpp b/playunfair.cpp
index 79fafae..08311ae 100644
--- a/playunfair.cpp
+++ b/playunfair.cpp
@@ -56,12 +56,13 @@ void parser(std::string &text){
 
 int filter(std::string text){
 	//TODO: if ( 4 primeiras letras sem vogal ||
-	//           3 char -('o') iguais seguidos ||
+	//           3 char -('o') -('e') -('a') iguais seguidos ||
 	//           5 consoantes ||
 	//           7 vogais ||
-	//           'q' + !'u' ||
-	//           ('c'|'d'|'f'|'h'|'k'|'p'|'q'|'w'|'y') + !(vogal|'r'|'h')
-	//
+	//           'q' + !'u' + !vogal ||
+	//           ('b'|'c'|'d'|'f'|'h'|'k'|'p'|'q'|'t'|'w'|'y') + !(vogal|'r'|'h'|'l') ||
+	//					 ('nh' + vogal || 'ch' + vogal) ||
+	//           ultima letras b, c, d (download), f, g, h, k, p (hip hop), q, v (tv), w (show), y
 	//          )
 	//         { elimina texto: muda pra proxima chave}
 	if(filter1(text) == REJECTED)
@@ -70,14 +71,20 @@ int filter(std::string text){
 		return REJECTED;
 	else if(filter3(text) == REJECTED)
 		return REJECTED;
+	else if(filter4(text) == REJECTED)
+		return REJECTED;
+	else if (filter5(text) == REJECTED)
+		return REJECTED;
+	else if (filter7(text) == REJECTED)
+		return REJECTED;
 	else
-		return filter4(text);
+		return filter8(text);
 }
 
 int isVowel(char c){
 	int result;
 	result = (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u');
-		return result;
+	return result;
 }
 
 int filter1(std::string text){
@@ -97,7 +104,7 @@ int filter2(std::string text){
 	for(i=0; i<text.size()-3; ++i){
 		char l = text[i];
 		int lim=3, cont=0;
-		if (( l=='o') || (l=='e'))
+		if (( l=='o') || (l=='e') || (l=='a'))
 			continue;
 		for(j=i+1; j<i+lim; ++j){
 			if(text[j]=='x'){
@@ -123,7 +130,7 @@ int filter3(std::string text){
 	size_t i, j;
 	int rej = ACCEPTED;
 	for(i=0; i<text.size()-5; ++i){
-		int lim = 5, cont = 0;
+		int lim = 4, cont = 0;
 		char l = text[i];
 		if(isVowel(l))
 			continue;
@@ -137,7 +144,7 @@ int filter3(std::string text){
 				break;
 			}
 		}
-		if(cont==4){
+		if(cont==3){
 			rej = REJECTED;
 			break;
 		}
@@ -169,3 +176,50 @@ int filter4(std::string text){
 	}
 	return rej;
 }
+
+int filter5(std::string text){
+	size_t i;
+	int rej = ACCEPTED;
+	for (i=0; i<text.size()-2; ++i){
+		if(text[i]=='q'){
+			if(text[i+1]!='u'){
+				rej = REJECTED;
+				break;
+			}else if(!isVowel(text[i+2])){
+				rej = REJECTED;
+				break;
+			}
+		}
+	}
+	return rej;
+}
+
+int filter7(std::string text){
+	size_t i;
+	int rej = ACCEPTED;
+	for (i=0; i<text.size()-2; ++i){
+		if((text[i]=='n' || text[i]=='c') && text[i+1]=='h'){
+			if(!isVowel(text[i+2])){
+				rej = REJECTED;
+				break;
+			}
+		}
+	}
+	return rej;
+}
+
+int isF(char c){
+	int result = 0;
+	result = (c == 'b' || c == 'c' || c == 'd' || c == 'f' || c == 'g' ||
+						c == 'h' || c == 'k' || c == 'p' || c == 'q' || c == 'v' ||
+						c == 't' || c == 'w' || c == 'y');
+	return result;
+}
+
+int filter8(std::string text){
+	//            ultima letras b, c, d (download), f, g, h, k, p (hip hop), q, v (tv), w (show), y
+	size_t i = text.size() -1;
+	if (isF(text[i]))
+		return REJECTED;
+	return ACCEPTED;
+}
diff --git a/teste2.in b/teste2.in
index cef38da..a8ad1b2 100644
--- a/teste2.in
+++ b/teste2.in
@@ -1,4 +1,4 @@
 oi
 meu
 nome
-eh marcela
+e marcela
-- 
GitLab