From fe3eb30a9ccc1552c4b739c372f0573a33176140 Mon Sep 17 00:00:00 2001 From: Caleb Fontenot Date: Tue, 24 Jan 2023 20:08:55 -0600 Subject: [PATCH] Mason Help --- .gitignore | 1 + ASDV-Help/Mason/pom.xml | 14 + .../java/com/calebfontenot/mason/Mason.java | 211 +++++++++++++ .../java/com/calebfontenot/mason/Mason_2.java | 143 +++++++++ .../MP1_CalebFontenot/.~lock.mp1-s23-1.docx# | 1 - .../Lab3DArraysSort_CalebFontenot.html | 179 +++++++++++ .../MP1_CalebFontenot/MP1_CalebFontenot.html | 296 ++++++++++++++++++ .../mp1_calebfontenot/MP1_CalebFontenot.java | 55 +++- Semester 2/ZIPs/MP1_CalebFontenot.zip | Bin 0 -> 933808 bytes 9 files changed, 890 insertions(+), 10 deletions(-) create mode 100644 ASDV-Help/Mason/pom.xml create mode 100644 ASDV-Help/Mason/src/main/java/com/calebfontenot/mason/Mason.java create mode 100644 ASDV-Help/Mason/src/main/java/com/calebfontenot/mason/Mason_2.java delete mode 100644 Semester 2/Assignments/MP1_CalebFontenot/.~lock.mp1-s23-1.docx# create mode 100644 Semester 2/Assignments/MP1_CalebFontenot/Lab3DArraysSort_CalebFontenot.html create mode 100644 Semester 2/Assignments/MP1_CalebFontenot/MP1_CalebFontenot.html create mode 100644 Semester 2/ZIPs/MP1_CalebFontenot.zip diff --git a/.gitignore b/.gitignore index 25e95cc..ca7cd30 100644 --- a/.gitignore +++ b/.gitignore @@ -100,3 +100,4 @@ /Semester 2/Assignments/MP1_CalebFontenot/target/ /Semester 2/Assignments/MP2_CalebFontenot/target/ /Semester 2/Assignments/lab2_CalebFontenot/target/ +/ASDV-Help/Mason/target/ diff --git a/ASDV-Help/Mason/pom.xml b/ASDV-Help/Mason/pom.xml new file mode 100644 index 0000000..c120f59 --- /dev/null +++ b/ASDV-Help/Mason/pom.xml @@ -0,0 +1,14 @@ + + + 4.0.0 + com.calebfontenot + Mason + 1.0-SNAPSHOT + jar + + UTF-8 + 17 + 17 + com.calebfontenot.mason.Mason + + \ No newline at end of file diff --git a/ASDV-Help/Mason/src/main/java/com/calebfontenot/mason/Mason.java b/ASDV-Help/Mason/src/main/java/com/calebfontenot/mason/Mason.java new file mode 100644 index 0000000..ffc774a --- /dev/null +++ b/ASDV-Help/Mason/src/main/java/com/calebfontenot/mason/Mason.java @@ -0,0 +1,211 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + */ + +package com.calebfontenot.mason; + +/** + * + * @author caleb + */ +public class Mason { + + public static void sortNames(char[][] names) + { + + for (int i = 0; i < names.length - 1; ++i) + { + + for (int j = i + 1; j < names.length; ++j) + { + //>compare character by character names[i] to names[j] + for (int index1 = 0, index2 = 0;//index1 to traverse names[i] + //index2 to traverse names[j] + index1 < names[i].length + && index2 < names[j].length; + ++index1, ++index2) + { + + //>>SWAP name[i] with names[j] + //if names[i] > names[j] OR the name at i has more chars after the tie + // ( i.e. if "bbbc" at names[i] and "bbb" at names[j] at j then we swap them ) + if (names[i][index1] > names[j][index2] + || (index2 == names[j].length - 1 && index1 < names[i].length - 1)) + { + //>> copy to tempI the names[i] + char[] temp = names[i]; + names[i] = names[j]; + names[j] = temp; + break;///you must break , no need to continue comparing characters at index1, index2 + } + //>>if the characters are equal, continue + if (names[i][index1] == names[j][index2]) + { + continue;//do nothing, but continue + } else //name at i is smaller than name + { + break; + } + } + } + } + + } + + public static void sortNames(char[][][] tables) + { + for (int numTable = 0; numTable < tables.length; ++numTable) + { + for (int i = 0; i < tables[numTable].length - 1; ++i) + { + + for (int j = i + 1; j < tables[numTable].length; ++j) + { + //>compare character by character names[i] to names[j] + for (int index1 = 0, index2 = 0;//index1 to traverse names[i] + //index2 to traverse names[j] + index1 < tables[i][i].length + && index2 < tables[j][i].length; + ++index1, ++index2) + { + + //>>SWAP name[i] with names[j] + //if names[i] > names[j] OR the name at i has more chars after the tie + // ( i.e. if "bbbc" at names[i] and "bbb" at names[j] at j then we swap them ) + if (tables[numTable][i][index1] > tables[numTable][j][index2] + || (index2 == tables[numTable][j].length - 1 && index1 < tables[numTable][i].length - 1)) + { + //>> copy to tempI the names[i] + char[][] temp = tables[i]; + tables[i] = tables[j]; + tables[j] = temp; + break;///you must break , no need to continue comparing characters at index1, index2 + } + //>>if the characters are equal, continue + if (tables[i][index1] == tables[j][index2]) + { + continue;//do nothing, but continue + } else //name at i is smaller than name + { + break; + } + } + } + } + } + } + + /** + * Prints row by row + * + * @param ar + */ + public static void printRowMajorOrder(char[][] ar) + { + for (int i = 0; i < ar.length; ++i) + { + for (int j = 0; j < ar[i].length; ++j) + { + System.out.print(ar[i][j]); + } + System.out.print(" "); + + } + } + + public static void printRowMajorOrder(char[][][] tables) + { + + for (int numTable = 0; numTable < tables.length; ++numTable) + { + for (int i = 0; i < tables[numTable].length; ++i) + { + for (int j = 0; j < tables[numTable][i].length; ++j) + { + System.out.print(tables[numTable][i][j]); + + } + System.out.print(" "); + + } + System.out.println(""); + } + + } + + public static void main(String[] args) + { + char[][] names = + { + { + 'j', 'o', 'h', 'n' + }, + { + 'a', 'n' + }, + { + 'b', 'y', 'r', 'o', 'n' + }, + { + 'b', 'y', 'r', 'o', 'n', 'i' + }, + { + 'a', 'a', 'o', 'n' + }, + { + 'b', 'b', 'b', 'b' + }, + { + 'b', 'b', 'b', 'c' + }, + { + 'b', 'b', 'b' + } + }; + + char[][][] tables = + { + { + { + 'j', 'o', 'h', 'n' + }, + { + 'a', 'n' + }, + { + 'b', 'y', 'r', 'o', 'n' + }, + { + 'b', 'y', 'r', 'o', 'n', 'i' + } + }, + { + { + 'a', 'a', 'o', 'n' + }, + { + 'b', 'b', 'b', 'b' + }, + { + 'b', 'b', 'b', 'c' + }, + { + 'b', 'b', 'b' + } + } + }; +// System.out.println("ORIGINAL LIST"); +// printRowMajorOrder(names); +// +// System.out.println("\n\nSORTED LIST"); +// sortNames(names); +// printRowMajorOrder(names); + + System.out.println("ORIGINAL LIST"); + printRowMajorOrder(tables); + System.out.println("\n\nSORTED LIST"); + sortNames(tables); + printRowMajorOrder(tables); + } + +} diff --git a/ASDV-Help/Mason/src/main/java/com/calebfontenot/mason/Mason_2.java b/ASDV-Help/Mason/src/main/java/com/calebfontenot/mason/Mason_2.java new file mode 100644 index 0000000..7fb3c37 --- /dev/null +++ b/ASDV-Help/Mason/src/main/java/com/calebfontenot/mason/Mason_2.java @@ -0,0 +1,143 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package com.calebfontenot.mason; + +/** + * + * @author caleb + */ +public class Mason_2 { + + public static int maxNumberOfColumnsInJagged2dArray(char[][] ar) { + int maxNumberOfColumns = 0; + for (int row = 0; row < ar.length; ++row) { + if (ar[row].length > maxNumberOfColumns) { + maxNumberOfColumns = ar[row].length; + } + } + + return maxNumberOfColumns; + } + + public static void printColumnMajorOrder(char[][] ar) { + int row = 0; + int column = 0; + int max = maxNumberOfColumnsInJagged2dArray(ar); + for (column = 0; column < max; ++column) { + + for (row = 0; row < ar.length; ++row) { + if (column < ar[row].length) { + System.out.print(ar[row][column] + " "); + } + } + System.out.println(""); + } + } + + public static void sortNames(char[][][] names) { + for (int numTable = 0; numTable < names.length; ++numTable) { + for (int i = 0; i < names[numTable].length - 1; ++i) { + + for (int j = i + 1; j < names[numTable].length; ++j) { + //>compare character by character names[i] to names[j] + for (int index1 = 0, index2 = 0;//index1 to traverse names[i] + //index2 to traverse names[j] + index1 < names[numTable][i].length + && index2 < names[numTable][j].length; + ++index1, ++index2) { + + //>>SWAP name[i] with names[j] + //if names[i] > names[j] OR the name at i has more chars after the tie + // ( i.e. if "bbbc" at names[i] and "bbb" at names[j] at j then we swap them ) + if (names[numTable][i][index1] > names[numTable][j][index2] + || (index2 == names[numTable][j].length - 1 && index1 < names[numTable][i].length - 1)) { + //>> copy to tempI the names[i] + char[] temp = names[numTable][i]; + names[numTable][i] = names[numTable][j]; + names[numTable][j] = temp; + break;///you must break , no need to continue comparing characters at index1, index2 + } + //>>if the characters are equal, continue + if (names[numTable][i][index1] == names[numTable][j][index2]) { + continue;//do nothing, but continue + } else //name at i is smaller than name + { + break; + } + } + } + } + } + } + + /** + * Prints row by row + * + * @param ar + */ + public static void printRowMajorOrder(char[][][] array) { + for (char[][] i : array) { + System.out.println("---------------------------------"); + printRowMajorOrder(i); + } + } + + public static void printRowMajorOrder(char[][] ar) { + for (int i = 0; i < ar.length; ++i) { + for (int j = 0; j < ar[i].length; ++j) { + System.out.print(ar[i][j]); + } + System.out.print(" "); + + } + System.out.println(); + } + + public static void main(String[] args) { + char[][] names + = { + {'j', 'o', 'h', 'n'}, {'a', 'n'}, {'b', 'y', 'r', 'o', 'n'}, + {'b', 'y', 'r', 'o', 'n', 'i'}, {'a', 'a', 'o', 'n'}, + {'b', 'b', 'b', 'b'}, {'b', 'b', 'b', 'c'}, {'b', 'b', 'b'} + }; + char[][][] tables + = { + { + { + 'j', 'o', 'h', 'n' + }, + { + 'a', 'n' + }, + { + 'b', 'y', 'r', 'o', 'n' + }, + { + 'b', 'y', 'r', 'o', 'n', 'i' + } + }, + { + { + 'a', 'a', 'o', 'n' + }, + { + 'b', 'b', 'b', 'b' + }, + { + 'b', 'b', 'b', 'c' + }, + { + 'b', 'b', 'b' + } + } + }; + System.out.println("ORIGINAL LIST"); + printRowMajorOrder(tables); + + System.out.println("\n\nSORTED LIST"); + sortNames(tables); + printRowMajorOrder(tables); + } +} diff --git a/Semester 2/Assignments/MP1_CalebFontenot/.~lock.mp1-s23-1.docx# b/Semester 2/Assignments/MP1_CalebFontenot/.~lock.mp1-s23-1.docx# deleted file mode 100644 index df1e365..0000000 --- a/Semester 2/Assignments/MP1_CalebFontenot/.~lock.mp1-s23-1.docx# +++ /dev/null @@ -1 +0,0 @@ -,caleb,caleb-ryzen-archlinux,14.01.2023 14:36,file:///home/caleb/.config/libreoffice/4; \ No newline at end of file diff --git a/Semester 2/Assignments/MP1_CalebFontenot/Lab3DArraysSort_CalebFontenot.html b/Semester 2/Assignments/MP1_CalebFontenot/Lab3DArraysSort_CalebFontenot.html new file mode 100644 index 0000000..eb030c0 --- /dev/null +++ b/Semester 2/Assignments/MP1_CalebFontenot/Lab3DArraysSort_CalebFontenot.html @@ -0,0 +1,179 @@ + + + +Lab3DArraysSort_CalebFontenot.java + + + + +
/home/caleb/ASDV-Java/Semester 2/Assignments/MP1_CalebFontenot/src/main/java/com/calebfontenot/mp1_calebfontenot/Lab3DArraysSort_CalebFontenot.java
+
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ */
+package com.calebfontenot.mp1_calebfontenot;
+
+/**
+ *
+ * @author caleb
+ */
+public class Lab3DArraysSort_CalebFontenot {
+
+    public static int maxNumberOfColumnsInJagged2dArray(char[][] ar) {
+        int maxNumberOfColumns = 0;
+        for (int row = 0; row < ar.length; ++row) {
+            if (ar[row].length > maxNumberOfColumns) {
+                maxNumberOfColumns = ar[row].length;
+            }
+        }
+
+        return maxNumberOfColumns;
+    }
+
+    public static void printColumnMajorOrder(char[][] ar) {
+        int row = 0;
+        int column = 0;
+        int max = maxNumberOfColumnsInJagged2dArray(ar);
+        for (column = 0; column < max; ++column) {
+            for (row = 0; row < ar.length; ++row) {
+                if (column < ar[row].length) {
+                    System.out.print(ar[row][column] + " ");
+                }
+            }
+            System.out.println("");
+        }
+    }
+
+    /**
+     * Prints row by row
+     *
+     * @param ar
+     */
+    public static void printRowMajorOrder(char[][][] array) {
+        for (char[][] i: array) {
+            System.out.println("---------------------------------");
+            printRowMajorOrder(i);
+        }
+    }
+    public static void printRowMajorOrder(char[][] ar)//normal
+    {
+        for (int x = 0; x < ar.length; ++x) {
+            for (int y = 0; y < ar[x].length; ++y) {
+                System.out.print(ar[x][y] + "");
+            }
+            System.out.println();
+        }
+
+    }
+
+    public static String returnRowMajorOrder(char[] ar)//normal
+    {
+        String returnString = "";
+        for (int x = 0; x < ar.length; ++x) {
+            returnString += ar[x];
+        }
+        return returnString;
+    }
+
+    /**
+     * Sorts the methods in ascending order using Selection Sort
+     *
+     * @param names the names to be sorted
+     */
+    public static void sortNames(char[][][] names) {
+        for (int array = 0; array < names.length; ++array) {
+            System.out.println("times looped: " + array);
+            for (int i = 0; i < names[array].length - 1; ++i) {
+                for (int j = i + 1; j < names[array].length; ++j) {
+                    char compChar1 = names[array][i][0], compChar2 = names[array][j][0];
+                    // Reoder entire row
+                    for (int rowIterate = 1; rowIterate < maxNumberOfColumnsInJagged2dArray(names[array]); ++rowIterate) {
+                        if (Character.toLowerCase(compChar1) == Character.toLowerCase(compChar2)) {
+                            try {
+                                compChar1 = names[array][i][rowIterate];
+                                compChar2 = names[array][j][rowIterate];
+                            } catch (Exception ex) {
+                                // If it's failed, the index has gone out of range.
+                                // Check the length of the arrays and swap the larger one with the smaller one.
+                                if (names[array][i].length > names[array][j].length) {
+                                    System.out.println(names[array][i].length + " " + names[array][j].length);
+                                    System.out.println("Swapping " + returnRowMajorOrder(names[array][i]) + " with " + returnRowMajorOrder(names[array][j]));
+                                    char[] temp = names[array][i];
+                                    names[array][i] = names[array][j];
+                                    names[array][j] = temp;
+                                }
+                                break;
+                            }
+
+                        }
+                        if (Character.toLowerCase(compChar1) > Character.toLowerCase(compChar2)) {
+                            System.out.println("Swapping " + returnRowMajorOrder(names[array][i]) + " with " + returnRowMajorOrder(names[array][j]));
+                            char[] temp = names[array][i];
+                            names[array][i] = names[array][j];
+                            names[array][j] = temp;
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    public static void main(String[] args) {
+        /*
+char[][] names = {
+            {'j', 'o', 'h', 'n'},
+            {'a', 'n'},
+            {'b', 'y', 'r', 'o', 'n'},};
+         */
+        ///*
+        char[][][] names = {
+            {
+                {'j', 'o', 'h', 'n'},
+                {'a', 'n'},
+                {'b', 'y', 'r', 'o', 'n'},
+                {'b', 'y', 'r', 'o', 'n', 'i'},
+                {'a', 'a', 'o', 'n'},
+                {'b', 'b', 'b', 'b'},
+                {'b', 'b', 'b', 'c'},
+                {'b', 'b', 'b'}
+            },
+            {
+                {'L', 'i', 's', 's', 'e', 't'},
+                {'E', 't', 'h', 'a', 'n'},
+                {'C', 'a', 'l', 'e', 'b'},
+                {'L', 'u', 'l', 'y'},
+                {'C', 'h', 'a', 'n', 'c', 'e'}
+            }
+        };
+//*/
+        //printColumnMajorOrder(names);
+        printRowMajorOrder(names);
+        System.out.println();
+        sortNames(names);
+        System.out.println();
+        printRowMajorOrder(names);
+        //printColumnMajorOrder(names);
+
+    }
+
+}
+
+
+ diff --git a/Semester 2/Assignments/MP1_CalebFontenot/MP1_CalebFontenot.html b/Semester 2/Assignments/MP1_CalebFontenot/MP1_CalebFontenot.html new file mode 100644 index 0000000..04469f1 --- /dev/null +++ b/Semester 2/Assignments/MP1_CalebFontenot/MP1_CalebFontenot.html @@ -0,0 +1,296 @@ + + + +MP1_CalebFontenot.java + + + + +
/home/caleb/ASDV-Java/Semester 2/Assignments/MP1_CalebFontenot/src/main/java/com/calebfontenot/mp1_calebfontenot/MP1_CalebFontenot.java
+
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ */
+package com.calebfontenot.mp1_calebfontenot;
+
+import java.util.Scanner;
+
+/**
+ *
+ * @author caleb
+ */
+public class MP1_CalebFontenot {
+
+    public static int[][] inputArray() {
+        int m, n, i, j;
+        // Create scanner
+        Scanner input = new Scanner(System.in);
+        System.out.print("Enter the number of rows: ");
+        //taking row as input  
+        m = input.nextInt();
+        System.out.print("Enter the number of columns: ");
+        //taking column as input  
+        n = input.nextInt();
+        // Declaring the two-dimensional matrix   
+        int returnArray[][] = new int[m][n];
+        // Read the matrix values   
+        System.out.println("Enter the elements of the array: ");
+        //loop for row  
+        for (i = 0; i < m; i++) //inner for loop for column  
+        {
+            for (j = 0; j < n; j++) {
+                returnArray[i][j] = input.nextInt();
+            }
+        }
+        //accessing array elements   
+        System.out.println("Elements of the array are: ");
+        for (i = 0; i < m; i++) {
+            for (j = 0; j < n; j++) {
+                return returnArray;
+            }
+        }
+        return null;
+    }
+
+    public static boolean isConsecutiveFour(int[] values) {
+        for (int i = 0; i < values.length - 4; ++i) {
+            if (values[i] == values[i + 1]
+                    && values[i + 1] == values[i + 2]
+                    && values[i + 2] == values[i + 3]) {
+                return true;
+            } else {
+                return false;
+            }
+        }
+        return false;
+    }
+
+    public static void main(String[] args) { //2965
+        int[][] horizontalTestArray = { // Horizontal
+            {0, 1, 0, 3, 1, 6, 1},
+            {0, 1, 6, 8, 6, 0, 1},
+            {5, 6, 2, 1, 8, 2, 9},
+            {6, 5, 6, 1, 1, 9, 1},
+            {1, 3, 6, 1, 4, 0, 7},
+            {3, 3, 3, 3, 4, 0, 7}
+        };
+
+        int[][] verticalTestArray = { // Vertical
+            {0, 1, 0, 3, 1, 6, 1},
+            {0, 1, 6, 8, 6, 0, 1},
+            {5, 5, 2, 1, 8, 2, 9},
+            {6, 5, 6, 1, 1, 9, 1},
+            {1, 5, 6, 1, 4, 0, 7},
+            {3, 5, 3, 3, 4, 0, 7}
+        };
+        int[][] diagonalTestArray1 = { // Diagonal 1
+            {0, 1, 0, 3, 1, 6, 1},
+            {0, 1, 6, 8, 6, 0, 1},
+            {9, 6, 2, 1, 8, 2, 9},
+            {6, 9, 6, 1, 1, 9, 1},
+            {1, 3, 9, 1, 4, 0, 7},
+            {3, 3, 3, 9, 4, 0, 7}
+        };
+        int[][] diagonalTestArray2 = { // Diagonal 2
+            {0, 1, 0, 3, 1, 6, 1},
+            {0, 1, 6, 8, 6, 0, 1},
+            {9, 6, 2, 1, 8, 2, 9},
+            {6, 9, 6, 1, 1, 9, 1},
+            {1, 3, 9, 1, 4, 0, 7},
+            {3, 3, 3, 9, 4, 0, 7}
+        };
+
+        // Create scanner
+        Scanner input = new Scanner(System.in);
+        int userInput;
+        do {
+            System.out.println("Do you want to enter an array, or use a predefined one?");
+            System.out.println("1. Use predefined array.");
+            System.out.println("2. Enter a new array.");
+            System.out.println("-1. quit and exit program");
+            System.out.print("Input: ");
+            userInput = input.nextInt();
+            if (userInput == 1) {
+                System.out.println("Selected \"Use predefined array\"");
+                System.out.println("Printing arrays...");
+                System.out.println("1. horizontalTestArray");
+                printArray(horizontalTestArray);
+                System.out.println("2. verticalTestArray");
+                printArray(verticalTestArray);
+                System.out.println("3. diagonalTestArray1");
+                printArray(diagonalTestArray1);
+                System.out.println("4. diagonalTestArray2");
+                printArray(diagonalTestArray2);
+                System.out.print("Input: ");
+                userInput = input.nextInt();
+                if (userInput == 1) {
+                    if (isConsecutiveFour(horizontalTestArray)) {
+                        System.out.println("Testing method returns true");
+                    } else {
+                        System.out.println("Testing method returns false");
+                    }
+                }
+                if (userInput == 2) {
+                    if (isConsecutiveFour(verticalTestArray)) {
+                        System.out.println("Testing method returns true");
+                    } else {
+                        System.out.println("Testing method returns false");
+                    }
+                }
+                if (userInput == 3) {
+                    if (isConsecutiveFour(diagonalTestArray1)) {
+                        System.out.println("Testing method returns true");
+                    } else {
+                        System.out.println("Testing method returns false");
+                    }
+                }
+                if (userInput == 4) {
+                    if (isConsecutiveFour(diagonalTestArray2)) {
+                        System.out.println("Testing method returns true");
+                    } else {
+                        System.out.println("Testing method returns false");
+                    }
+                }
+                userInput = 0;
+            }
+            if (userInput == 2) {
+                System.out.println("Selected \"Enter new array\"");
+                int[][] newArray = inputArray();
+                if (isConsecutiveFour(newArray)) {
+                    System.out.println("Testing method returns true");
+                } else {
+                    System.out.println("Testing method returns false");
+                }
+            }
+        } while (userInput != -1);
+        System.exit(0);
+        //printArray(intArray1);
+        //System.out.println(isConsecutiveFour(intArray1));
+    }
+
+    public static void printArray(int[][] array) {
+        int rowCounter = 0;
+        for (int x = 0; x < array.length; x++) {
+            for (int y = 0; y < array[x].length; y++) {
+                System.out.print(array[x][y] + " ");
+                rowCounter++;
+                if (rowCounter % (array.length + 1) == 0) {
+                    System.out.println();
+                }
+            }
+        }
+    }
+
+    public static void printArray(int[] array) {
+        for (int i : array) {
+            System.out.print(i + " ");
+        }
+    }
+
+    public static boolean isConsecutiveFour(int[][] values) {
+        // Horizontal Checking
+        System.out.println("Checking for Horizontal matches...");
+        boolean horizontalTest = horizontalMatch(values);
+        // Vertical Checking
+        System.out.println("Checking for Vertical matches...");
+        boolean verticalTest = verticalMatch(values);
+        System.out.println("Checking for Diagonal matches...");
+        boolean diagonalTest = diagonalMatch(values);
+        if (horizontalTest || verticalTest || diagonalTest) {
+            System.out.println("Match found!");
+            return true;
+        }
+        System.out.println("No match found.");
+        return false;
+    }
+
+    public static boolean diagonalMatch(int[][] array) {
+        for (int row = 0; row < array.length - 3; row++) {
+            for (int col = 0; col < array[row].length - 3; col++) {
+                // Check for four consecutive numbers diagonally from top-left to bottom-right
+                if (array[row][col] == array[row + 1][col + 1] && array[row + 1][col + 1] == array[row + 2][col + 2]
+                        && array[row + 2][col + 2] == array[row + 3][col + 3]) {
+                    System.out.println("Found four consecutive numbers diagonally at: " + row + "," + col);
+                    return true;
+                }
+                // Check for four consecutive numbers diagonally from top-right to bottom-left
+                if (array[row][col + 3] == array[row + 1][col + 2] && array[row + 1][col + 2] == array[row + 2][col + 1]
+                        && array[row + 2][col + 1] == array[row + 3][col]) {
+                    System.out.println("Found four consecutive numbers diagonally at: " + row + "," + (col + 3));
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    public static boolean verticalMatch(int[][] values) {
+        int intCounter = 0, y = 0;
+        for (int rowIterate = 0; rowIterate < values.length; ++rowIterate) {
+            y = 0;
+            for (int x = 0; x < values.length - 1; ++x) {
+                ++y;
+                if (values[x][rowIterate] == values[y][rowIterate]) {
+                    intCounter++;
+                    System.out.println(values[x][rowIterate] + " " + values[y][rowIterate] + ",  intCounter: " + intCounter);
+                } else {
+                    intCounter = 0;
+                    System.out.println(values[x][rowIterate] + " " + values[y][rowIterate] + ",  intCounter: " + intCounter);
+                }
+                if (intCounter == 3) {
+                    System.out.println("Vertical match!");
+                    return true;
+                }
+            }
+            System.out.println("Checking next line...");
+        }
+        return false;
+    }
+
+    public static boolean horizontalMatch(int[][] values) {
+        int intCounter = 0, y = 0;
+        // Horizontal checking
+        // If the same value has been observed 4 times, return true
+        //System.out.println("values[0].length: " + values[0].length);
+        //System.out.println("values.length: " + values.length);
+
+        for (int rowIterate = 0; rowIterate < values.length; ++rowIterate) {
+            y = 0;
+            for (int x = 0; x < values[0].length - 1; ++x) {
+                ++y;
+                if (values[rowIterate][x] == values[rowIterate][y]) {
+                    intCounter++;
+                    System.out.println(values[rowIterate][x] + " " + values[rowIterate][y] + ",  intCounter: " + intCounter);
+                } else {
+                    intCounter = 0;
+                    System.out.println(values[rowIterate][x] + " " + values[rowIterate][y] + ",  intCounter: " + intCounter);
+                }
+                if (intCounter == 3) {
+                    System.out.println("Horizontal match!");
+                    return true;
+                }
+            }
+            System.out.println("Checking next line...");
+        }
+        return false;
+    }
+}
+
+
+ diff --git a/Semester 2/Assignments/MP1_CalebFontenot/src/main/java/com/calebfontenot/mp1_calebfontenot/MP1_CalebFontenot.java b/Semester 2/Assignments/MP1_CalebFontenot/src/main/java/com/calebfontenot/mp1_calebfontenot/MP1_CalebFontenot.java index 485de87..39c38ee 100644 --- a/Semester 2/Assignments/MP1_CalebFontenot/src/main/java/com/calebfontenot/mp1_calebfontenot/MP1_CalebFontenot.java +++ b/Semester 2/Assignments/MP1_CalebFontenot/src/main/java/com/calebfontenot/mp1_calebfontenot/MP1_CalebFontenot.java @@ -73,7 +73,7 @@ public class MP1_CalebFontenot { {1, 5, 6, 1, 4, 0, 7}, {3, 5, 3, 3, 4, 0, 7} }; - int[][] diagonalTestArray = { // Diagonal 1 + int[][] diagonalTestArray1 = { // Diagonal 1 {0, 1, 0, 3, 1, 6, 1}, {0, 1, 6, 8, 6, 0, 1}, {9, 6, 2, 1, 8, 2, 9}, @@ -81,6 +81,15 @@ public class MP1_CalebFontenot { {1, 3, 9, 1, 4, 0, 7}, {3, 3, 3, 9, 4, 0, 7} }; + int[][] diagonalTestArray2 = { // Diagonal 2 + {0, 1, 0, 3, 1, 6, 1}, + {0, 1, 6, 8, 6, 0, 1}, + {9, 6, 2, 1, 8, 2, 9}, + {6, 9, 6, 1, 1, 9, 1}, + {1, 3, 9, 1, 4, 0, 7}, + {3, 3, 3, 9, 4, 0, 7} + }; + // Create scanner Scanner input = new Scanner(System.in); int userInput; @@ -98,8 +107,10 @@ public class MP1_CalebFontenot { printArray(horizontalTestArray); System.out.println("2. verticalTestArray"); printArray(verticalTestArray); - System.out.println("3. diagonalTestArray"); - printArray(diagonalTestArray); + System.out.println("3. diagonalTestArray1"); + printArray(diagonalTestArray1); + System.out.println("4. diagonalTestArray2"); + printArray(diagonalTestArray2); System.out.print("Input: "); userInput = input.nextInt(); if (userInput == 1) { @@ -117,7 +128,14 @@ public class MP1_CalebFontenot { } } if (userInput == 3) { - if (isConsecutiveFour(diagonalTestArray)) { + if (isConsecutiveFour(diagonalTestArray1)) { + System.out.println("Testing method returns true"); + } else { + System.out.println("Testing method returns false"); + } + } + if (userInput == 4) { + if (isConsecutiveFour(diagonalTestArray2)) { System.out.println("Testing method returns true"); } else { System.out.println("Testing method returns false"); @@ -167,10 +185,8 @@ public class MP1_CalebFontenot { System.out.println("Checking for Vertical matches..."); boolean verticalTest = verticalMatch(values); System.out.println("Checking for Diagonal matches..."); - boolean diagonalNorthwest = MarkouCode.topLeftTriangleDiagonalNothwest(values); - boolean diagonalMiddle = MarkouCode.bottomRightTriangleDiagonalNothwest(values); - System.out.println(diagonalNorthwest); - if (horizontalTest || verticalTest || diagonalNorthwest) { + boolean diagonalTest = diagonalMatch(values); + if (horizontalTest || verticalTest || diagonalTest) { System.out.println("Match found!"); return true; } @@ -178,6 +194,26 @@ public class MP1_CalebFontenot { return false; } + public static boolean diagonalMatch(int[][] array) { + for (int row = 0; row < array.length - 3; row++) { + for (int col = 0; col < array[row].length - 3; col++) { + // Check for four consecutive numbers diagonally from top-left to bottom-right + if (array[row][col] == array[row + 1][col + 1] && array[row + 1][col + 1] == array[row + 2][col + 2] + && array[row + 2][col + 2] == array[row + 3][col + 3]) { + System.out.println("Found four consecutive numbers diagonally at: " + row + "," + col); + return true; + } + // Check for four consecutive numbers diagonally from top-right to bottom-left + if (array[row][col + 3] == array[row + 1][col + 2] && array[row + 1][col + 2] == array[row + 2][col + 1] + && array[row + 2][col + 1] == array[row + 3][col]) { + System.out.println("Found four consecutive numbers diagonally at: " + row + "," + (col + 3)); + return true; + } + } + } + return false; + } + public static boolean verticalMatch(int[][] values) { int intCounter = 0, y = 0; for (int rowIterate = 0; rowIterate < values.length; ++rowIterate) { @@ -200,8 +236,9 @@ public class MP1_CalebFontenot { } return false; } + public static boolean horizontalMatch(int[][] values) { - int intCounter = 0, y = 0; + int intCounter = 0, y = 0; // Horizontal checking // If the same value has been observed 4 times, return true //System.out.println("values[0].length: " + values[0].length); diff --git a/Semester 2/ZIPs/MP1_CalebFontenot.zip b/Semester 2/ZIPs/MP1_CalebFontenot.zip new file mode 100644 index 0000000000000000000000000000000000000000..93dcf1921b0ac7fbe629522ecf4437f2345576ee GIT binary patch literal 933808 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