-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path20.ts
107 lines (106 loc) · 1.61 KB
/
20.ts
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
type Letters = {
A: [
'█▀█ ',
'█▀█ ',
'▀ ▀ ',
],
B: [
'█▀▄ ',
'█▀▄ ',
'▀▀ '
],
C: [
'█▀▀ ',
'█ ░░',
'▀▀▀ '
],
E: [
'█▀▀ ',
'█▀▀ ',
'▀▀▀ '
],
H: [
'█ █ ',
'█▀█ ',
'▀ ▀ '
],
I: [
'█ ',
'█ ',
'▀ '
],
M: [
'█▄░▄█ ',
'█ ▀ █ ',
'▀ ░░▀ '
],
N: [
'█▄░█ ',
'█ ▀█ ',
'▀ ░▀ '
],
P: [
'█▀█ ',
'█▀▀ ',
'▀ ░░'
],
R: [
'█▀█ ',
'██▀ ',
'▀ ▀ '
],
S: [
'█▀▀ ',
'▀▀█ ',
'▀▀▀ '
],
T: [
'▀█▀ ',
'░█ ░',
'░▀ ░'
],
Y: [
'█ █ ',
'▀█▀ ',
'░▀ ░'
],
W: [
'█ ░░█ ',
'█▄▀▄█ ',
'▀ ░ ▀ '
],
' ': [
'░',
'░',
'░'
],
':': [
'#',
'░',
'#'
],
'*': [
'░',
'#',
'░'
],
};
type ToAsciiArt<
TInput extends string,
TRow extends [string, string, string] = ['', '', ''],
TList extends Array<string> = []
> = TInput extends `\n${infer Rest}`
? ToAsciiArt<Rest, ['', '', ''], [...TList, ...TRow]>
: TInput extends `${infer First}${infer Rest}`
? Uppercase<First> extends infer key extends keyof Letters
? ToAsciiArt<
Rest,
[
`${TRow[0]}${Letters[key][0]}`,
`${TRow[1]}${Letters[key][1]}`,
`${TRow[2]}${Letters[key][2]}`
],
TList
>
: never
: [...TList, ...TRow];