-
Notifications
You must be signed in to change notification settings - Fork 1
/
Mayor_numero_con_dos_digitos_dados.hs
37 lines (30 loc) · 1.15 KB
/
Mayor_numero_con_dos_digitos_dados.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
-- Mayor_numero_con_dos_digitos_dados.hs
-- Mayor número con dos dígitos dados.
-- José A. Alonso Jiménez <https://jaalonso.github.io>
-- Sevilla, 8-septiembre-2022
-- ---------------------------------------------------------------------
-- ---------------------------------------------------------------------
-- Definir la función
-- numeroMayor :: Int -> Int -> Int
-- tal que (numeroMayor x y) es el mayor número de dos cifras que puede
-- construirse con los dígitos x e y. Por ejemplo,
-- numeroMayor 2 5 == 52
-- numeroMayor 5 2 == 52
-- ---------------------------------------------------------------------
module Mayor_numero_con_dos_digitos_dados where
-- 1ª definición:
numeroMayor1 :: Int -> Int -> Int
numeroMayor1 x y = 10 * max x y + min x y
-- 2ª definición:
numeroMayor2 :: Int -> Int -> Int
numeroMayor2 x y | x > y = 10*x+y
| otherwise = 10*y+x
-- Comprobación de equivalencia
-- ============================
-- La propiedad es
prop_numeroMayor :: Bool
prop_numeroMayor =
and [numeroMayor1 x y == numeroMayor2 x y | x <- [0..9], y <- [0..9]]
-- La comprobación es
-- λ> prop_numeroMayor
-- True