AlexAegis/advent-of-code

View on GitHub
solutions/typescript/libs/lib/src/functions/output/letter-matrix.const.ts

Summary

Maintainability
C
1 day
Test Coverage
import { NEWLINE } from '../../regex/index.js';

export type SmallLetterMatrixAlphabet = (typeof UPPERCASE_ALPHABET)[number];
type RowRenderedLetter = string[];
export type RowRenderedAlphaBet = Record<SmallLetterMatrixAlphabet, RowRenderedLetter>;
export type LetterMatrixType = 'small' | 'big';

export const getMatrixAlphabet = (
    letterMatrixType: LetterMatrixType,
): Readonly<Record<SmallLetterMatrixAlphabet, string>> => {
    return letterMatrixType === 'small' ? MATRIX_ALPHABET_SMALL : MATRIX_ALPHABET_BIG;
};

export const getRowRenderedAlphabet = (letterMatrixType: LetterMatrixType): RowRenderedAlphaBet => {
    return Object.fromEntries(
        Object.entries(getMatrixAlphabet(letterMatrixType)).map(([key, value]) => [
            key,
            value.split(NEWLINE),
        ]),
    ) as RowRenderedAlphaBet;
};

export const UPPERCASE_ALPHABET = [
    'A',
    'B',
    'C',
    'D',
    'E',
    'F',
    'G',
    'H',
    'I',
    'J',
    'K',
    'L',
    'M',
    'N',
    'O',
    'P',
    'Q',
    'R',
    'S',
    'T',
    'U',
    'V',
    'W',
    'X',
    'Y',
    'Z',
] as const;

export const A_LETTER_SMALL = `\
.##.
#..#
#..#
####
#..#
#..#`;

export const B_LETTER_SMALL = `\
###.
#..#
###.
#..#
#..#
###.`;

export const C_LETTER_SMALL = `\
.##.
#..#
#...
#...
#..#
.##.`;

export const D_UNVERIFIED_LETTER_SMALL = `\
###.
#..#
#..#
#..#
#..#
###.`;

export const E_LETTER_SMALL = `\
####
#...
###.
#...
#...
####`;

export const F_LETTER_SMALL = `\
####
#...
###.
#...
#...
#...`;

export const G_LETTER_SMALL = `\
.##.
#..#
#...
#.##
#..#
.###`;

export const H_LETTER_SMALL = `\
#..#
#..#
####
#..#
#..#
#..#`;

export const I_LETTER_SMALL = `\
###
.#.
.#.
.#.
.#.
###`;

export const J_LETTER_SMALL = `\
..##
...#
...#
...#
#..#
.##.`;

export const K_LETTER_SMALL = `\
#..#
#.#.
##..
#.#.
#.#.
#..#`;

export const L_LETTER_SMALL = `\
#...
#...
#...
#...
#...
####`;

export const M_UNVERIFIED_LETTER_SMALL = `\
#...#
##.##
#.#.#
#...#
#...#
#...#`;

export const N_UNVERIFIED_LETTER_SMALL = `\
#...#
##..#
#.#.#
#.#.#
#..##
#...#`;

export const O_LETTER_SMALL = `\
.##.
#..#
#..#
#..#
#..#
.##.`;

export const P_LETTER_SMALL = `\
###.
#..#
#..#
###.
#...
#...`;

export const Q_UNVERIFIED_LETTER_SMALL = `\
.##.
#..#
#..#
#..#
#.##
.###`;

export const R_LETTER_SMALL = `\
###.
#..#
#..#
###.
#.#.
#..#`;

export const S_LETTER_SMALL = `\
.###
#...
#...
.##.
...#
###.`;

export const T_UNVERIFIED_LETTER_SMALL = `\
#####
..#..
..#..
..#..
..#..
..#..`;

export const U_LETTER_SMALL = `\
#..#
#..#
#..#
#..#
#..#
.##.`;

export const V_UNVERIFIED_LETTER_SMALL = `\
#...#
#...#
#...#
#...#
.#.#.
..#..`;

export const W_UNVERIFIED_LETTER_SMALL = `\
#.......#
#.......#
#...#...#
#...#...#
.#.#.#.#.
..#...#..`;

export const X_UNVERIFIED_LETTER_SMALL = `\
#...#
.#.#.
..#..
..#..
.#.#.
#...#`;

export const Y_LETTER_SMALL = `\
#...#
#...#
.#.#.
..#..
..#..
..#..`;

export const Z_LETTER_SMALL = `\
####
...#
..#.
.#..
#...
####`;

export const MATRIX_ALPHABET_SMALL = {
    A: A_LETTER_SMALL,
    B: B_LETTER_SMALL,
    C: C_LETTER_SMALL,
    D: D_UNVERIFIED_LETTER_SMALL,
    E: E_LETTER_SMALL,
    F: F_LETTER_SMALL,
    G: G_LETTER_SMALL,
    H: H_LETTER_SMALL,
    I: I_LETTER_SMALL,
    J: J_LETTER_SMALL,
    K: K_LETTER_SMALL,
    L: L_LETTER_SMALL,
    M: M_UNVERIFIED_LETTER_SMALL,
    N: N_UNVERIFIED_LETTER_SMALL,
    O: O_LETTER_SMALL,
    P: P_LETTER_SMALL,
    Q: Q_UNVERIFIED_LETTER_SMALL,
    R: R_LETTER_SMALL,
    S: S_LETTER_SMALL,
    T: T_UNVERIFIED_LETTER_SMALL,
    U: U_LETTER_SMALL,
    V: V_UNVERIFIED_LETTER_SMALL,
    W: W_UNVERIFIED_LETTER_SMALL,
    X: X_UNVERIFIED_LETTER_SMALL,
    Y: Y_LETTER_SMALL,
    Z: Z_LETTER_SMALL,
} as const;

