Show de bola @JeanJr, só uma observação no "Refatorando o terceiro caso", o código está igual o resultado do segundo caso.

Valeu demais meu amigo! Corrigido