aboutsummaryrefslogtreecommitdiff
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
parent1a8e1e68759611a66ae116771da5f376c95a3b9f (diff)
downloadcp-36461ea5c65fcdf7169abdb39549ef53a15d4f03.tar.gz
Add /r/dailyprogrammer Challenge #302 [Intermediate] and slightly clean up
-rw-r--r--daily/302easy/README.md2
-rw-r--r--daily/302intermediate/README.md52
-rwxr-xr-xdaily/302intermediate/barchart.py22
-rw-r--r--[-rwxr-xr-x]others/mkcal/ctmt.pas0
-rw-r--r--[-rwxr-xr-x]others/mkcal/llgc2m.pas0
-rw-r--r--[-rwxr-xr-x]others/mkcal/xepviec.pas0
-rw-r--r--others/volume1/fibonacci.pas103
7 files changed, 75 insertions, 104 deletions
diff --git a/daily/302easy/README.md b/daily/302easy/README.md
index 6c0adf4..fed8511 100644
--- a/daily/302easy/README.md
+++ b/daily/302easy/README.md
@@ -151,5 +151,5 @@ capitalization from the above table. Example:
## Bonus
-Note that *bacon* has a few different possibilities. Which is the heaviest by
+Note that `bacon` has a few different possibilities. Which is the heaviest by
atomic weight?
diff --git a/daily/302intermediate/README.md b/daily/302intermediate/README.md
new file mode 100644
index 0000000..84ae459
--- /dev/null
+++ b/daily/302intermediate/README.md
@@ -0,0 +1,52 @@
+# [[2017-02-08] Challenge #302 [Intermediate] ASCII Histogram Maker: Part 1 - The Simple Bar Chart](https://www.reddit.com/r/dailyprogrammer/comments/5st2so/20170208_challenge_302_intermediate_ascii/)
+
+## Description
+
+Any Excel user is probably familiar with the bar chart - a simple plot showing
+vertical bars to represent the frequency of something you counted. For today's
+challenge you'll be producing bar charts in ASCII.
+
+(Part 2 will have you assemble a proper histogram from a collection of data.)
+
+## Input Description
+
+You'll be given four numbers on the first line telling you the start and end of
+the horizontal (X) axis and the vertical (Y) axis, respectively. Then you'll
+have a number on a single line telling you how many records to read. Then
+you'll be given the data as three numbers: the first two represent the interval
+as a start (inclusive) and end (exclusive), the third number is the frequency
+of that variable. Example:
+
+ 140 190 1 8
+ 5
+ 140 150 1
+ 150 160 0
+ 160 170 7
+ 170 180 6
+ 180 190 2
+
+## Output Description
+
+Your program should emit an ASCII bar chart showing the frequencies of the
+buckets. Your program may use any character to represent the data point, I show
+an asterisk below. From the above example:
+
+ 8
+ 7 *
+ 6 * *
+ 5 * *
+ 4 * *
+ 3 * *
+ 2 * * *
+ 1 * * * *
+ 140 150 160 170 180 190
+
+## Challenge Input
+
+ 0 50 1 10
+ 5
+ 0 10 1
+ 10 20 3
+ 20 30 6
+ 30 40 4
+ 40 50 2
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='')
diff --git a/others/mkcal/ctmt.pas b/others/mkcal/ctmt.pas
index bdd30f0..bdd30f0 100755..100644
--- a/others/mkcal/ctmt.pas
+++ b/others/mkcal/ctmt.pas
diff --git a/others/mkcal/llgc2m.pas b/others/mkcal/llgc2m.pas
index 3fc8ef2..3fc8ef2 100755..100644
--- a/others/mkcal/llgc2m.pas
+++ b/others/mkcal/llgc2m.pas
diff --git a/others/mkcal/xepviec.pas b/others/mkcal/xepviec.pas
index cfa39d6..cfa39d6 100755..100644
--- a/others/mkcal/xepviec.pas
+++ b/others/mkcal/xepviec.pas
diff --git a/others/volume1/fibonacci.pas b/others/volume1/fibonacci.pas
deleted file mode 100644
index c1bb423..0000000
--- a/others/volume1/fibonacci.pas
+++ /dev/null
@@ -1,103 +0,0 @@
-unit fibonacci;
-
-interface
- const
- fibonacci93: array[1..93] of qword = (
- 1,
- 1,
- 2,
- 3,
- 5,
- 8,
- 13,
- 21,
- 34,
- 55,
- 89,
- 144,
- 233,
- 377,
- 610,
- 987,
- 1597,
- 2584,
- 4181,
- 6765,
- 10946,
- 17711,
- 28657,
- 46368,
- 75025,
- 121393,
- 196418,
- 317811,
- 514229,
- 832040,
- 1346269,
- 2178309,
- 3524578,
- 5702887,
- 9227465,
- 14930352,
- 24157817,
- 39088169,
- 63245986,
- 102334155,
- 165580141,
- 267914296,
- 433494437,
- 701408733,
- 1134903170,
- 1836311903,
- 2971215073,
- 4807526976,
- 7778742049,
- 12586269025,
- 20365011074,
- 32951280099,
- 53316291173,
- 86267571272,
- 139583862445,
- 225851433717,
- 365435296162,
- 591286729879,
- 956722026041,
- 1548008755920,
- 2504730781961,
- 4052739537881,
- 6557470319842,
- 10610209857723,
- 17167680177565,
- 27777890035288,
- 44945570212853,
- 72723460248141,
- 117669030460994,
- 190392490709135,
- 308061521170129,
- 498454011879264,
- 806515533049393,
- 1304969544928657,
- 2111485077978050,
- 3416454622906707,
- 5527939700884757,
- 8944394323791464,
- 14472334024676221,
- 23416728348467685,
- 37889062373143906,
- 61305790721611591,
- 99194853094755497,
- 160500643816367088,
- 259695496911122585,
- 420196140727489673,
- 679891637638612258,
- 1100087778366101931,
- 1779979416004714189,
- 2880067194370816120,
- 4660046610375530309,
- 7540113804746346429,
- 12200160415121876738
- );
-
-implementation
-
-end.