Enforcing maximum-transition-run code constraints and low-density parity-check decoding