What is the grading scheme, how are different grades assigned?

A. This is the grading scheme currently used, although this may change in the future.

Simple
Naked Single only or Hidden Single only (depending upon a configuration option.)
Easy
(NumHiddenSingle > 0) and (NumNakedSingle > 0)
Mild
(NumNakedPairs + NumHiddenPairs + NumBlockBlockInteractions + NumBlockColumnRowInteractions) > 0
Moderate
(NumBlockBlockInteractions + NumBlockColumnRowInteractions > 0) and
(NumNakedPairs + NumHiddenPairs > 0)
Hard
(NumXWing + NumXYWing + NumXYZWing + NumXYChain + NumForcingChains + NumColouring + NumNakedTriplets + NumHiddenTriplets) > 0
Very Hard
(NumXWing + NumXYWing + NumXYZWing + NumXYChain + NumForcingChains + NumColouring > 1) or
(NumNakedTriplets + NumHiddenTriplets > 2)
Fiendish
(NumNakedQuads + NumHiddenQuads + NumSwordfish > 0) or
(NumXWing + NumXYWing + NumXYZWing + NumXYChain + NumForcingChains + NumColouring > 2)
Diabolical
(NumTrial-and-Error > 0) or (NumNakedQuads + NumHiddenQuads + NumSwordfish > 1) or
(NumXWing + NumXYWing + NumXYZWing + NumXYChain +  NumForcingChains + NumColouring > 4)