From b1d4402f2f427128caab30bb880ad4ec036af101 Mon Sep 17 00:00:00 2001 From: SowinskiBraeden Date: Sun, 8 Feb 2026 15:11:03 -0800 Subject: [PATCH] complete lab02 --- .idea/vcs.xml | 6 ++ src/ca/bcit/comp3760/assign2/Lab2.java | 114 +++++++++++++++++++++++++ 2 files changed, 120 insertions(+) create mode 100644 .idea/vcs.xml create mode 100644 src/ca/bcit/comp3760/assign2/Lab2.java diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/ca/bcit/comp3760/assign2/Lab2.java b/src/ca/bcit/comp3760/assign2/Lab2.java new file mode 100644 index 0000000..d564937 --- /dev/null +++ b/src/ca/bcit/comp3760/assign2/Lab2.java @@ -0,0 +1,114 @@ +package ca.bcit.comp3760.assign2; + +import java.util.ArrayList; + +/** + * Lab2 Generates palindromes of length N with + * the characters A, B, and C. + * + * @author Braeden Sowinski + * @version 1.0.0 + */ +public class Lab2 +{ + /** + * generate a list of all palindrome sequences of a given length N + * for the characters A, B, and C. + * @param n length of palindrome to generate + * @return ArrayList of strings containing all palindromes of length n + */ + public ArrayList generatePalindromeSequences(final int n) + { + final ArrayList sequences; + sequences = new ArrayList<>(); + + if (n < 1) + { + /* we can assume n in greater than 1, but we'll + check just in case. */ + return sequences; + } + else if (n <= 2) + { + sequences.add("A".repeat(n)); + sequences.add("B".repeat(n)); + sequences.add("C".repeat(n)); + return sequences; + } + + final ArrayList subsequences; + subsequences = generatePalindromeSequences(n - 2); + + for (final char c : "ABC".toCharArray()) + { + subsequences.forEach(sub -> sequences.add(c + sub + c)); + } + + return sequences; + } + + /** + * morePalindromeSequences is a BONUS question that generates + * palindromes of length n, with c amount of characters. i.e. + * A, B, C, ... Cth character. + * @param n length palindrome + * @param nc number of characters in palindrome + */ + public ArrayList morePalindromeSequences(final int n, final int nc) + { + final String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + + if (nc > characters.length()) + { + return null; + } + + final ArrayList sequences; + sequences = new ArrayList<>(); + + if (n < 1) + { + /* we can assume n in greater than 1, but we'll + check just in case. */ + return sequences; + } + else if (n <= 2) + { + for (int i = 0; i < nc; i++) + { + sequences.add((characters.charAt(i) + "").repeat(n)); + } + return sequences; + } + + final ArrayList subsequences; + subsequences = generatePalindromeSequences(n - 2); + + for (final char c : characters.substring(0, nc).toCharArray()) + { + subsequences.forEach(sub -> sequences.add(c + sub + c)); + } + + return sequences; + } + + /** + * main program entry for testing + * @param args unused + */ + public static void main(final String[] args) + { + final Lab2 test; + + test = new Lab2(); + + System.out.println("Generating ALL sequences of a given length:"); + for (int i = 1; i <= 20; i++) + { + final ArrayList sequences; + sequences = test.generatePalindromeSequences(i); + System.out.printf("Length %d produces %d sequences\n", i, sequences.size()); + //System.out.println(sequences); + } + } +}