From 10bf40db8552fa7a105759d47712a8c6700bc99c Mon Sep 17 00:00:00 2001 From: mary1982anga <149362497+mary1982anga@users.noreply.github.com> Date: Thu, 7 Mar 2024 11:17:52 +0000 Subject: [PATCH] Add files via upload --- Diamond Kata/Diamond.java | 52 ++++++++++++++++++++++++++ Diamond Kata/DiamondPrinterTest.java | 56 ++++++++++++++++++++++++++++ Diamond Kata/DiamondTest.java | 16 ++++++++ 3 files changed, 124 insertions(+) create mode 100644 Diamond Kata/Diamond.java create mode 100644 Diamond Kata/DiamondPrinterTest.java create mode 100644 Diamond Kata/DiamondTest.java diff --git a/Diamond Kata/Diamond.java b/Diamond Kata/Diamond.java new file mode 100644 index 0000000..a30e0bb --- /dev/null +++ b/Diamond Kata/Diamond.java @@ -0,0 +1,52 @@ +//NewDay CodeDojos/Diamond Kata + +package newday.test.diamond; + +public class Diamond { + public static String create(char letter) { + if (letter < 'A' || letter > 'Z') { + return "Invalid input. Please provide a letter between A and Z."; + } + + StringBuilder result = new StringBuilder(); + + // Print the top half of the diamond + result.append(createLine(letter, 'A')); + for (char current = 'B'; current <= letter; current++) { + result.append(createLine(letter, current)); + } + + // Print the bottom half of the diamond + for (char current = (char)(letter - 1); current >= 'A'; current--) { + result.append(createLine(letter, current)); + } + + return result.toString(); + } + + private static String createLine(char letter, char current) { + StringBuilder line = new StringBuilder(); + + // Leading spaces + for (char c = current; c < letter; c++) { + line.append(" "); + } + + // Current character + line.append(current); + + // Special handling for characters after 'A' + if (current != 'A') { + int spaces = (current - 'A') * 2 - 1; + for (int i = 0; i < spaces; i++) { + line.append(" "); + } + line.append(current); + } + + // Newline + line.append("\n"); + + return line.toString(); + } +} diff --git a/Diamond Kata/DiamondPrinterTest.java b/Diamond Kata/DiamondPrinterTest.java new file mode 100644 index 0000000..20a35d4 --- /dev/null +++ b/Diamond Kata/DiamondPrinterTest.java @@ -0,0 +1,56 @@ +package newday.test.diamond; + + + + import static org.junit.Assert.assertEquals; + import org.junit.Test; + + public class DiamondPrinterTest { + + @Test + public void testCreateDiamondA() { + assertEquals("A\n", Diamond.create('A')); + } + + @Test + public void testCreateDiamondBCharacterSequence() { + assertEquals("AB\n", Diamond.create('B')); + } + + @Test + public void testCreateDiamondBRepeatCharacters() { + assertEquals("ABB\n", Diamond.create('B')); + } + + @Test + public void testCreateDiamondBSeparateLines() { + assertEquals("A\nBB\n", Diamond.create('B')); + } + + @Test + public void testCreateDiamondBIndentation() { + assertEquals(" A\nB B\n A\n", Diamond.create('B')); + } + + @Test + public void testCreateDiamondBInterCharacterSpaces() { + assertEquals(" A\nB B\n A\n", Diamond.create('B')); + } + + @Test + public void testCreateDiamondBSymmetry() { + assertEquals(" A\nB B\n A\n", Diamond.create('B')); + } + + @Test + public void testCreateDiamondC() { + assertEquals(" A\n B B\nC C\n B B\n A\n", Diamond.create('C')); + } + + @Test + public void testCreateDiamondD() { + assertEquals(" A\n B B\n C C\nD D\n C C\n B B\n A\n", Diamond.create('D')); + } + + // Add more test cases as needed to cover additional scenarios + } \ No newline at end of file diff --git a/Diamond Kata/DiamondTest.java b/Diamond Kata/DiamondTest.java new file mode 100644 index 0000000..7fce3d2 --- /dev/null +++ b/Diamond Kata/DiamondTest.java @@ -0,0 +1,16 @@ +package newday.test.diamond; + +public class DiamondTest { + + public static void main(String[] args) { + // Test with different characters + System.out.println("Diamond for character 'A':"); + System.out.println(Diamond.create('A')); + + System.out.println("Diamond for character 'B':"); + System.out.println(Diamond.create('B')); + + System.out.println("Diamond for character 'C':"); + System.out.println(Diamond.create('D')); + } +}