function tally = collatz1 (ubound) % tally = [1 0;2 0]; for ti = 1 : ubound nums_passed = []; tt = ti; while (tt ~= 1) tt = ((mod (tt, 2)) * ((3 * tt) + 1)) + ((1 - mod (tt, 2)) * (tt / 2)); nums_passed = ([nums_passed tt]); end num_steps = (length (nums_passed)); for tj = 1 : num_steps idx = find (nums_passed(tj) == tally(:,1)); if (isempty (idx)) tally(end+1,:) = [nums_passed(tj) 1]; else tally(idx,2) = tally(idx,2) + 1; end end end