-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathart.c
101 lines (85 loc) · 1.77 KB
/
art.c
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
#include "main.h"
#include "art.h"
const char numbers[10][5][3] = {
{{ZERO_0}, {ZERO_1}, {ZERO_2}, {ZERO_3}, {ZERO_4}},
{{ONE_0}, {ONE_1}, {ONE_2}, {ONE_3}, {ONE_4}},
{{TWO_0}, {TWO_1}, {TWO_2}, {TWO_3}, {TWO_4}},
{{THREE_0}, {THREE_1}, {THREE_2}, {THREE_3}, {THREE_4}},
{{FOUR_0}, {FOUR_1}, {FOUR_2}, {FOUR_3}, {FOUR_4}, },
{{FIVE_0}, {FIVE_1}, {FIVE_2}, {FIVE_3}, {FIVE_4}},
{{SIX_0}, {SIX_1}, {SIX_2}, {SIX_3}, {SIX_4}},
{{SEVEN_0}, {SEVEN_1}, {SEVEN_2}, {SEVEN_3}, {SEVEN_4}},
{{EIGHT_0}, {EIGHT_1}, {EIGHT_2}, {EIGHT_3}, {EIGHT_4}},
{{NINE_0}, {NINE_1}, {NINE_2}, {NINE_3}, {NINE_4}}
};
void print_number(unsigned int number)
{
for (int i = 0; i < COLUMNS; i++)
{
printf(BOX_LIGHT_1);
}
printf("\n");
for (int row = 0; row < ART_ROWS; row++)
{
print_row(number, row);
printf("\n");
}
for (int i = 0; i < COLUMNS; i++)
{
printf(BOX_LIGHT_1);
}
printf("\n");
}
void print_row(unsigned int number, unsigned int row)
{
unsigned int digits = digits_count(number);
if (number == 0)
{
printf(BOX_LIGHT_1);
for (int column = 0; column < ART_COLUMNS; column++)
{
if (numbers[number % 10][row][column] == '+')
{
printf(BOX);
}
else
{
printf(BOX_LIGHT_1);
}
}
digits++;
}
else
{
_print_row(number, row);
}
for (int i = 0; i < (COLUMNS - (digits * 4)); i++)
{
printf(BOX_LIGHT_1);
}
}
void _print_row(unsigned int number, unsigned int row)
{
if (number != 0)
{
_print_row(number / 10, row);
printf(BOX_LIGHT_1);
for (int column = 0; column < ART_COLUMNS; column++)
{
if (numbers[number % 10][row][column] == '+')
{
printf(BOX);
}
else
{
printf(BOX_LIGHT_1);
}
}
}
}
unsigned int digits_count(unsigned int number)
{
if (number == 0)
return (0);
return (1 + digits_count(number / 10));
}