While cabbage is good, it is also true that a bit of mathematics is needed to determine which rooms are impossible to auspiciously tile. Is that mathematics difficult to work out? I don't really know, because I didn't work it out myself. I drew pictures on paper for about an hour until I found a way to tile 6x10 and 8x10 rooms and thought I understood why the same approach didn't work for a 7x10 room. Then I read Dean Hickerson's note linked to in the postjcyr wrote: ↑Tue Dec 03, 2019 4:33 amThe Tatami problem is not a programming problem. It's more a mathematics or logic problem. The notion that something complicated can be made easily understood with a few comments, or many for that matter, seems a little far fetched and well beyond the scope of what beginners need. A beginner should focus on the syntax and semantics of a language, not the complexities of combinatorial algorithms.
Unless of course the only point is accumulating cabbages.
https://www.raspberrypi.org/forums/view ... 5#p1560632
I don't know if John is still following this thread or not, but if he is, thanks for finding that note. Those pages covered the mathematics so I could proceed directly to the software engineering needed to write an efficient program. It also helped to look at the sample code included in the post
https://www.raspberrypi.org/forums/view ... 5#p1560751
While it sounds good to study syntax and semantics, my personal experience is that I cannot learn any programming language without actually writing a program. Similarly, I find it difficult to compare languages without writing code in both or at least reading code written by others. To keep our discussion of what makes a good first programming language based on fact, we actually write programs. The novelty of writing code to solve problems distinguishes what we do here from educational philosophy and theoretically prevents the eruption of a language war based on emotional attachments. From this point of view it is fortunate that a variety of programming languages and techniques can be used to solve the present challenge.
Although I believe the tatami challenge could be solved by someone who just learned programming, such submissions are notably missing. On the other hand, the entries in Rust were written by someone just learning that language as well as my entry in Visual Basic (for what that's worth). The same is true with Haskell, though the code has yet to be submitted. I've learned surprising things about C--also about profiling, OpenMP, MPI and the characteristics of particular compilers and hardware architectures. I'm a beginner when learning anything new and this forum has encouraged me to learn many new things.