# (Pattern recognition: consecutive four equal numbers) Write the following function that tests whether a two-dimensional array has four consecutive numbers of the same value, either horizontally, vertically, or diagonally.

Tue Jan 12 2021 09:58:35 GMT+0000 (UTC)

Saved by @mahmoud hussein #c++

```#include <iostream>
#include<cmath>
#include<ctime>
#include<string>
#include <iomanip>
#include <fstream>

using namespace std;

bool  isConsecutiveFour(int values[][7]) {

// checking rows
for (int i = 0; i < 6; i++) {

int current = values[i][0];
int consecutiveCount = 0; // values[i][0] starts count

for (int j = 0; j < 7; j++) {

if (values[i][j] == current) {
consecutiveCount++;
if (consecutiveCount == 4) return true;
}
else {
current = values[i][j];
consecutiveCount = 1;
}
}
}
// check columns
for (int j = 0; j < 7; j++) {

int consecutiveCount = 0; // values[0][j] starts count
int current = values[0][j];

for (int i = 0; i < 6; i++) {

if (values[i][j] == current) {
consecutiveCount++;
if (consecutiveCount == 4) return true;
}
else {
current = values[i][j];
consecutiveCount = 1;
}

}
}

// check topLeft side: going upright
for (int i = 6 - 1; i > 0; i--) {
int y = i;
int x = 0;
int consecutive = 0;
int current = values[y][x];

while (y >= 0) {

if (values[y][x] == current) {
consecutive++;
if (consecutive == 4) return true;
}
else {
consecutive = 1;
current = values[y][x];
}
x++;
y--;
}
}

// check bottom right side: going upright
for (int j = 0; j < 7; j++) {
int y = 6 - 1;
int x = j;
int consecutive = 0;
int current = values[y][x];

while (x < 6 && y >= 0) {

if (values[y][x] == current) {
consecutive++;
if (consecutive == 4) return true;
}
else {
consecutive = 1;
current = values[y][x];
}
x++;
y--;
}

}

// check bottom left side going up-left
for (int j = 7 - 1; j > 0; j--) {

int x = j;
int y = 6 - 1;
int current = values[y][x];
int consecutiveCount = 0;

while (x >= 0 && y >= 0) {

if (values[y][x] == current) {
consecutiveCount++;
if (consecutiveCount == 4) return true;
}
else {
consecutiveCount = 1;
current = values[y][x];
}

x--;
y--;
}
}
// check bottom right side going up-left
for (int row = 1; row < 6; row++) {
int x = 7 - 1;
int y = row;
int consecutive = 0;
int current = values[y][x];

while (y >= 0) {

if (values[y][x] == current) {
consecutive++;
if (consecutive == 4) return true;
}
else {
consecutive = 1;
current = values[y][x];
}
x--;
y--;
}

}
return false;
}

// Driver code
int main()
{
int m[6][7];
for (int i = 0; i < 6; i++)
for (int j = 0; j < 7; j++)
cin >> m[i][j];
if (isConsecutiveFour(m) == true)
cout << "true";
else
cout << "false";

}
```
content_copyCOPY

http://cpp.sh/