Chess technically has a finite number of moves. Although its a huge number and some have theorized its larger than the number of atoms in the known universe.
"John Tromp and Peter Österlund estimated the number of legal chess positions with a 95% confidence level at ( 4.822 ± 0.028 ) × 10^44, based on an efficiently computable bijection between integers and chess positions."
For large numbers, you might get a stack overflow. Depends on whether the compiler recognizes that it's a tail recursion and then handles it appropriately.
As for why Lemmy ignores single newlines, that's because it uses Markdown for its comment syntax, which happens to handle newlines that way. If you want a single newline to display, you have to add two spaces at the end of the line.
Here, you really would have wanted to use a code block, though, which you can create with backticks
```
like
so.
```
Normally, this would display "like so." in a monospace font and handle newlines as you expected:
I've seen someone code that way. Not since high school, but that's a way that some people think coding works when they start out writing code.
This person was trying to write a game in (trigger warning: nostalgia) QBasic and had it drawing kindof a Pacman kind of character. And in pseudocode basically what he was doing was:
// Draw character with mouth open at (100, 100)
moveCursorTo(100, 100)
drawLineFromCursorAndMoveCursor(116, 100)
drawLineFromCursorAndMoveCursor(108, 108)
drawLineFromCursorAndMoveCursor(116, 116)
drawLineFromCursorAndMoveCursor(100, 116)
drawLineFromCursorAndMoveCursor(100, 100)
// Wait for half a second.
sleepSeconds(0.5)
// Draw character with mouth closed at (101, 100)
moveCursorTo(101, 100)
drawLineFromCursorAndMoveCursor(109, 100)
drawLineFromCursorAndMoveCursor(117, 108)
drawLineFromCursorAndMoveCursor(109, 116)
drawLineFromCursorAndMoveCursor(101, 116)
drawLineFromCursorAndMoveCursor(101, 100)
// Wait for half a second.
sleepSeconds(0.5)
// Draw character with mouth open at (102, 100)
moveCursorTo(102, 100)
drawLineFromCursorAndMoveCursor(118, 100)
drawLineFromCursorAndMoveCursor(110, 108)
drawLineFromCursorAndMoveCursor(118, 116)
drawLineFromCursorAndMoveCursor(110, 116)
drawLineFromCursorAndMoveCursor(102, 100)
// Wait for half a second.
sleepSeconds(0.5)
...
He hadn't gotten to the point of working in user controls. (Like "change direction to 'up' when user presses the 'up' key" or whatever.) And understandably had no idea how that would work if/when he got that far.
Reminds me of when I downloaded Tic Tac Toe for my graphing calculator in high school. It wasn't this verbose, but the original author copy pasted the logic for each turn. Even I knew this was awful, so I refactored it to use a loop.
When I was learning c++ in high school, I made a working 10x10 implementation of Conway's Life before I had learned about arrays.
Even then I didn't do it like this. Just had 200 variables for the front and back buffers, and one big function with individual checks for each grid coord variable to check it's neighbors.
I imagine there are a few out there, but unicode has chess symbols so it's certainly easy enough to do if you have a language, font, and terminal that supports it.
Reminds me of my lottery number randomizer in VB 3.0 I calculated 10 rows and checked each input box against the others without any loops, and then each row was just copy pasted. 🤦