about summary refs log tree commit diff
path: root/daily/302intermediate/barchart.py
diff options
context:
space:
mode:
authorRaphael McSinyx <vn.mcsinyx@gmail.com>2017-02-12 22:18:09 +0700
committerRaphael McSinyx <vn.mcsinyx@gmail.com>2017-02-12 22:18:09 +0700
commit36461ea5c65fcdf7169abdb39549ef53a15d4f03 (patch)
tree635e883e7c2930a379bc88b29c531f0228a7d4b1 /daily/302intermediate/barchart.py
parent1a8e1e68759611a66ae116771da5f376c95a3b9f (diff)
downloadcp-36461ea5c65fcdf7169abdb39549ef53a15d4f03.tar.gz
Add /r/dailyprogrammer Challenge #302 [Intermediate] and slightly clean up
Diffstat (limited to 'daily/302intermediate/barchart.py')
-rwxr-xr-xdaily/302intermediate/barchart.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/daily/302intermediate/barchart.py b/daily/302intermediate/barchart.py
new file mode 100755
index 0000000..e699fcd
--- /dev/null
+++ b/daily/302intermediate/barchart.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python3
+
+from math import gcd
+
+minx, maxx, miny, maxy = map(int, input().split())
+n, step, z, s, d = int(input()), maxy - miny, len(str(maxy)), {minx, maxx}, {}
+for i in range(n):
+    start, end, freq = map(int, input().split())
+    step = gcd(step, freq - miny)
+    s.update({start, end})
+    d[start] = freq
+points = sorted(s)
+spaces = [' ' * len(str(i)) for i in points]
+for i in points:
+    d.setdefault(i, 0)
+while maxy >= miny:
+    print(str(maxy).rjust(z), end='')
+    for i, point in enumerate(points[:-1]):
+        print(spaces[i], '*' if d[point] >= maxy else ' ', sep='', end='')
+    print(spaces[-1])
+    maxy -= step
+print(' ' * z, ' '.join(str(i) for i in points), sep='')