aboutsummaryrefslogtreecommitdiff
path: root/2015/14/puzzle-2.bc
diff options
context:
space:
mode:
Diffstat (limited to '2015/14/puzzle-2.bc')
-rw-r--r--2015/14/puzzle-2.bc33
1 files changed, 33 insertions, 0 deletions
diff --git a/2015/14/puzzle-2.bc b/2015/14/puzzle-2.bc
new file mode 100644
index 0000000..4a41277
--- /dev/null
+++ b/2015/14/puzzle-2.bc
@@ -0,0 +1,33 @@
+scale = 0
+
+/* Return the largest element from array `a` of length `l` */
+define max(a[], l)
+{
+ auto m, i
+ for (i = 0; i < l; i++) {
+ if (a[i] > m)
+ m = a[i]
+ }
+ return m
+}
+
+define calc(speed[], time[], rest[], n)
+{
+ auto i, j, k, p[], d[]
+
+ for (i = 0; i < 2503; i++) {
+ for (j = k = 0; j < n; j++) {
+ if (i % (time[j] + rest[j]) < time[j])
+ d[j] += speed[j]
+ if (d[j] > k)
+ k = d[j]
+ }
+
+ for (j = 0; j < n; j++) {
+ if (d[j] == k)
+ p[j] += 1
+ }
+ }
+
+ return max(p[], n)
+}