The first thing is, they all tended to have a really strong grounding in mathematics, around logic, statistics and related subjects. They had underlying conceptual models grounded in the formalisms of a maths discipline.
The second thing is that they had very high functioning reasoning skills. If <this> then <that> was very strong in their ability to see inherent linkages between specific and general, to take an abstraction and apply it, or to find a mapping to that concept in another domain, work in that domain, and map back into the field which applied in the first instance.
The third thing is that they seemed to go from solution hypothesis to code very naturally: they didn't hesitate to follow a code path, there was no sense of "suck it and see" -To me, this is the bit which makes me really wonder WTF was going on because my own code is littered with "this failed" attempts to get to the functional outcome.
So, there's a lot of maths, a bit of process in abstract reasoning and a giant ocean tanker of confidence.
I have watched these people sit for 6 hours exploring how to use assembler to shave two instruction cycles off a task. The focus required to model the behaviour of the system and do this in a pre-omptimising compiler world, in the tools of the machine, were amazing.