-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsolution.ts
More file actions
49 lines (44 loc) Β· 1.54 KB
/
solution.ts
File metadata and controls
49 lines (44 loc) Β· 1.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
type Letters = {
A: ["βββ ", "βββ ", "β β "];
B: ["βββ ", "βββ ", "ββ "];
C: ["βββ ", "β ββ", "βββ "];
E: ["βββ ", "βββ ", "βββ "];
H: ["β β ", "βββ ", "β β "];
I: ["β ", "β ", "β "];
M: ["βββββ ", "β β β ", "β βββ "];
N: ["ββββ ", "β ββ ", "β ββ "];
P: ["βββ ", "βββ ", "β ββ"];
R: ["βββ ", "βββ ", "β β "];
S: ["βββ ", "βββ ", "βββ "];
T: ["βββ ", "ββ β", "ββ β"];
Y: ["β β ", "βββ ", "ββ β"];
W: ["β βββ ", "βββββ ", "β β β "];
" ": ["β", "β", "β"];
":": ["#", "β", "#"];
"*": ["β", "#", "β"];
};
type RenderLetterLine<
Letter extends keyof Letters,
LineNumber extends number
> = Letters[Letter][LineNumber];
type RenderLettersLine<
String extends string,
LineNumber extends number
> = String extends `${infer CurrentSymbol}${infer Rest}`
? Uppercase<CurrentSymbol> extends infer Key extends keyof Letters
? `${RenderLetterLine<Key, LineNumber>}${RenderLettersLine<
Rest,
LineNumber
>}`
: ""
: "";
type RenderLettersLines<Key extends string> = [
RenderLettersLine<Key, 0>,
RenderLettersLine<Key, 1>,
RenderLettersLine<Key, 2>
];
type ToAsciiArt<String extends string> =
String extends `${infer Key}\n${infer Rest}`
? [...RenderLettersLines<Key>, ...ToAsciiArt<Rest>]
: RenderLettersLines<String>;
export { ToAsciiArt };