Sha256: 976efe78e3b69660f89ecadcaf35fcfd5c4a776c155f69eb45855926fc9515ee

Contents?: true

Size: 1.23 KB

Versions: 216

Compression:

Stored size: 1.23 KB

Contents

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

final class DiamondPrinter {

    private static final int A_INT = (int) 'A';

    private static String blank(final int length) {
        return String.join("", Collections.nCopies(length, " "));
    }

    private static String reverse(final String string) {
        return new StringBuilder(string).reverse().toString();
    }

    List<String> printToList(final char chr) {
        final int nRows = 2 * ((int) chr - A_INT) + 1;

        final List<String> result = new ArrayList<>();

        // Populate the top rows.
        for (int nRow = 0; nRow < (nRows + 1) / 2; nRow++) {
            final char rowChr = (char) (A_INT + nRow);

            final String leftHalfOfRow  = blank((nRows - 1) / 2 - nRow) + rowChr + blank(nRow);
            final String rightHalfOfRow = reverse(leftHalfOfRow.substring(0, leftHalfOfRow.length() - 1));
            final String fullRow        = leftHalfOfRow + rightHalfOfRow;

            result.add(fullRow);
        }

        // Populate the bottom rows by 'reflecting' the top rows.
        for (int nRow = (nRows - 1) / 2 - 1; nRow >= 0; nRow--) {
            result.add(result.get(nRow));
        }

        return result;
    }

}

Version data entries

216 entries across 216 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/java/exercises/diamond/.meta/src/reference/java/DiamondPrinter.java
trackler-2.2.1.179 tracks/java/exercises/diamond/.meta/src/reference/java/DiamondPrinter.java
trackler-2.2.1.178 tracks/java/exercises/diamond/.meta/src/reference/java/DiamondPrinter.java
trackler-2.2.1.177 tracks/java/exercises/diamond/.meta/src/reference/java/DiamondPrinter.java
trackler-2.2.1.176 tracks/java/exercises/diamond/.meta/src/reference/java/DiamondPrinter.java
trackler-2.2.1.175 tracks/java/exercises/diamond/.meta/src/reference/java/DiamondPrinter.java
trackler-2.2.1.174 tracks/java/exercises/diamond/.meta/src/reference/java/DiamondPrinter.java
trackler-2.2.1.173 tracks/java/exercises/diamond/.meta/src/reference/java/DiamondPrinter.java
trackler-2.2.1.172 tracks/java/exercises/diamond/.meta/src/reference/java/DiamondPrinter.java
trackler-2.2.1.171 tracks/java/exercises/diamond/.meta/src/reference/java/DiamondPrinter.java
trackler-2.2.1.170 tracks/java/exercises/diamond/.meta/src/reference/java/DiamondPrinter.java
trackler-2.2.1.169 tracks/java/exercises/diamond/.meta/src/reference/java/DiamondPrinter.java
trackler-2.2.1.167 tracks/java/exercises/diamond/.meta/src/reference/java/DiamondPrinter.java
trackler-2.2.1.166 tracks/java/exercises/diamond/.meta/src/reference/java/DiamondPrinter.java
trackler-2.2.1.165 tracks/java/exercises/diamond/.meta/src/reference/java/DiamondPrinter.java
trackler-2.2.1.164 tracks/java/exercises/diamond/.meta/src/reference/java/DiamondPrinter.java
trackler-2.2.1.163 tracks/java/exercises/diamond/.meta/src/reference/java/DiamondPrinter.java
trackler-2.2.1.162 tracks/java/exercises/diamond/.meta/src/reference/java/DiamondPrinter.java
trackler-2.2.1.161 tracks/java/exercises/diamond/.meta/src/reference/java/DiamondPrinter.java
trackler-2.2.1.160 tracks/java/exercises/diamond/.meta/src/reference/java/DiamondPrinter.java