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))