Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.harrisonfreni.homework.Lesson8;
- import java.util.Scanner;
- /**
- * Created by hfreni on 3/2/15.
- */
- public class Problem19_PatternRecognition
- {
- public static void main(String[] args)
- {
- //1. Initialize and Print Values
- Scanner input = new Scanner(System.in);
- System.out.print("Enter the number of rows: ");
- int numberOfRows = input.nextInt();
- System.out.print("Enter the number of columns: ");
- int numberOfColumns = input.nextInt();
- int[][] board = new int[numberOfRows][numberOfColumns];
- System.out.println("Enter the array values: ");
- for (int i = 0; i < board.length; i++) {
- for (int j = 0; j < board[i].length; j++)
- board[i][j] = input.nextInt();
- }
- System.out.println(isConsecutiveFour(board));
- }
- public static boolean isConsecutiveFour(int[][] values) {
- // 1. Initialize and Check if All
- int numberOfRows = values.length;
- int numberOfColumns = values[0].length;
- for (int i = 0; i < numberOfRows; i++) {
- if (isConsecutiveFour(values[i])) {
- return true;
- }
- }
- for (int j = 0; j < numberOfColumns; j++) {
- int[] column = new int[numberOfRows];
- for (int i = 0; i < numberOfRows; i++) {
- column[i] = values[i][j];
- }
- if (isConsecutiveFour(column)) {
- return true;
- }
- }
- for (int i = 0; i < numberOfRows - 3; i++) {
- int numberOfElementsInDiagonal =
- Math.min(numberOfRows - i, numberOfColumns);
- int[] diagonal = new int[numberOfElementsInDiagonal];
- for (int k = 0; k < numberOfElementsInDiagonal; k++) {
- diagonal[k] = values[(k + i)][k];
- }
- if (isConsecutiveFour(diagonal)) {
- return true;
- }
- }
- for (int j = 1; j < numberOfColumns - 3; j++) {
- int numberOfElementsInDiagonal =
- Math.min(numberOfColumns - j, numberOfRows);
- int[] diagonal = new int[numberOfElementsInDiagonal];
- for (int k = 0; k < numberOfElementsInDiagonal; k++) {
- diagonal[k] = values[k][(k + j)];
- }
- if (isConsecutiveFour(diagonal)) {
- return true;
- }
- }
- for (int j = 3; j < numberOfColumns; j++) {
- int numberOfElementsInDiagonal =
- Math.min(j + 1, numberOfRows);
- int[] diagonal = new int[numberOfElementsInDiagonal];
- for (int k = 0; k < numberOfElementsInDiagonal; k++) {
- diagonal[k] = values[k][(j - k)];
- }
- if (isConsecutiveFour(diagonal)) {
- return true;
- }
- }
- for (int i = 1; i < numberOfRows - 3; i++) {
- int numberOfElementsInDiagonal =
- Math.min(numberOfRows - i, numberOfColumns);
- int[] diagonal = new int[numberOfElementsInDiagonal];
- for (int k = 0; k < numberOfElementsInDiagonal; k++) {
- diagonal[k] = values[(k + i)][(numberOfColumns - k - 1)];
- }
- if (isConsecutiveFour(diagonal)) {
- return true;
- }
- }
- return false;
- }
- public static boolean isConsecutiveFour(int[] values) {
- // 1. Check if Consecutive Through Loop
- for (int i = 0; i < values.length - 3; i++) {
- boolean isEqual = true;
- for (int j = i; j < i + 3; j++) {
- if (values[j] != values[(j + 1)]) {
- isEqual = false;
- break;
- }
- }
- if (isEqual) return true;
- }
- return false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment