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
|
Sort a list of complex numbers based on far they are from the origin.
4327 Solvers
367 Solvers
238 Solvers
465 Solvers
569 Solvers
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!