I think I understand why I am not getting the same number of steps as you Ruud and I'm not happy about it.
First we need to agree on a definition of a step. For me it is: given the current state of the puzzle, what can i infer from it immediately.
In the inferior puzzles thread this is not a problem. What singles can I infer from the state of the puzzle? work them all out without
placing them, then place them all in one sweep. Some singles could be considered hidden singles or naked singles, but it doesn't matter, because we place them all at the same time.
With ulterior puzzles there are two very different types of things, there are the pointing
pairs and there are the hidden singles. I think at the start of the puzzle we should ask what pointing pairs are there? but not do any of the eliminations.
Then do all the eliminations in one sweep. Then ask what hidden singles there are, without placing them, then place them all in one sweep. Then rinse and repeat.
It doesn't look like this is what you're doing. It looks like you're applying the eliminations from pointing pairs as soon as you see them. Here's one reason why I
disagree with this: Suppose 5 is a candidate in r1c1, r1c3, r2c3 and r3c3 and nowhere else in the top left 3x3 box. If there is a pointing pair on 5s in row 1, then
if you apply the eliminations immediately you uncover a pointing pair in 5s in column 3. This pointing pair cannot be inferred immediately from the current position,
so should not be counted on this step, but I fear your current method of counting steps would count it on this step. Now if the pointing pair on row 1 uncovers a hidden
single, then this will be counted on this step, as we don't search for hidden singles until we have carried out all the eliminations from pointing pairs. I have no problem
with pointing pairs uncovering hidden singles on the same step, but they shouldn't uncover other pointing pairs on the same step.