[C147_E] Refactored code to make more readable, implementation is buggy

- 21 returns a combination of 8 8 7 3... more than 21. Something is wrong
  somewhere and will be fixed.