4 ms·
Wouldn't len(str(num)) be adequate here? This is a quite literal translation of what the code should be doing: measuring the length of the text representation o
by nicbou 2y ago
Wouldn't len(str(num)) be adequate here? This is a quite literal translation of what the code should be doing: measuring the length of the text representation of a number. The mathematical approach seems a little convoluted, although it serves the purpose of teaching a lesson.
- bittumenEntity 2y agoAt the bottom of the article they mention that this was discouraged because they hadn't covered strings in the course yet
- MrJohz 2y agoAnd more importantly, because it sidesteps the interesting pedagogy around edge cases and testing that the instructor is interested in.
- vsnf 2y agoThe correct solution here is to give credit for the problem to acknowledge genuine clever problem solving, and then offer extra credit for doing it the pedagogical way.
- MrJohz 2y agoThere is no correct solution here. A classroom is not a test environment. The goal is to learn, and the point of the exercises is to teach a specific concept. If a student finds a different way around the problem, that may show that they're already proficient in other skills, but they haven't necessarily learned the concept being taught in this class yet. A good instructor would probably acknowledge the solution, but add extra boundaries to the task to get the student to explore the problem in a way that lets them encounter the testing difficulties discussed here. It's like smuggling a calculator into a class about mental maths strategies: you'll probably do very well in the final test, but you won't have learned anything!
- deleted 2y ago[deleted]
- _xnmw 2y agoLen() and str() are a loop under the hood.
- emidln 2y agolen() is an O(1) lookup of the stored length on the unicode/bytes object in Python.
- qwerty1793 2y agoBe careful, doing str(num) requires python to convert the binary representation it has num stored as to a decimal. (C)Python implements a quadratic time change of basis algorithm. This is slow enough that now for very large inputs python will raise "ValueError: Exceeds the limit (4300 digits) for integer string conversion"
- smarklefunf 2y agoassuming python