From f8cfe6dfa928a2d1bd7473c243f0e4a48f3cb1de Mon Sep 17 00:00:00 2001 From: Bert Peters Date: Wed, 20 Dec 2017 14:18:32 +0100 Subject: [PATCH] Add implementation for part 2. --- 2017/README.md | 1 + 2017/day-20/solution.r | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/2017/README.md b/2017/README.md index 2fadc8d..5701402 100644 --- a/2017/README.md +++ b/2017/README.md @@ -27,6 +27,7 @@ The current plan, in no particular order: - [x] PHP - [Day 19](./day-19/solution.php) - [ ] Prolog - [ ] Python +- [x] R - [Day 20](./day-20/solution.r) - [x] Ruby - [Day 08](./day-08/solution.rb) - [x] Rust - [Day 14](./day-14/solution.rs) - [x] Scala - [Day 11](./day-11/solution.scala) diff --git a/2017/day-20/solution.r b/2017/day-20/solution.r index 57d6b9b..c20a625 100755 --- a/2017/day-20/solution.r +++ b/2017/day-20/solution.r @@ -14,4 +14,16 @@ speeds <- rowSums(abs(input[,4:6])) perm <- order(accs, speeds) print(perm[1] - 1) +for (i in 1:100) { + # Update positions, speeds + for (coord in 1:3) { + input[,coord+3] <- input[,coord+3] + input[,coord+6] + input[,coord] <- input[,coord] + input[,coord+3] + } + dups = !(duplicated(input[,1:3]) | duplicated(input[,1:3], fromLast=TRUE)) + + input = input[dups,] +} + +print(nrow(input))