# .font: font.text_2
2020-07-10 16:23 DarkStoorM  
# .font: font.text_1
I think this might be too hard :D   
  
this one is more technical. I might provide some hints later

# .font: font.text_2
2020-07-10 16:57 Arno  
# .font: font.text_1
hmmm... i see a lot of dirt and very little boulders...  
  
may we assume that, in line with previous puzzles, the rng itself and the seed value (10) are still the same?

# .font: font.text_2
2020-07-10 17:06 DarkStoorM  
# .font: font.text_1
no values were changed, RNG is the same ;)  
There was one small change made outside the values and the RNG, which is really interesting.  
  
I'd like to give a hint, but I think that would almost be the solution :D

# .font: font.text_2
2020-07-10 17:37 nesdori  
# .font: font.text_1
 darkstoorm , no hints yet please.. :)

# .font: font.text_2
2020-07-10 17:44 DarkStoorM  
# .font: font.text_1
Alright!  
  
I expect  nesdori  to get this one first :D

# .font: font.text_2
2020-07-10 18:05 nesdori  
# .font: font.text_1
ok. i can already verbally explain what's happening:  
  
if the object which is randomly generated is a boulder, it's replaced with the next object. all other objects are handled normally. so a boulder can only exist if there's another boulder next to it in the original cave.  
  
this can probably be achieved with some simple bit twiddle instead of if-clause :)

# .font: font.text_2
2020-07-10 18:19 DarkStoorM  
# .font: font.text_1
That's a 50/50 ;)

# .font: font.text_2
2020-07-10 18:20 nesdori  
# .font: font.text_1
hmm, now that i took a closer look there's one exception to this rule: the rightmost boulder sitting on top of the upper wall exists although there's no boulder after it in the original cave. that's the only exception. so indeed this effect is achieved with some bit twiddling or there's a layout error :)

# .font: font.text_2
2020-07-10 18:38 DarkStoorM  
# .font: font.text_1
Ahhhh!  nesdori , Good catch, the boulder sitting on the wall should not be there

# .font: font.text_2
2020-07-10 18:40 DarkStoorM  
# .font: font.text_1
BUT! You are almost there! No bit twiddling, though

# .font: font.text_2
2020-07-10 18:52 nesdori  
# .font: font.text_1
well i don't know what to add because now that the rightmost wall boulder is fixed my verbal rule can be successfully applied to all objects. if there's something else there's no visible example of it :)

# .font: font.text_2
2020-07-10 22:18 DarkStoorM  
# .font: font.text_1
Tell me when it's okay to reveal, because I think I went too far with this one :P

# .font: font.text_2
2020-07-11 09:53 nesdori  
# .font: font.text_1
well like i said i really don't know what is missing from my answer. are you looking for some actual implementation of this filling effect? i'm pretty sure that involves checking the next object somehow. here are three different methods to achieve the effect:  
  
1) two-pass method: first fill the cave normally. then scan the cave objects again and if a boulder is detected, replace it with the next object. repeat for each object.  
  
2) pre-fetch method: if a random object is non-boulder, place it normally. if an object is a boulder, call the rng again to fetch a new random value and put an object based on that value. in that case proceed to the next position without calling the rng again. do the boulder check again for the latest object and act accordingly. repeat for each object.  
  
3) post-fix method: add a variable telling that what was the previous object which was placed on the cave. when a new object is determined by a random value, check if the previous object was a boulder. if it was, replace the previously put boulder with the new object.  
  
if you still aren't satisfied, give me a hint that what are you looking for.. :)

# .font: font.text_2
2020-07-11 12:05 DarkStoorM  
# .font: font.text_1
Ahh, I think I didn't understand earlier, and you were correct, sorry :D  
  
I had a small idea for a "reroll" experiment, where if the rolled number is in the diamond range (0-8), call the RNG again on a copy of the seed1 and seed2 and then proceed, while leaving seed1/seed2 unmodified in the next regular call. The result was that every next picked value was high enough so only one diamond was placed (the next object was not a diamond)... and it was right on the wall, so no diamonds in the cave. I changed it to check if it's a boulder, then pick the next number no matter what.  
  
I should double check it earlier, because it's like you said: "if it's a boulder, replace it with the next object - and now it makes things easier just after comparing two results. So it was always (boulders - 1) in the pattern.  
  
The initial result would be: "If it's a boulder, leave it. If not, pick the next number and place that object".  
  
Initially, the idea was called "second chance" where if the picked number was in the 0-8 range, then use it. If it was too high to place a diamond, then reroll again, but I think that would give the answer away. I checked it now, and this idea won't work with any of the PRNGs, because it will always result in duplicates if the object to the right is a diamond:  
<a href="https://i.imgur.com/AbkUNYM.png" target="external">https://i.imgur.com/AbkUNYM.png</a>