mirror of
https://github.com/bertptrs/adventofcode.git
synced 2025-12-25 12:50:32 +01:00
Solution for day 6 in matlab.
This commit is contained in:
@@ -16,6 +16,7 @@ The current plan, in no particular order:
|
||||
- [ ] Haskell
|
||||
- [ ] Java
|
||||
- [ ] Kotlin
|
||||
- [x] Matlab - [Day 06](./day-06)
|
||||
- [ ] Node.js
|
||||
- [ ] Objective C
|
||||
- [x] Perl - [Day 05](./day-05/solution.pl)
|
||||
|
||||
7
2017/day-06/README.md
Normal file
7
2017/day-06/README.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# Usage
|
||||
|
||||
Since this solution is in matlab, it works a bit differently. You can
|
||||
solve part 1 by calling `solution([original division of wealth])`, which
|
||||
returns the number of cycles and the point at which it repeated. You can
|
||||
then call `solution` again with that repetition point to get the length
|
||||
of that cycle.
|
||||
20
2017/day-06/solution.m
Normal file
20
2017/day-06/solution.m
Normal file
@@ -0,0 +1,20 @@
|
||||
function [cycles,repeat] = solution (division)
|
||||
division = vec(division);
|
||||
states = zeros(0, size(division)(1));
|
||||
|
||||
while ! ismember(transpose(division), states, "rows")
|
||||
states = [states; transpose(division)];
|
||||
|
||||
[maxval, maxindex] = max(division);
|
||||
division(maxindex) = 0;
|
||||
|
||||
for i = 1:maxval
|
||||
targetIndex = mod(maxindex + i - 1, size(division)(1)) + 1;
|
||||
division(targetIndex) += 1;
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
cycles = size(states)(1);
|
||||
repeat = division;
|
||||
endfunction
|
||||
Reference in New Issue
Block a user