export const A_LETTER_BIG = `\
..##..
.#..#.
#....#
#....#
#....#
######
#....#
#....#
#....#
#....#
`;

export const B_LETTER_BIG = `\
#####.
#....#
#....#
#....#
#####.
#....#
#....#
#....#
#....#
#####.
`;

export const C_LETTER_BIG = `\
.####.
#....#
#.....
#.....
#.....
#.....
#.....
#.....
#....#
.####.
`;

export const D_UNVERIFIED_LETTER_BIG = `\
#####.
#....#
#....#
#....#
#....#
#....#
#....#
#....#
#....#
#####.
`;

export const E_LETTER_BIG = `\
######
#.....
#.....
#.....
#####.
#.....
#.....
#.....
#.....
######
`;

export const F_LETTER_BIG = `\
######
#.....
#.....
#.....
#####.
#.....
#.....
#.....
#.....
#.....
`;

export const G_LETTER_BIG = `\
.####.
#....#
#.....
#.....
#.....
#..###
#....#
#....#
#...##
.###.#
`;

export const H_LETTER_BIG = `\
#....#
#....#
#....#
#....#
######
#....#
#....#
#....#
#....#
#....#
`;

export const I_UNVERIFIED_LETTER_BIG = `\
###
.#.
.#.
.#.
.#.
.#.
.#.
.#.
.#.
###
`;

export const J_LETTER_BIG = `\
...###
....#.
....#.
....#.
....#.
....#.
....#.
#...#.
#...#.
.###..
`;

export const K_LETTER_BIG = `\
#....#
#...#.
#..#..
#.#...
##....
##....
#.#...
#..#..
#...#.
#....#
`;

export const L_LETTER_BIG = `\
#.....
#.....
#.....
#.....
#.....
#.....
#.....
#.....
#.....
######
`;

export const M_UNVERIFIED_LETTER_BIG = `\
#.....#
##...##
##...##
#.#.#.#
#.#.#.#
#..#..#
#..#..#
#.....#
#.....#
#.....#
`;

export const N_LETTER_BIG = `\
#....#
##...#
##...#
#.#..#
#.#..#
#..#.#
#..#.#
#...##
#...##
#....#
`;

export const O_UNVERIFIED_LETTER_BIG = `\
.####.
#....#
#....#
#....#
#....#
#....#
#....#
#....#
#....#
.####.
`;

export const P_LETTER_BIG = `\
#####.
#....#
#....#
#....#
#####.
#.....
#.....
#.....
#.....
#.....
`;

export const Q_UNVERIFIED_LETTER_BIG = `\
.####.
#....#
#....#
#....#
#....#
#....#
#....#
#..#.#
#...##
.#####
`;

export const R_LETTER_BIG = `\
#####.
#....#
#....#
#....#
#####.
#..#..
#...#.
#...#.
#....#
#....#
`;

export const S_UNVERIFIED_LETTER_BIG = `\
.####.
#.....
#.....
#.....
.####.
.....#
.....#
.....#
.....#
#####.
`;

export const T_UNVERIFIED_LETTER_BIG = `\
#####
..#..
..#..
..#..
..#..
..#..
..#..
..#..
..#..
..#..
`;

export const U_UNVERIFIED_LETTER_BIG = `\
#....#
#....#
#....#
#....#
#....#
#....#
#....#
#....#
#....#
.####.
`;

export const V_UNVERIFIED_LETTER_BIG = `\
#...#
#...#
#...#
#...#
#...#
#...#
#...#
.#.#.
.#.#.
..#..
`;

export const W_UNVERIFIED_LETTER_BIG = `\
#.......#
#.......#
#.......#
#...#...#
#...#...#
#...#...#
#...#...#
.#.#.#.#.
.#.#.#.#.
..#...#..
`;

export const X_LETTER_BIG = `\
#....#
#....#
.#..#.
.#..#.
..##..
..##..
.#..#.
.#..#.
#....#
#....#
`;

export const Y_UNVERIFIED_LETTER_BIG = `\
#...#
#...#
.#.#.
.#.#.
..#..
..#..
..#..
..#..
..#..
..#..
`;

export const Z_LETTER_BIG = `\
######
.....#
.....#
....#.
...#..
..#...
.#....
#.....
#.....
######
`;

export const MATRIX_ALPHABET_BIG = {
    A: A_LETTER_BIG,
    B: B_LETTER_BIG,
    C: C_LETTER_BIG,
    D: D_UNVERIFIED_LETTER_BIG,
    E: E_LETTER_BIG,
    F: F_LETTER_BIG,
    G: G_LETTER_BIG,
    H: H_LETTER_BIG,
    I: I_UNVERIFIED_LETTER_BIG,
    J: J_LETTER_BIG,
    K: K_LETTER_BIG,
    L: L_LETTER_BIG,
    M: M_UNVERIFIED_LETTER_BIG,
    N: N_LETTER_BIG,
    O: O_UNVERIFIED_LETTER_BIG,
    P: P_LETTER_BIG,
    Q: Q_UNVERIFIED_LETTER_BIG,
    R: R_LETTER_BIG,
    S: S_UNVERIFIED_LETTER_BIG,
    T: T_UNVERIFIED_LETTER_BIG,
    U: U_UNVERIFIED_LETTER_BIG,
    V: V_UNVERIFIED_LETTER_BIG,
    W: W_UNVERIFIED_LETTER_BIG,
    X: X_LETTER_BIG,
    Y: Y_UNVERIFIED_LETTER_BIG,
    Z: Z_LETTER_BIG,
} as const;