lots of exercises in java... from https://github.com/exercism/java

DiamondPrinter.java 1.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. import java.util.List;
  4. final class DiamondPrinter {
  5. private static final int A_INT = (int) 'A';
  6. private static String blank(final int length) {
  7. return String.join("", Collections.nCopies(length, " "));
  8. }
  9. private static String reverse(final String string) {
  10. return new StringBuilder(string).reverse().toString();
  11. }
  12. List<String> printToList(final char chr) {
  13. final int nRows = 2 * ((int) chr - A_INT) + 1;
  14. final List<String> result = new ArrayList<>();
  15. // Populate the top rows.
  16. for (int nRow = 0; nRow < (nRows + 1) / 2; nRow++) {
  17. final char rowChr = (char) (A_INT + nRow);
  18. final String leftHalfOfRow = blank((nRows - 1) / 2 - nRow) + rowChr + blank(nRow);
  19. final String rightHalfOfRow = reverse(leftHalfOfRow.substring(0, leftHalfOfRow.length() - 1));
  20. final String fullRow = leftHalfOfRow + rightHalfOfRow;
  21. result.add(fullRow);
  22. }
  23. // Populate the bottom rows by 'reflecting' the top rows.
  24. for (int nRow = (nRows - 1) / 2 - 1; nRow >= 0; nRow--) {
  25. result.add(result.get(nRow));
  26. }
  27. return result;
  28. }
  29. }