Siguiente equidigital
Dos números son equidigitales si tienen el mismo multiconjunto de dígitos. Por ejemplo, 2021 y 2120 son equidigitales ya que ambos tiene a {0,1,2,2} como su multiconjunto de dígitos.
Definir la función
siguienteEquidigital :: Integer -> Maybe Integer
tal que (siguienteEquidigital n) es precisamente el menor número equidigital con n que es mayor que n (es decir, (Just x) si x es dicho número o Nothing si no hay ningún número equidigital con n que sea mayor que n). Por ejemplo,
siguienteEquidigital 12 == Just 21 siguienteEquidigital 21 == Nothing siguienteEquidigital 513 == Just 531 siguienteEquidigital 531 == Nothing siguienteEquidigital 2021 == Just 2102 siguienteEquidigital 2102 == Just 2120 siguienteEquidigital 2120 == Just 2201 siguienteEquidigital 2201 == Just 2210 siguienteEquidigital 2210 == Nothing fmap (`mod` 1000) (siguienteEquidigital (2^(10^5))) == Just 637