complete lab02
This commit is contained in:
2 files changed
+120
No files matched your search
Generated
+6
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
@@ -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<String> generatePalindromeSequences(final int n)
|
||||||
|
{
|
||||||
|
final ArrayList<String> 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<String> 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<String> morePalindromeSequences(final int n, final int nc)
|
||||||
|
{
|
||||||
|
final String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||||
|
|
||||||
|
if (nc > characters.length())
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
final ArrayList<String> 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<String> 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<String> sequences;
|
||||||
|
sequences = test.generatePalindromeSequences(i);
|
||||||
|
System.out.printf("Length %d produces %d sequences\n", i, sequences.size());
|
||||||
|
//System.out.println(sequences);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in new issue
Block a user