how can i simplify??
Try this!:D
c=n;
while n>1
if mod(n,2)
n =3*n+1;
else
n =n/2;
end
c=[c n];
end
Thats right> construct c thru concat operator [..] instead of indexing it.
Index "i" doesn't care because it don't care the size of the sequence.
Test | Status | Code Input and Output |
---|---|---|
1 | Pass |
n = 1;
c_correct = 1;
assert(isequal(collatz(n),c_correct))
i =
1
c =
1
|
2 | Pass |
n = 2;
c_correct = [2 1];
assert(isequal(collatz(n),c_correct))
i =
1
c =
2
c =
2 1
n =
1
i =
2
|
3 | Pass |
n = 5;
c_correct = [5 16 8 4 2 1];
assert(isequal(collatz(n),c_correct))
i =
1
c =
5
c =
5 16
n =
16
i =
2
c =
5 16 8
n =
8
i =
3
c =
5 16 8 4
n =
4
i =
4
c =
5 16 8 4 2
n =
2
i =
5
c =
5 16 8 4 2 1
n =
1
i =
6
|
4 | Pass |
n = 22;
c_correct = [22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1];
assert(isequal(collatz(n),c_correct))
i =
1
c =
22
c =
22 11
n =
11
i =
2
c =
22 11 34
n =
34
i =
3
c =
22 11 34 17
n =
17
i =
4
c =
22 11 34 17 52
n =
52
i =
5
c =
22 11 34 17 52 26
n =
26
i =
6
c =
22 11 34 17 52 26 13
n =
13
i =
7
c =
22 11 34 17 52 26 13 40
n =
40
i =
8
c =
22 11 34 17 52 26 13 40 20
n =
20
i =
9
c =
22 11 34 17 52 26 13 40 20 10
n =
10
i =
10
c =
22 11 34 17 52 26 13 40 20 10 5
n =
5
i =
11
c =
22 11 34 17 52 26 13 40 20 10 5 16
n =
16
i =
12
c =
22 11 34 17 52 26 13 40 20 10 5 16 8
n =
8
i =
13
c =
22 11 34 17 52 26 13 40 20 10 5 16 8 4
n =
4
i =
14
c =
22 11 34 17 52 26 13 40 20 10 5 16 8 4 2
n =
2
i =
15
c =
22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
n =
1
i =
16
|
Check to see if a Sudoku Puzzle is Solved
279 Solvers
Is my wife right? Now with even more wrong husband
1241 Solvers
369 Solvers
convert matrix to single column
306 Solvers
600 Solvers
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!