Marbelous, size 36, es1024Marbelous, size 36, es1024
9C Dr=0 ^3 +O +O!! :Dr }0 ++ /\{>{0 There is no trailing line break, so that we remain at 9.
After another very fruitful discussion session with Sp3000, at last, one of the Marbelous submissions is cracked! :)
I can't really explain Marbelous in the scope of this answer, so if you have no idea what I'm talking about, have a look at this reference.
Let's look at the output first: it's 100 ones and zeros, 8 of them at a time (with some offset in the cycle). This suggests that we have some loop that increments a marble 100 times, and printed 0 or 1 depending on the 4th byte. Both of those are pretty convenient because, starting at 9C (in hex) is 156. Incrementing 100 times overflows, so we can abort the loop with a =0. Furthermore, we have access to the fourth bit with ^3. And if we increment before outputting, then we will also correctly start with 3 ones.
Setting this up was a bit trickier though. Especially, since we got really stuck on the idea of naming the board Or, so that we would have the Ds as hex digits (and we also thought there were two ++ devices). But we just couldn't find a way to add 48 to the 0 or 1 resulting from ^3 (which is necessary to turn them into 0 or 1 characters). But at some point I had an epiphany, and realised that O is 24 in base 36, so we could actually increment by 48 using +O twice.
The rest was fairly simple to deduct from the available characters and the requirement to have no empty cells in the boards. In particular, there is no way to move a marble upwards in this, so the only way to create a loop is horizontally. The clue here was the cylindrical board, which allows you to just constantly push things to the right, until =0 lets the marble fall. This also meant that the ++ device had to go inside the subboard, because you can't prevent it from letting the marble fall.
So in summary:
9Cis a literal marble which starts its life at value 156.- There is a subboard
Drwhich takes in a marble, increments it, and spits out the result both downwards and to the right. =0lets the result fall if we hit0, otherwise pushes it to the right, and back intoDr.^3takes the marble that falls out ofDrand returns 0 or 1 depending on the 4th bit.+Oincrements by 24 (twice).- When the result falls off the bottom of the main board, the corresponding ASCII character is printed.
!!terminates execution. This isn't necessary to break the loop (that wouldn't continue anyway), but it swallows the null byte, that would be printed if the00marble were allowed to fall off the board. It's important to put the!!in the last row, otherwise the final0character wouldn't have time to get printed.