He estado participando en a programming contest y one of the problems 'datos de entrada incluyen un número fraccionario en formato decimal: 0.75
es un ejemplo.Cómo analizar una fracción decimal en Rational en Haskell?
Analizando eso en Double
es trivial (puedo usar read
para eso), pero la pérdida de precisión es dolorosa. Hay que tener mucho cuidado con las comparaciones Double
(no lo estaba), lo que parece redundante ya que uno tiene el tipo de datos Rational
en Haskell.
Al intentar utilizar eso, he descubierto que a read
un Rational
uno tiene que proporcionar una cadena con el siguiente formato: numerator % denominator
, lo cual, obviamente, no tengo.
Entonces, la pregunta es:
¿Cuál es la forma más fácil de analizar una representación decimal de una fracción en Rational
?
El número de dependencias externas también debe tenerse en cuenta, ya que no puedo instalar bibliotecas adicionales en el juez en línea.
Gracias! Esto funciona. – Rotsor
es posible que desee agregar 'readSigned' si desea poder leer los números negativos:' fst. head $ readSigned readFloat "-3.14" :: Rational' – newacct