-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathprint-stairs.py
77 lines (64 loc) · 2.06 KB
/
print-stairs.py
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
#
# stair-step-detector
# Copyright (c) 2021 Peter Nebe (mail@peter-nebe.dev)
#
# This file is part of stair-step-detector.
#
# stair-step-detector is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# stair-step-detector is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with stair-step-detector. If not, see <https://www.gnu.org/licenses/>.
#
import sys, json
def clear(n=2):
print("\033[%dJ" % n)
def move(row, col):
print("\033[%d;%dH" % (row, col), end='')
def print_number(row, col, number):
move(row, col)
print(f'{number:6.3f}', end='')
def print_point(row, col, point):
print_number(row, col, point[0])
print_number(row+1, col, point[1])
def print_stair_step(top, left, stair_step):
height = stair_step[0][1]
print_number(top+2, left+10, height)
bottom = top+3
right = left+20
quadri = stair_step[1]
print_point(top, left, quadri[3])
print_point(top, right, quadri[4])
print_point(bottom, left, quadri[1])
print_point(bottom, right, quadri[2])
print_parting_line(bottom+2, left)
def print_parting_line(row, col):
move(row, col)
print("__________________________")
clear()
while line := sys.stdin.readline():
jdata = json.loads(line)
ident = jdata[0]
num_stair_steps = jdata[1][1]
current_row, left = 1, 1
move(current_row, left)
print(ident, ", number of stair steps: ", num_stair_steps, sep='')
if num_stair_steps > 0:
current_row += 1
left += 2
print_parting_line(current_row, left)
current_row += 2
stair_steps = jdata[2]
for i in range(num_stair_steps-1, -1, -1):
print_stair_step(current_row, left, stair_steps[i])
current_row += 7
else:
clear(0)
print()