Solution for day 6 in matlab.

This commit is contained in:
2017-12-06 12:14:15 +01:00
parent dcff672eeb
commit ed9f1f7c7d
3 changed files with 28 additions and 0 deletions

View File

@@ -16,6 +16,7 @@ The current plan, in no particular order:
- [ ] Haskell - [ ] Haskell
- [ ] Java - [ ] Java
- [ ] Kotlin - [ ] Kotlin
- [x] Matlab - [Day 06](./day-06)
- [ ] Node.js - [ ] Node.js
- [ ] Objective C - [ ] Objective C
- [x] Perl - [Day 05](./day-05/solution.pl) - [x] Perl - [Day 05](./day-05/solution.pl)

7
2017/day-06/README.md Normal file
View 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
View 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