Menu Close

Pequeño test de inteligencia

Enunciado

-- Recientemente se publicó en la Red un pequeño test de inteligencia
-- cuyo objetivo consistía en descubrir una función a partir de una
-- colección de ejemplos. Los ejemplos eran los siguientes
--    f 6  4 == 210
--    f 9  2 == 711
--    f 8  5 == 313
--    f 5  2 == 37
--    f 7  6 == 113
--    f 9  8 == 117
--    f 10 6 == 416
--    f 15 3 == 1218
--
-- Definir la función 
--    f :: Int -> Int -> Int
-- tal que f cubra los ejemplos anteriores y la definición de f sea lo
-- más corta posible (en número de palabras).

Soluciones

f1 :: Int -> Int -> Int
f1 x y = read (show (x-y) ++ show (x+y))
Inicial

3 soluciones de “Pequeño test de inteligencia

  1. Rafa

    No sé si estará muy mal, pero al menos cumple para todos los ejemplos.

    f :: Int -> Int -> Int
    f x y = 10^(length (digitos (x+y)))*(x-y)+x+y
     
    digitos x = [read [z] :: Int | z <- show x]
  2. Jesús Navas Orozco
    f :: Int -> Int -> Int
    f x y = read (show(x-y) ++ show (x+y))
  3. Pedro Martín Chávez
    f :: Int -> Int -> Int
    f x y = (x-y)*10^length (show (x+y)) + x+y

Escribe tu solución

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.