Problem 57492. Compute the Tetris sequence
Solution Stats
Problem Comments

5 Comments
This should really be titled "Compute the Tetris sequence, FAST", since the challenge (for me anyway) isn't computing it as much as doing it fast enough to not timeout on the Cody test suite. :P
Yes, that's part of the challenge. I was struggling to get beyond the list that is available at [redacted]. Preallocating an array, which bumps up the Cody score, helped to reduce the execution time. I also used a command that I've never tried before, though I've used related commands.
Yeah, preallocation was the first thing I did (and it helped cut execution time to about one quarter). After that I spent about two hours profiling the code and trying out different kinds of caching to avoid recomputing binary expansions, but they were all slower than the benchmark code in the end (dictionaries in particular). Same for using bitand, that made things (much) worse.
I may try again, but I'm not seeing any obvious avenues for refinement right now.
Side note: disallowing "if" (to combat cheating?) is a pretty tough restriction.
OK, I removed the restriction on IF. In any case, David found a clever way around that restriction (as well as submitted legitimate solutions.)
You did try the command that I hinted at. I did not compute any binary representations.
Yeah, not being able to used if statements required me to get creative too, doubly so since (in the interest of cutting down running time) I did not want to compute a result needlessly. Turns out that while loops can be used as a sort of poor man's if.
Perhaps I'll try that function again then. I was really surprised that it made the code run (much) slower, I would've thought that it was implemented in some optimized way that would beat handcoded dec2bin()'s by a handy amount. It might be that I did not use it in the optimal manner.
Solution Comments

2 Comments
tetris(tetris(tetris(tetris(10020)))) = 24800 (probably)
Confirmed by OEIS!

1 Comment
There is a conjecture in OEIS that says that tetris(n) probably would not exceed 4*n. This is correct in all the tests in this problem.

1 Comment
We have a breakfast for emeritus faculty each semester. Two of our retired profs played golf together regularly. During one breakfast one of the pair announced, "I got a new driver." His partner said, "I found a new way to cheat." This solution reminded me of that story.
Problem Recent Solvers4
Suggested Problems

121 Solvers

Convert Roman to Arabic Numerals
88 Solvers

Vectorize the digits of an Integer
304 Solvers

Generate N equally spaced intervals between L and L
797 Solvers

444 Solvers
More from this Author192
Problem Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!