UMAblas/apuntes/PDAv/p2004-2005/puzzles...Puzzles, Jue gos Matem¶ atic os y Pr o gr amaci¶ on F...

87
Puzzles, Juegos Matem´ aticos y Programaci´ on Funcional (CON EJERCICIOS). Marzo, 2005 1 Puzzles, Juegos Matem´ aticos y Programaci´ on Funcional Blas Ruiz Dpto. de Lenguajes y Ciencias de la Computaci´ on. Universidad de M´ alaga. www.lcc.uma.es\∼blas La matem´ atica recreativa (MatRec)(recreational mathema- tics) es una disciplina que incluye juegos matem´ aticos : ogicos, puzzles, acertijos, problemas de ingenio, . . . El Journal of Recreational Mathematics es la publicaci´ on m´ as seria sobre esta disciplina. (http://www.ashbacher.com/jrecmath.stm) Tradicionalmente la MatRec ha sido utilizada para motivar: X la l´ ogica, aritm´ etica, geometr´ ıa . . . elementales. Hoy a˜ nadimos a la lista anterior: la ense˜ nanza de la programaci´ on .

Transcript of UMAblas/apuntes/PDAv/p2004-2005/puzzles...Puzzles, Jue gos Matem¶ atic os y Pr o gr amaci¶ on F...

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    1

    Puzzle

    s,JuegosMatemático

    syProgramació

    nFuncio

    nal

    BlasRuiz

    Dpto.deLenguajesyCiencia

    sdela

    Computació

    n.Universid

    addeMálaga.

    ww

    w.lcc.u

    ma.e

    s\∼

    bla

    s

    Lamatem

    áticarecreativa

    (MatR

    ec)(recreation

    almathem

    a-tics)

    esuna

    disciplinaque

    incluyejuegos

    matem

    áticos :

    lógicos,puzzles,

    acertijos,problem

    asde

    ingenio,...

    ElJou

    rnal

    ofRecreation

    alMathem

    aticses

    lapublicación

    más

    seriasobre

    estadisciplina.

    ( http://www.ashbacher.com

    /jrecmath.stm

    )

    Tradicionalm

    entelaM

    atR

    echa

    sidoutilizada

    paramotivar:

    Xla

    lógica,aritm

    ética,geom

    etŕıa...elem

    entales.Hoy

    añadimos

    alalista

    anterior:laenseñanza

    dela

    programación.

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    2

    Objetiv

    os

    1.Motivar

    losprincipios

    delaProgram

    aciónFuncional(P

    rogFun)

    v́ıaejem

    ploslúdicos

    extráıdosde

    laM

    atR

    ec.

    2.Ilustrar

    lascaracteŕısticas

    esencialesde

    unlenguaje

    funcionalmoderno

    comoHaskell:

    •tipifi

    caciónfuerte

    •defi

    nicionescon

    patrones•estructuras

    dedatos

    ...•¡program

    aselegantes!

    3.Justifi

    carlas

    construccionesesenciales

    delaProgFun:

    •com

    posición

    defunciones

    •listas

    por

    comprensión

    ...

    Prin

    cipio

    Elección

    deproblem

    asintroductorios

    (puzzles)que

    sean

    •elem

    entales•no

    triviales•resolubles

    usandolo

    esencialde

    laProgFun

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    3

    Matem

    áticoscon

    aportaciones

    importantes

    enM

    atR

    ec:

    Martin

    Gardner

    (1914-).Autor

    de100

    libros;célebre

    por

    sucolum

    naMathem

    aticalGam

    esen

    Scie

    ntifi

    cAmerica

    n.

    Inspiración

    ¡ajá!(1978)

    (Lab

    or,1981)

    Douglas

    Hofstadter

    (1945-).Sulibro

    más

    conocidoes

    Gödel,

    Escher,

    Bach:

    anEtern

    alGolden

    Braid

    (1979).Sucesor

    deMartin

    Gardner

    enla

    columna

    Mathem

    aticalGam

    es.

    JohnConw

    ay(1937-).T

    ieneap

    ortacionesim

    portantes

    enteoŕıa

    degrup

    os,teoŕıa

    denúm

    eros,com

    binatorial

    gametheory,

    codingtheory.

    Inventordel

    Juegode

    laVida

    yotros

    célebrespuzzles,

    algunosaún

    noresueltos.

    OnNumbers

    andGam

    es,WinningWays

    foryou

    rMathem

    aticalPlays.

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    4

    Charles

    Dodgson

    (1832-1898)(Lew

    isCarroll).P

    rofesorde

    ma-

    temáticas

    dela

    Universidad

    deOxford

    cercade

    50años;

    es-cribió

    dosobras

    maestras:

    Alicia

    enel

    páısde

    lasmaravi-

    llas(1864),

    yA

    travésdel

    espejo(1871).

    Sym

    bolicLogic

    I(1896),

    ...(http://w

    ww.guiascostarica.com

    )

    Raym

    ondSmullyan

    (1919-).Lógico

    norteamericano.

    Apasio-

    nadopor

    losproblem

    asde

    ajedrez.Doctorado

    deAlonzo

    Chur-

    chen

    Princeton

    (1959)(sistem

    asform

    ales,teoŕıa

    dela

    recur-sión,

    ...)Entre

    suslibros

    célebres:

    ¿Cóm

    ose

    llamaeste

    libro?Elen

    igmade

    Drácu

    layotros

    pasatiempos

    lógicos ,Ed.

    Cátedra

    (1988).W

    hatis

    thenam

    eof

    this

    book?(1978)

    The

    Lady

    orthe

    Tiger?

    Alice

    inpu

    zzle-land(A

    liciaen

    elPáıs

    dela

    Adivin

    anzas)

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    5

    MatR

    ec Puzzles

    Lógicos {

    Puzzle

    sconDiálogos

    ......

    Puzzles

    conDiálogos

    Dedu

    cirinform

    ación(repartida

    porun

    árbitroavarios

    oradores)apartir

    deundiálogo

    cuyas

    frasescon

    tienen

    pis-tas

    sobre:(1)

    datosdel

    problema,

    (2)iden

    tidadde

    losora-

    dores,(3)

    inform

    aciónsecreta

    dealgu

    nos

    oradores,...

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    6

    Puzzle

    sconsombreros

    Atribuido

    aSebelik

    (1983),generalizado

    por

    JConw

    ay,HFreu-

    denthal,M

    Gardner,

    ...

    En

    ciertahab

    itaciónse

    encuentran

    Seb

    elik,Paco

    yBlas

    enfila

    india.E

    notra

    contigu

    ahay

    cinco

    sombreros

    (2negros

    y3blan

    cos).Seap

    agala

    luz;u

    nárbitro

    toma

    tressom

    breros

    dela

    mesa

    ylos

    coloca

    enlas

    cabezas

    delas

    person

    aspara

    desp

    ués

    encen

    der

    laluz.

    Paco

    Blas

    Seb

    elik

    Acon

    tinuación

    seescu

    chael

    siguien

    tediálogo:

    Seb

    elik.—

    Yonosé

    elcolor

    demisom

    brero.

    Paco.—

    Enese

    caso,yo

    tampoco.

    ¿Dequécolor

    esel

    sombrero

    deBlas?

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    7

    Puzzle

    sconnúmerosenla

    frente

    (J.Conway)

    Johnelige

    dosnúm

    erosp,b∈

    [1..9]yun

    terceroy∈

    [2..18]escrib

    epen

    lafrente

    dePaco

    yben

    lade

    Blas

    escribeen

    unapizarra

    yjunto

    ala

    sumap+b

    10=

    5+?

    5?

    9=

    5+?

    Manuel

    desdeotra

    habitaciónescucha

    elsiguiente

    diálogo:

    Blas

    .—Nosé

    elnúmero

    demifren

    te.Paco

    .—Yotam

    poco.

    Blas

    .—Pues

    sigoigu

    al.Paco

    .—Y

    yo.

    Blas

    .—¡C

    asilo

    sé!Paco

    .—Y

    yo.Blas

    .—Meestoy

    pon

    iendonerv

    iosillo.Paco

    .—Yotam

    bién

    estoydelos

    nerv

    ios.Blas

    .—¡A

    já,ya

    séel

    mı́o!

    ¿Tiene

    sentidoel

    diálogo?¿S

    abeManuel

    losnúm

    eros?

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    8

    ElProblema

    P-S(H

    Freudenthal)

    Hans

    eligedos

    naturalesdistintos

    mayores

    que1,

    entregaelpro-

    ductoaPROD

    yla

    sumaaSUM

    ,que

    mantienen

    elsiguiente

    diálogo:SUM

    .—Nose

    cómovas

    aad

    ivinar

    misuma.

    PROD.—

    Enton

    ces,nosé

    tusuma

    SUM

    .—Pues

    yoya

    setu

    producto.

    ¿Cuáles

    eranlos

    números

    elegidospor

    Hans?

    XEnel

    problemaoriginal

    (1969)la

    segundafrase

    es:PROD.—

    ¡Ajá!,

    enton

    cesya

    sétu

    suma

    Información

    P-S

    EnLaF

    rente

    SigP

    revSom

    brerosglobal

    x,y

    >1

    p,b∈

    [1..9]p,b∈

    [1..9]2N

    ,3B

    x6=y

    x,y∈

    [2..18]pública

    Φpizarra

    (x,y

    Φprivada

    s,pfrente

    (x,y

    )frente

    (x,y

    )(p,b),

    b

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    9

    Enla

    isladelosCaballe

    rosylosṔıca

    ros

    Enesta

    islahabitan

    caballeros(sinceros)

    yṕıcaros

    (mentirosos).

    Ocasionalm

    entepuede

    visitarla

    islalos

    esṕıas(a

    vecesmienten

    yotras

    no).

    26Meencuentro

    conA,B

    yC.Pregunto

    aA:¿E

    resCaballero

    oṔıcaro?

    Larespuesta

    deA

    esininteligible,

    ypregunto

    aB:

    ¿Qué

    hadicho

    A?

    B.—

    Adice

    quees

    Ṕıcaro.

    C.—

    Nocreas

    aB,que

    estámintiendo.

    ¿Qué

    dijoA?¿Q

    uéson

    AyB?

    40Meencuentro

    condos

    habitantesque

    discuten:

    A.—

    Noeres

    unCaballero.

    B.—

    Tuśıque

    nolo

    eres.

    Dem

    uestraque

    unode

    elloses

    esṕıa,yuno

    deellos

    sincero.

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    10

    Enla

    isladelosCaballe

    rosylosṔıca

    ros(co

    nt)

    27Pregunto

    aA:¿cuantos

    caballeroshay

    entrevosotros?

    Lares-

    puestade

    Aes

    ininteligible,ypregunto

    aB:¿Q

    uéha

    dicho?

    B.—

    Adice

    quehay

    exactamente

    uncaballero

    entrenosotros.

    C.—

    Bestá

    mintiendo.

    ¿Qué

    dijoA?¿Q

    uiénesson

    A,B,C?Veo

    doshabitantes

    descan-sando

    bajoun

    árbol.

    Lepregunto

    auno

    deellos:

    ¿Esalguno

    devosotros

    uncaballero?

    Con

    larespuesta

    pudesab

    ersu

    per-

    sonalidad. ¿Qué

    eran?

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    11

    LosCofre

    sdePorcia

    Porcia

    decideelegir

    esposo,

    noatendiendo

    asu

    belleza

    obon-

    dad,sino

    asu

    agudezamental

    ointeligencia.

    Porcia

    tienevarios

    cofres(de

    oro,de

    plata,...algunos

    fabrica-dos

    por

    Bellini,

    ...).Elpretendiente

    debedescubrir

    elcofre

    consu

    retratode

    acuerdocon

    eldiálogo

    dadoen

    lasinscrip

    ciones.

    67aoro

    elretrato

    estáen

    estecofre

    plata

    elretrato

    no

    estáaqú

    ı

    plomo

    elretrato

    no

    estáen

    elcofre

    deoro

    69boro

    elretrato

    no

    estáaqú

    ı

    plataexactam

    ente

    unode

    estoscofres

    lohizo

    Bellin

    i

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    12

    ¿ViveelcondeDrácula?

    EnTransilvania

    hayvam

    pirosyhum

    anos,ycada

    unode

    ellospuede

    estarcuerdo

    oloco.

    Los

    humanos

    sonsinceros

    ylos

    vampiros

    embusteros.

    Por

    locontrario,

    loscuerdos

    creenque

    sonciertas

    lasprop

    osicionescier-

    tas,yfalsas

    lasfalsas.

    Sin

    embargo,

    loslocos

    creenque

    laspro-

    posiciones

    falsasson

    ciertasylas

    ciertas,falsas.

    (un

    humano

    locose

    comporta

    aparentem

    ente

    comoun

    embustero,p

    eroalcontrario

    queéste,m

    ientesin

    maldad).

    167Untransilvano

    dice:O

    soyhum

    anooestoy

    cuerdo.¿E

    sun

    vampiro?

    170Lepreguntam

    osaT:¿E

    resun

    vampiro

    Loco?

    ¿Qué

    respon-

    diósiyo

    adivinélo

    queera?

    172Otro

    dice:Estoy

    Loco.

    ¿Esun

    vampiro?

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    13

    176RSentabla

    unaconversación

    condos

    transilvanos:

    RS,dirigiéndose

    aA.—

    ¿EsBhum

    ano?

    A.—

    Eso

    creo.

    RS,dirigiéndose

    aB.—

    ¿Aes

    humano?

    ¿Qué

    respondió

    B?

    178RS,dirigiéndose

    aA:¿C

    reesque

    eresform

    al?¿Q

    uépuedo

    determinar

    dependiendo

    dela

    respuesta?

    ¿Esposible

    deducirsiDrácula

    viveapartir

    defrases

    como:

    179Sisoy

    humano

    entoncesDrácula

    viveaún.

    180Siestoy

    cuerdoentonces

    Drácula

    vive.

    182Sisoy

    formal

    entoncesDrácula

    vive.

    190¿Q

    uépreguntarem

    osaun

    transilvanopara

    que,indep

    endien-tem

    entede

    sucom

    portam

    inetoysu

    respuesta,podam

    ossab

    ersiDrácula

    vive?

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    14

    Clasifi

    cació

    ndePuzzle

    s

    1.Con

    frasesdep

    endientesyoradores

    infinitam

    ente

    inteligentespero

    sinceros(cada

    frasedep

    endede

    laanterior):

    a)Som

    breros(J

    Conw

    ay,H

    Freudenthal)

    b)

    Núm

    erosen

    lafrente

    (JConw

    ay,M

    Gardner)

    Problem

    a:modelar

    elcom

    portam

    ientointeligente

    2.Con

    frasesindep

    endientes,pero

    posiblem

    entefalsas:

    a)Problem

    asde

    Alicia:

    Enla

    isla,Elbosque

    delOlvido,

    ...

    b)

    Lacolección

    deSmullyan:

    Drácula,

    Cofres

    dePorcia,

    ...

    Problem

    a:modelar

    lainterpretación

    delas

    frases

    3.Mezcla

    delos

    anteriores.

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    15

    LaProgram

    aciónFuncional

    esuna

    herramienta:

    •sencilla

    •sufi

    ciente•atractiva

    Tareasarealiza

    r

    1.–Estu

    dio

    del

    Prob

    lema

    2.–Modelad

    odela

    Solu

    cionen

    Haskell

    3.–Con

    jeturas

    sobre

    lasolu

    cion4.

    –Pruebas

    deéstas

    5.–Varian

    tesdel

    Prob

    lema

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    16

    Programació

    nFuncio

    nal

    programar

    A=com

    binarfunciones

    XA=

    estásobrecargado

    IMoses

    Schönfi

    nkel(Soc.

    Mat.

    deGöttingen,

    1920),Uber

    dieBau

    steineder

    mathem

    atischenlogik

    (1924),Onthe

    buildin

    gblocks

    ofmathem

    aticallogic

    representarfórm

    ulasatravés

    decom

    binadores

    Sxyz=xz(yz)

    Kxy=x

    (Kon

    stanzfu

    nktion

    )

    introducela

    notaciónparcializada

    (curryin

    g)I

    LaLógica

    Com

    binatoriade

    Haskell

    Curry

    (1930)I

    Cálculo

    confunciones

    anónimas

    (BRussel?):

    2x̂+yÃ

    x̂.2x

    +yÃ

    ∧x.2x

    +yÃ

    λx.2x

    +y

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    17

    IAlonzo

    Church,

    Aset

    ofpostu

    latesfor

    thefou

    ndation

    sof

    logic(1932)

    IntroduceelCalcu

    liof

    lambda

    conversion

    oλ–cálculo:

    xy

    —variab

    lesλx.E

    —ab

    stracciones

    ofuncion

    esan

    ónim

    aseh

    —ap

    licaciones

    ⊕paréntesis

    yconvenios

    paraagilizar

    lanotación:

    λx.λy.x

    λxy.x

    (λxy.x)(λ

    z.(λm.m

    )(λm.m

    ))(λxy.y)

    ⊕la

    aplicaciónavarios

    argumentos

    esim

    pĺıcita:fabc

    ⊕defi

    nicionesoecuaciones

    parasim

    plificar

    expresiones:

    Kxy=x

    I=λx.x

    Fxy=y

    K(λz.I

    I)F

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    18

    ⊕(beta)

    conversiónun

    pasode

    evaluación :(redex)

    (λx.C

    )EÃ

    [x:=

    E]C

    E′

    λx.EÃ

    λx.E′

    E′

    EMÃ

    E′M

    ...

    Ejem

    plo:

    K(λz.I

    I)FÃ

    K(λz.I

    )FK(λz.I

    I)FÃ

    (λz.I

    I)

    ⊕evaluación

    encero

    omás

    pasos

    EÃÃ

    E

    EÃÃ

    E′E′ÃÃ

    E′′

    EÃÃ

    E′′

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    19

    ⊕cóm

    puto:uno

    ovarios

    pasos.

    K(λz.I

    I)FÃÃ

    λz.I

    K(λz.I

    I)FÃÃ

    K(λz.I

    )F⊕

    finde

    cómputo:

    noquedan

    redexes(form

    anorm

    al)⊕

    intérprete:estrategia

    dereducción

    Teorem

    asde

    Church-R

    osser:

    1.ÃÃ

    esconfl

    uente

    SieÃÃ

    e′∧eÃÃ

    e′′entonces,

    ∃f|e′ÃÃ

    f∧e′′ÃÃ

    f

    2.LaFN

    esúnica.

    3.Elcóm

    putofinal

    esindep

    endientedel

    evaluador.

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    20

    Enelλ

    Cpodem

    osmodelar

    lalógica,

    losnúm

    eros,las

    listas...

    Usarem

    osdefi

    nicionesecuacionales

    True=λxy.x

    False

    =λxy.y

    Cond=λxyz.x

    yz

    &=λxy.xyF

    not

    =λx.xFT

    CondTrueefÃÃ

    e

    Sea

    =la

    igualdadsintáctica

    (queabsorb

    eala

    =defi

    nicional):

    NotT=(λx.xFT)TÃ

    TFTÃ

    F

    d0e=λfx.x

    dne=λfx.f

    n+1(x

    )

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    21

    []=λxyz.y

    (:)=λabf.fab

    head=λx.xT

    tail

    =λx.xF

    [A] =

    (:)A[]Ã

    λf.fA[]

    Pero

    laigualdad

    =es

    sustitutiva

    head[A

    ] =(λx.xT)[A

    [A]T

    =(:)A

    []TÃÃ

    TA[]Ã

    A

    tail[A

    ] =(λx.xF)[A

    [A]F

    =(:)A

    []FÃÃ

    FA[]Ã

    []

    Luego

    head[A

    ]ÃÃA

    tail[A

    ]ÃÃ[]

    Laprogram

    aciónfuncional

    consisteen

    diseñarcom

    binadores

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    22

    ⊕Funciones

    Recursivas

    SiY

    =λf.(λ

    x.f(xx))(λx.f(xx)),

    entoncesYfÃÃ

    f(Y

    f),

    e.d.:Sidefi

    nimos

    unaigualdad

    ®que

    incluyaa=∪ÃÃ

    entoncesla

    ecuaciónM®

    fM

    tienesolución.

    ⊕λ–defi

    nibilidad:base

    dela

    programación

    funcionalUna

    funciónϕ

    :N

    p→

    Nse

    diceλ–defi

    niblesi

    existeun

    término

    Ftal

    que

    dϕ(n

    1 ,...,np )eÃÃ

    Fdn

    1 e...dn

    p e

    Teorem

    ade

    Kleene:

    fes

    recursivasii

    esλ–defi

    nible.

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    23

    ¿Qué

    lenguajesfuncionales

    sonbuenos?

    Lalista

    eslarga:

    APL

    FP

    simbólicos

    Lambda-Cálculo

    LisP

    Scheme

    semi-puros

    Hope

    Miranda

    Orwell

    Haskell

    algebraicos(tip

    osinductivos)

    Xcaracteŕıstica

    esencial:tipifi

    cación(clasifi

    cación)X

    otrascaracteŕısticas:

    orden-su

    perioryparcialización

    ,polim

    orfism

    ogen

    eralyrestrin

    gido,evalu

    aciónnoestricta,...

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    24

    Ellenguaje

    Haskell(C

    urry

    )

    Unaagradable

    introdu

    cciónaHaskell...

    Ennuestras

    páginashay

    información

    adicional:www.lcc.um

    a.es\∼pepeg

    www.lcc.um

    a.es\razonandoC

    onHaskell

    •Surge

    (los80)

    paraestandarizar

    laspropuestas

    académicas.

    •Esun

    Lambda-Cálculo

    enriquecido:

    x,y

    —variab

    lesλx→

    E,

    λxy→

    F—

    funcion

    esan

    ónim

    aseh

    —ap

    licaciones

    1,−8,+

    ,...True,F

    alse,

    —aritm

    ética,lógica

    [1,2],′a′:”ju

    an”,

    ( ′a′,3.23),

    length

    —funcion

    esbásicas

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    25

    •Declaraciones

    previasde

    unaam

    pliacolección

    tipos:

    data

    Bool

    =True|F

    alsedata

    Integer

    =...|−

    1|0|1|2|...

    —enteros

    noacotad

    osdata

    Int

    =−2147483648

    |...|2147483647—

    [minBou

    nd..m

    axBou

    nd]

    data

    [a]=

    []|a:[a]

    —listas

    •Organización

    enmódulos

    (import,h

    idding)Prelude

    List

    •Patrones

    endefi

    niciones,orden

    superior:

    map

    ::(a→

    b)→

    [a]→

    [b]

    —polim

    orfismo+

    OS

    map

    f[]

    =[]

    map

    f(x

    :xs)

    =fx

    :map

    fxs

    —recu

    rsión

    aMay

    úscu

    las::

    [Char

    ]→

    [Char

    ]

    aMay

    úscu

    las=

    map

    Char

    .toUpper

    —parcialización

    ,cualificación

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    26

    •Operadores

    simbólicos,

    precedenciayasociatividad:

    infixl1

    ==>

    —im

    plicación

    lógica

    False

    ==>

    =True

    —patrón

    anón

    imo

    True

    ==>q

    =q

    •Ecuación

    conguardas,

    promoción

    numérica:

    facn|n

    ==

    0=

    1|n

    >0

    =n∗fac

    (n−

    1)

    Main

    >fac

    100—

    Elsistem

    ainfiere

    eltip

    odefac

    93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000

    ::Integer

    Main

    >len

    gth$show

    $fac

    100—

    infixr0$;

    f$a

    =fa

    158::Int

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    27

    Prelu

    de>map

    (/3)[1..3]

    —prom

    ociónnu

    mérica

    [0.333333333333333,0.666666666666667,1.0]::Dou

    blePrelu

    de>filter

    (6=′s′)“com

    esfiletes“

    —llam

    adaparcial

    “comefilete

    “::Strin

    g

    ¿Con

    cuántosceros

    termina

    elfactorial

    de100?

    Main

    >ceros

    100where

    ceros=

    length

    .takeWhile

    (==′0′).reverse

    .show.fac

    24::Int

    —ceros

    esunafunción

    local

    •Tipos

    algebraicos(inductivos,

    dots)

    data

    Natu

    ral=

    O|S

    ucNatu

    ral—

    inductivo

    masD

    os=

    Suc.S

    uc

    —masD

    os::Natu

    ral→

    Natu

    ral

    data

    Pila

    a=

    Pa(P

    ilaa)

    —recu

    rsivo,noinductivo

    p=

    p—

    p::Pila

    aq

    =P

    1q

    —q

    ::Pila

    Int

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    28

    •Evaluación

    noestricta

    Prelu

    de>take

    10unos

    where

    unos

    =1:unos

    [1,1,1,1,1,1,1,1,1,1]::Integer

    •Clases

    deTipos:

    class

    Eqawhere

    (==),(/

    =)::a→

    a→

    Bool

    —miem

    bros

    por

    defecto

    x==y=not(x

    6=y)

    x6=y

    =not(x

    ==y)

    insta

    nce

    EqNatu

    ralwhere

    O==O

    =True

    Sucx==Sucy=x==y

    •Unintérprete/com

    piladorlibre

    muy

    cuidado

    www.haskell.org

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    29

    Puzzle

    sconsombreros

    Atribuido

    aSebelik

    (1983),generalizado

    por

    JConw

    ay,HFreu-

    denthal,M

    Gardner,

    ...

    En

    ciertahab

    itaciónse

    encuentran

    Seb

    elik,Paco

    yBlas

    enfila

    india.E

    notra

    contigu

    ahay

    cinco

    sombreros

    (2negros

    y3blan

    cos).Seap

    agala

    luz;u

    nárbitro

    toma

    tressom

    breros

    dela

    mesa

    ylos

    coloca

    enlas

    cabezas

    delas

    person

    aspara

    desp

    ués

    encen

    der

    laluz.

    Paco

    Blas

    Seb

    elik

    Acon

    tinuación

    seescu

    chael

    siguien

    tediálogo:

    Seb

    elik.—

    Yonosé

    elcolor

    demisom

    brero.

    Paco.—

    Enese

    caso,yo

    tampoco.

    ¿Dequécolor

    esel

    sombrero

    deBlas?

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    30

    Som

    brerosydiálogo

    enHaskell

    Larepresentación

    decolores

    essim

    ple:

    data

    Color

    =B|N

    deriv

    ing(E

    q,Show

    )

    Som

    breros>B

    ==N

    False

    Som

    breros>B6=N

    True

    Necesitam

    osun

    predicadointeligente

    paracada

    frase:

    typeFrase

    a=

    a→

    Bool

    —POLIM

    ORFISMO

    sebelik::Frase

    (Color

    ,Color

    )paco

    ::Frase

    Color

    blas::

    [Color

    ]—

    lalista

    deposib

    lessom

    breros

    sebelikactúa

    sobrepares

    decolores

    (lossom

    brerosque

    ve).

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    31

    Algunas

    funcionessencillas

    usando“L

    istaspor

    Com

    prensión”:

    cubo

    ::[a]→

    [(a,a,a

    )]—

    Polim

    orfismo

    cubo

    xs=

    [(x,y,z

    )|x←

    xs,y←

    xs,z←

    xs]—

    unalista

    por

    compren

    sióncap

    tura

    “conjuntos

    por

    compren

    sión”:

    —R3={(x

    ,y,z)|x

    ∈R,y∈

    R,z∈

    R}

    elegibles::

    [(Color

    ,Color

    ,Color

    )]

    elegibles=

    [t|t←

    cubo

    [B,N

    ]︸

    ︷︷︸

    generador

    ,t6=

    (N,N

    ,N)

    ︸︷︷

    ︸guarda

    ]

    —hay

    suficientes

    blan

    cos

    Som

    breros>cubo

    [B,N

    ][(B

    ,B,B

    ),(B,B

    ,N),(B

    ,N,B

    ),(B,N

    ,N),

    (N,B

    ,B),(N

    ,B,N

    ),(N,N

    ,B),(N

    ,N,N

    )]Som

    breros>elegibles

    [(B,B

    ,B),(B

    ,B,N

    ),(B,N

    ,B),(B

    ,N,N

    ),(N

    ,B,B

    ),(N,B

    ,N),(N

    ,N,B

    )]

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    32

    ¿Cóm

    oes

    deinteligente

    Sebelik?

    sebelik::Frase

    (Color

    ,Color

    )

    sebelik(p,b

    )=masD

    eUno

    [s|(s,p

    ′,b′)←

    elegibles

    ︸︷︷

    ︸gen

    erador

    ,(p′,b′)==

    (p,b)︸

    ︷︷︸

    guarda

    ]

    Som

    breros>sebelik

    (B,N

    )—

    ¿Seb

    elikpued

    ever

    unoBlan

    coyotro

    Negro?

    True

    —Śı

    Som

    breros>sebelik

    (N,N

    )False

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    33

    ¿Yel

    comportam

    ientointeligente

    dePaco?

    pacob

    =masD

    eUno[p|p←

    [B,N

    ],sebelik(p,b

    )]

    —im

    aginouncolor

    ppara

    misom

    brero

    —yrazon

    ocom

    oSeb

    elik

    Som

    breros>paco

    B—

    ¿Paco

    puedever

    unsom

    brero

    Blan

    co?True

    —Śı

    Som

    breros>paco

    NFalse

    Lalista

    blascalcula

    losposibles

    coloresdel

    sombrero

    deBlas:

    blas=

    [b|b←

    [B,N

    ],paco

    b]

    Som

    breros>blas

    [B]::

    [Color

    ]—

    estoes

    unadem

    ostración

    Veam

    osahora

    lafunción

    masD

    eUno:

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    34

    masD

    eUno

    ::Eqa

    =>

    [a]→

    Bool

    —polim

    orfismorestrin

    gido

    masD

    eUno

    =varios

    .quitaR

    ep

    —el

    punto

    ‘.’rep

    resentala

    composición

    defuncion

    es(f.g

    )x

    =f(g

    x)

    quitaR

    ep::Eqa

    =>

    [a]→

    [a]

    quitaR

    ep(x

    :xs)

    =x

    :quitaR

    ep[y|y←

    xs,y6=

    x]

    quitaR

    ep[]

    =[]

    —recu

    rsión

    data

    [a]=

    []|a:[a]

    Som

    breros>quitaR

    ep[3,1,2,1,3,1,4]

    [3,1,2,4]Som

    breros>quitaR

    ep′′esta

    frasees

    muylarga

    ′′

    “estafrm

    uylg′′

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    35

    varios::

    [a]→

    Bool

    —polim

    orfismo

    varios(

    ::)=

    True

    —el

    śımbolo

    esel

    patrón

    anón

    imo

    varios=

    False

    —Otra

    alternativa

    v́ıala

    función

    length

    variosxs

    =len

    gthxs≥

    2

    length

    ::[a]→

    Integer

    —polim

    orfismoirrestrin

    gido

    length

    (:xs)

    =1+

    length

    xslen

    gth[]

    =0

    —Otra

    formadirecta

    ¿más

    elegante?varios

    =(≥

    2).len

    gth

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    36

    Mas

    puzzlescon

    sombreros

    Martin

    Gardner

    (enInspiración

    ¡Ajá!)

    considerados

    variantes(H

    Freudenthal

    yJConw

    ay)

    ...npersonas

    colocadasen

    fila

    india.

    Enla

    mesa

    hayn−1

    sombreros

    negrosynblancos

    ...un

    árbitroelige

    nsom

    bre-ros

    ...Sucesivam

    ente,de

    atráshacia

    adelante,todas

    (salvola

    última)

    dicenlo

    mism

    o:¡N

    osé

    elcolorde

    misom

    brero!.¿D

    equé

    colores

    elsom

    brerode

    laprim

    erapersona

    dela

    fila?

    ¿Qué

    ocurresilas

    npersonas

    puedenmoverse

    libremente,

    deform

    aque

    cadauna

    velas

    cabezas

    delas

    restantes?

    Dem

    ostradque

    algunade

    ellasafi

    rmará

    enalgún

    mom

    entoque

    conoceel

    colorde

    susom

    brero.

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    37

    Generaliza

    ción(4

    perso

    nas,

    5...)

    Generalizam

    osel

    programaanterior

    EJERCIC

    IOX

    Loanterior

    proporciona

    unrazonam

    iento¡ajá!

    Sea

    lafila

    india:(P

    1habla

    el1

    o)

    P1 P

    2 P3...P

    n

    Dela

    primera

    fraseconcluim

    os:

    enlas

    cabezas

    deP2 P

    3...P

    nexiste

    unsom

    breroblanco

    (2)

    Utilizando

    loanterior

    esfácil

    probarque

    elsom

    brerode

    Pnes

    blancoEJERCIC

    IO

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    38

    Enla

    isladelosCaballe

    rosylosṔıca

    ros

    Enesta

    islahabitan

    caballeros(sinceros)

    yṕıcaros

    (mentirosos).

    Ocasionalm

    entepuede

    visitarla

    islalos

    esṕıas(a

    vecesmienten

    yotras

    no).

    26Meencuentro

    conA,B

    yC.Pregunto

    aA:¿E

    resCaballero

    oṔıcaro?

    Larespuesta

    deA

    esininteligible,

    ypregunto

    aB:

    ¿Qué

    hadicho

    A?

    B.—

    Adice

    quees

    Ṕıcaro.

    C.—

    Nocreas

    aB,que

    estámintiendo.

    ¿Qué

    dijoA?¿Q

    uéson

    AyB?

    40Meencuentro

    condos

    habitantesque

    discuten:

    A.—

    Noeres

    unCaballero.

    B.—

    Tuśıque

    nolo

    eres.

    Dem

    uestraque

    unode

    elloses

    esṕıa,yuno

    deellos

    sincero.

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    39

    DiálogosHaskellenla

    Isla

    XLaejecución

    delos

    diálogos-Haskell¡son

    demostraciones!

    XRay

    resuelvelos

    mism

    osproblem

    asen

    almenos

    media

    pági-na.d

    ata

    Habitan

    te=

    Pı́caro

    |Caballero

    |Espı́aderiv

    ing(E

    q,Show

    )typePar

    =(H

    abitante,H

    abitante)

    typeTrı́o

    =(H

    abitante,H

    abitante,H

    abitante)

    —la

    siguiente

    función

    prop

    orcionaunainterp

    retacióndecad

    afrase

    valorSi::Frase

    a→

    Habitan

    te→

    Frase

    a

    —notación

    infija

    ypatron

    es

    f‘valorS

    i‘Caballero

    =f

    f‘valorS

    i‘Pı́caro

    =not.f

    {not

    True

    =False

    ;not

    False

    =True}

    f‘valorS

    i‘Espı́a

    =con

    stTrue{con

    stkx

    =k}

    —noten

    drem

    osen

    cuenta

    loqu

    edicen

    losesṕ

    ıas

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    40

    —Prob

    lema26

    —¿E

    resCab

    allerooṔıcaro?

    Laresp

    uesta

    deA

    esininteligib

    le,—

    ypregu

    ntoaB:¿Q

    uéhadich

    oA?

    —B.—

    Adice

    quees

    Ṕıcaro.

    —C.—

    Nocreas

    aB,qu

    eestá

    mintien

    do.

    sol26::Habitan

    te→

    [Trı́o]

    sol26res

    =[t|t@

    (a,b,c

    )←

    cubo

    [Pı́caro

    ,Caballero

    ],valorS

    ifat,

    —llam

    adaprefija

    valorSigbt,

    valorSihct]

    —interp

    retamos

    cadafrase

    segúnla

    person

    alidad

    where

    f,g,h

    ::Frase

    Trı́o

    f(a,b,c

    )=

    a==

    res—

    A.—

    soyres.

    g(a,b,c

    )=

    f(a,b,c

    )==

    (a==

    Pı́caro

    )—

    B.—

    Adice

    quees

    Ṕıcaro.

    h=

    not.g

    —C.—

    Bestá

    mintien

    do.

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    41

    IslaCaballeros

    >sol26

    Pı́caro

    []—

    Anopudodecir

    queera

    Ṕıcaro

    IslaCaballeros

    >sol26

    Caballero

    [(Pı́caro

    ,Pı́caro

    ,Caballero

    ),(Caballero

    ,Pı́caro

    ,Caballero

    )]—

    Adijo

    queera

    Cab

    allero,B

    esunṔıcaro

    yC

    unCab

    allero.—

    Esim

    posib

    lesab

    erlo

    quees

    Apero

    śılo

    quedijo.

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    42

    —Prob

    lema27

    —Pregu

    ntoaA:¿C

    uántos

    caballeros

    hay

    entrevosotros?

    —Laresp

    uesta

    esininteligib

    le,ypregu

    ntoaB:¿Q

    uéhadich

    o?—

    B.—

    Adice

    quehay

    exactamente

    uncab

    alleroentre

    nosotros.

    —C.—

    Nohagas

    casoaB

    queestá

    mintien

    do.

    sol27res

    =[t|t@

    (a,b,c

    )←

    cubo

    [Pı́caro

    ,Caballero

    ],(f

    ‘valorSi‘a

    )t,

    (g‘valorS

    i‘b)t,

    (h‘valorS

    i‘c)t]

    where

    f,g,h

    ::Frase

    Trı́o

    f(a,b,c

    )=

    res==

    length

    [x|x←

    [a,b,c

    ],x==

    Caballero

    ]—

    A.—

    somos

    rescab

    allerosg(a,b,c

    )=

    f(a,b,c

    )==

    (1==

    length

    [x|x←

    [a,b,c

    ],x==

    Caballero

    ])—

    B.—

    Adice

    queexactam

    ente—

    unodenosotros

    esuncab

    alleroh

    =not.g

    —C.—

    Nohagas

    casoaB

    queestá

    mintien

    do.

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    43

    IslaCaballeros

    >sol27

    1[]

    —Laresp

    uesta

    nopudoser

    1.IslaC

    aballeros>

    sol270

    [(Pı́caro

    ,Pı́caro

    ,Caballero

    )]IslaC

    aballeros>

    sol272

    [(Pı́caro

    ,Pı́caro

    ,Caballero

    ),(Caballero

    ,Pı́caro

    ,Caballero

    )]IslaC

    aballeros>

    sol273

    [(Pı́caro

    ,Pı́caro

    ,Caballero

    )]IslaC

    aballeros>

    sol274

    [(Pı́caro

    ,Pı́caro

    ,Caballero

    )]—

    Esim

    posib

    lededucir

    laperson

    alidad

    deA.

    —Sab

    emos

    que(B

    ,C)=

    =(Ṕ

    ıcaro,Cab

    allero).

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    44

    —Prob

    lema36

    —¿E

    salgu

    nodevosotros

    uncab

    allero?.—

    Ameresp

    ondió,

    ycon

    suresp

    uesta

    pudesab

    erla

    solución

    .

    sol36res

    =[p|p

    @(a,b

    )←

    [Pı́caro

    ,Caballero

    ]‘x‘[P

    ı́caro,C

    aballero],

    (f‘valorS

    i‘a)p]

    where

    f::Frase

    Par

    f(a,b

    )=

    ifres

    ==

    ”SI”then

    a==

    Caballero

    ||b==

    Caballero

    —unodenosotros

    esCab

    alleroelse

    a==

    Pı́caro

    b==

    Pı́caro

    —som

    osdos

    Ṕıcaros

    IslaCaballeros

    >sol36

    ”SI”

    [(Pı́caro

    ,Pı́caro

    ),(Caballero

    ,Pı́caro

    ),...—

    noqu

    edadeterm

    inad

    ala

    person

    alidad

    deA

    IslaCaballeros

    >sol36

    ”NO”

    [(Pı́caro

    ,Caballero

    )]—

    Adeb

    eser

    unṔıcaro,

    yB

    unCab

    allero

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    45

    —Prob

    lema40

    —Meheinform

    adoyhay

    esṕıas

    enla

    isla.Oigo

    laconversación

    :—

    A.—

    Bes

    unCab

    allero.—

    B.—

    Anoes

    unCab

    allero.—

    Dem

    uestra

    queal

    menos

    unadeellas

    estádicien

    dola

    verdad

    .

    EJERCIC

    IO

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    46

    Alicia

    enelbosquedelolvido

    Alicia

    alentrar

    enelbosque

    olvida,entre

    otrascosas,

    eld́ıa

    delasem

    ana.Enelb

    osquehay

    animales

    condos

    tipos

    decom

    porta-

    miento:

    ElLeón

    miente

    losLunes,

    Martes

    yMiércoles,

    mientras

    queel

    Unicornio

    miente

    losJueves,

    Viernes

    ySabados.

    48Alicia

    seencuentra

    conel

    León:

    León.—

    Ayer

    ment́ı.

    León.—

    Mentiré

    dentrode

    tresd́ıas.

    ¿Qué

    d́ıade

    lasem

    anaes?

    48bResolverem

    osunpu

    zzlemás

    general:

    A.—

    Ayer

    ment́ı.

    B.—

    Mentiré

    dentrode

    tresd́ıas.

    ¿Qué

    d́ıade

    lasem

    anaes

    ¿Qué

    sonA

    yB

    suponiendo

    quecada

    personaje

    conocelapersonalidad

    detodos

    loshabitantes

    delbosque?

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    47

    48bUnainteresan

    temodifi

    cación:

    A.—

    Ayer

    ment́ı.

    B.—

    Mentiré

    dentrode

    tresd́ıas.

    Alicia

    esincapaz

    dededucir

    eld́ıa

    dela

    semana

    ¿Qué

    com-

    portam

    ientosteńıan

    AyB?

    Ahora

    intervien

    enLeo

    yUni(T

    weed

    ledum

    YTweed

    ledeeen

    elorigin

    al),queson

    herman

    osgem

    elos(in

    distinguibles)

    yse

    comportan

    comounLeón

    yunUnicorn

    iorespectiva-

    men

    te.

    51A.—

    Yosoy

    Leo.

    B.—

    Yosoy

    Uni.

    ¿Puede

    Alicia

    adivinarquienes

    eran?

    57A.—

    Siyo

    soyLeo

    entoncesél

    esUni.

    B.—

    Siél

    esUni

    entoncesyo

    soyLeo.

    ¿Quienes

    eran?

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    48

    59ElRey

    encuentrael

    sonajeroque

    rompieron

    losgem

    elosy

    Alicia

    debeencontrar

    asu

    propietario.Tras

    adentrarseen

    elbosque

    seencuentra

    conlos

    gemelos:

    Alicia

    (dirigiéndoseaA).—

    ¿Dequién

    esel

    sonajero?

    A.—

    Elsonajero

    esde

    Uni.

    Alicia,

    trasun

    mom

    entopensativa,

    dirg.B.—

    ¿Quién

    erestú?

    B.—

    Yosoy

    Uni.

    Alicia

    nosab́ıa

    eld́ıa

    dela

    semana,

    pero

    recuerdaque

    noes

    Dom

    ingo.¿A

    qúıendeb

    eentregar

    Alicia

    elsonajero?

    62Alicia

    (dirigiéndoseaA).—

    ¿Estuyo

    estesonajero?

    A.—

    Śı.

    Alicia,

    trasun

    mom

    entopensativa,

    dirigiéndoseaB.—

    ¿Es

    tuyoeste

    sonajero?

    B,susurrándole

    aloido

    deAlicia.

    -...

    Nose

    escuchóla

    respuesta,aunque

    fue,obien

    Śı,obien

    No.

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    49

    Después

    deescuchar

    larespuesta,

    Alicia

    sab́ıaquien

    erael

    propietariodel

    sonajero.¿A

    qúıendió

    elsonajero?

    65Elrey

    lecontó

    aAlicia

    quelos

    gemelos

    pod́ıan

    tenerun

    her-mano

    (Duendi)

    idénticoaellos,

    aunquees

    unduende

    (siempre

    miente).

    Alicia

    escuchadurante

    und́ıa

    laborable:

    A.—

    Duendi

    existe.

    B.—

    Yoexisto.

    ¿Existe

    realmente

    Duendi?

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    50

    ElbosqueenHaskell

    data

    Dı́a

    =L|M|X|J|V|S|D

    deriv

    ing(E

    q,Show

    ,Enum)

    ayer,m

    añan

    a::Dı́a→

    Dı́a

    ayerL

    =D

    ayerx

    =pred

    xmañan

    aD

    =L

    mañan

    ax

    =succ

    xpasadoM

    añan

    a=

    mañan

    a.m

    añan

    aden

    troDeT

    resDı́as

    =mañan

    a.m

    añan

    a.m

    añan

    a

    data

    Habitan

    te=León|U

    nicorn

    io|L

    eo|U

    ni|D

    uen

    dideriv

    ing(E

    q,Show

    )

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    51

    valorSi::Frase

    a→

    (Habitan

    te,D

    ı́a)→

    Frase

    a

    f‘valorS

    i‘(León,d

    )=

    ifd‘elem

    ‘[L..X

    ]thennot.f

    elsef

    f‘valorS

    i‘(Unicorn

    io,d

    )=

    ifd‘elem

    ‘[J..S

    ]thennot.f

    elsef

    f‘valorS

    i‘(Leo,d

    )=

    f‘valorS

    i‘(León,d

    )f‘valorS

    i‘(Uni,d

    )=

    f‘valorS

    i‘(Unicorn

    io,d

    )f‘valorS

    i‘(Duen

    di,d)

    =not.f

    —Duen

    disiem

    pre

    miente

    dosOradores

    =[(a

    ,b,d

    )|a←

    [León,U

    nicorn

    io],

    b←

    [León,U

    nicorn

    io],

    d←

    [L..D

    ]]

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    52

    sol48=

    [cf|cf

    @(a,b,d

    )←

    dosOradores,

    (f‘valorS

    i‘(a,d

    ))cf,

    (g‘valorS

    i‘(b,d

    ))cf

    ]

    where—

    A.-Ayer

    ment́ı.

    f(León,b,d

    )=

    (ayerd)‘elem

    ‘[L,M

    ,X]

    f(U

    nicorn

    io,b,d

    )=

    (ayerd)‘elem

    ‘[J,V

    ,S]

    —B.-Mentiré

    dentro

    detres

    d́ıas.

    g(a,L

    eón,d

    )=

    (dentroD

    eTresD

    ı́asd)‘elem

    ‘[L,M

    ,X]

    g(a,U

    nicorn

    io,d

    )=

    (dentroD

    eTresD

    ı́asd)‘elem

    ‘[J,V

    ,S]

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    53

    ElBosqu

    eDelO

    lvido>

    sol48[(L

    eón,L

    eón,L

    ),(León,U

    nicorn

    io,L

    ),(León,U

    nicorn

    io,J

    ),(U

    nicorn

    io,L

    eón,D

    ),(Unicorn

    io,U

    nicorn

    io,J

    )]—

    Sidialogan

    dos

    leones

    eld́ıa

    esLunes.

    —Sidialogan

    dos

    Unicorn

    ios,el

    d́ıa

    esJu

    eves.

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    54

    —Prob

    lema51

    leoOuniY

    dia=

    [(a,b,d

    )|(a

    ,b)←

    [Leo,U

    ni]‘x

    ‘[Leo,U

    ni],

    a6=b,

    d←

    [L..D

    ]]

    sol51=

    [e|e

    @(a,b,d

    )←

    leoOuniY

    dia,

    (f‘valorS

    i‘(a,d

    ))e,

    (g‘valorS

    i‘(b,d

    ))e]

    where

    f(a,b,d

    )=

    a==Leo

    —A.-Yosoy

    Leo.

    g(a,b,d

    )=

    b==Uni

    —B.-Yosoy

    Uni.

    ElBosqu

    eDelO

    lvido>

    sol51[(L

    eo,U

    ni,D

    )]—

    Luego

    Aes

    Leo

    yB

    esUni,yel

    d́ıa

    esDom

    ingo.

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    55

    —Prob

    lema57

    sol57=

    [cf|cf

    @(a,b,d

    )←

    leoOuniY

    dia,

    (f‘valorS

    i‘(a,d

    ))cf,

    (g‘valorS

    i‘(b,d

    ))cf

    where—

    A.-Siyo

    soyel

    Leo

    entonces

    éles

    Uni.

    f(a,b,d

    )=

    a==Leo

    ==>

    b==Uni

    —B.-Siél

    esUnienton

    cesyo

    soyLeo.

    g(a,b,d

    )=

    a==Uni==>

    b==Leo

    ElBosqu

    eDelO

    lvido>

    sol57[(L

    eo,U

    ni,D

    ),(Uni,L

    eo,D

    )]—

    Ambos

    enunciad

    osson

    verdad

    eros,deform

    aqu

    eam

    bos

    son—

    sinceros

    yeso

    ocurre

    enDom

    ingo.

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    56

    —Prob

    lema59:

    ¿Dequ

    iénes

    elson

    ajero?

    —Inclu

    imos

    unnu

    evodato

    enel

    estado:

    typePropietario

    =Habitan

    te

    EJERCIC

    IO

    —Prob

    lema62:

    ¿Estuyo

    esteson

    ajero?

    —A.-Śı.

    —Dirigién

    dose

    aB.-¿E

    stuyo

    esteson

    ajero?

    —Nose

    escuchóla

    respuesta,

    pero

    Alicia

    dedujo

    suprop

    ietario.

    EJERCIC

    IO

    —Prob

    lema65:

    ¿Existe

    Duendi?

    Elrey

    lecontó

    aAlicia

    quelos

    gemelos

    pod́ıan

    tenerun

    hermano

    (Duendi)

    idénticoaellos,

    aunquees

    unduende

    (siempre

    miente).

    Alicia

    escuchadurante

    und́ıa

    laborable:

    A.—

    Duendi

    existe.B.—

    Yoexisto.

    ¿Existe

    realmente

    Duendi?

    EJERCIC

    IO

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    57

    ¿ViveelcondeDrácula?

    EnTransilvania

    hayvam

    pirosyhum

    anos,ycada

    unode

    ellospuede

    estarcuerdo

    oloco.

    Los

    humanos

    sonsinceros

    ylos

    vampiros

    embusteros.

    Por

    locontrario,

    loscuerdos

    creenque

    sonciertas

    lasprop

    osicionescier-

    tas,yfalsas

    lasfalsas.

    Sin

    embargo,

    loslocos

    creenque

    laspro-

    posiciones

    falsasson

    ciertasylas

    ciertas,falsas.

    (un

    humano

    locose

    comporta

    aparentem

    ente

    comoun

    embustero,p

    eroalcontrario

    queéste,m

    ientesin

    maldad).

    167Untransilvano

    dice:O

    soyhum

    anooestoy

    cuerdo.¿E

    sun

    vampiro?

    170Lepreguntam

    osaT:¿E

    resun

    vampiro

    Loco?

    ¿Qué

    respon-

    diósiyo

    adivinélo

    queera?

    172Otro

    dice:Estoy

    Loco.

    ¿Esun

    vampiro?

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    58

    176RSentabla

    unaconversación

    condos

    transilvanos:

    RS,dirigiéndose

    aA.—

    ¿EsBhum

    ano?

    A.—

    Eso

    creo.

    RS,dirigiéndose

    aB.—

    ¿Aes

    humano?

    ¿Qué

    respondió

    B?

    178RS,dirigiéndose

    aA:¿C

    reesque

    eresform

    al?¿Q

    uépuedo

    determinar

    dependiendo

    dela

    respuesta?

    ¿Esposible

    deducirsiDrácula

    viveapartir

    defrases

    como:

    179Sisoy

    humano

    entoncesDrácula

    viveaún.

    180Siestoy

    cuerdoentonces

    Drácula

    vive.

    182Sisoy

    formal

    entoncesDrácula

    vive.

    190¿Q

    uépreguntarem

    osaun

    transilvanopara

    que,indep

    endien-tem

    entede

    sucom

    portam

    inetoysu

    respuesta,podam

    ossab

    ersiDrácula

    vive?

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    59

    Transilv

    anos,

    Drácula

    yHaskell

    data

    HV

    =Human

    o|V

    ampiro

    deriv

    ing(E

    q,Show

    )data

    Com

    portamien

    to=

    Cuerdo

    |Loco

    deriv

    ing(E

    q,Show

    )

    typeTran

    silvano

    =(H

    V,C

    omportam

    iento)

    trans::[Tran

    silvano]

    trans

    =[Human

    o,V

    ampiro

    ]‘x‘[C

    uerdo

    ,Loco

    ]

    valorSi,

    interpreta

    ::Frase

    a→

    Tran

    silvano→

    Frase

    a

    f‘valorS

    i‘(Human

    o,C

    uerdo

    )=

    ff‘valorS

    i‘(Human

    o,L

    oco)

    =not.f

    f‘valorS

    i‘(Vam

    piro,C

    uerdo

    )=

    not.f

    f‘valorS

    i‘(Vam

    piro,L

    oco)

    =f

    interpreta

    =valorS

    i

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    60

    cuerdo

    ,loco,vam

    piro,hu

    man

    o::Frase

    Tran

    silvano

    cuerdo

    (,c

    )=

    c==Cuerdo

    loco(,c

    )=

    c==Loco

    vampiro

    (t,)

    =t==Vam

    pirohu

    man

    o(t,

    )=

    t==Human

    o

    sol167=

    [h|h

    @(t,c

    )←

    trans,

    —Soy

    human

    ooestoy

    cuerd

    o(hu

    man

    o‘o‘cu

    erdo‘valorS

    i‘h)h]

    o::Frase

    a→

    Frase

    a→

    Frase

    af‘o‘g

    =λu→

    fu||g

    u

    EnTran

    silvania

    >sol167

    [(Human

    o,C

    uerdo

    )]

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    61

    —Prob

    lema170

    :¿E

    resunvam

    piro

    loco?—

    ¿Quéresp

    ondió

    siyo

    adivin

    ésu

    tipo?

    infixl1−

    :>(−

    :>)::Bool→

    (a→

    Bool)

    →a→

    Bool

    —selección

    congu

    arda

    False−

    :>f

    =f

    True−

    :>f

    =not.f

    sol170::Bool→

    [Tran

    silvano]

    sol170res

    =[h|h

    @(t,c

    )←

    trans,

    (res−

    :>(vam

    piro‘y‘loco

    )‘valorS

    i‘h)h]

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    62

    EnTran

    silvania

    >sol170

    True

    [(Human

    o,L

    oco),(V

    ampiro

    ,Cuerdo

    ),(Vam

    piro,L

    oco)]

    —con

    estaresp

    uesta

    nopod

    emos

    deducir

    quéera

    EnTran

    silvania

    >sol170

    False

    [(Human

    o,C

    uerdo

    )]—

    Por

    tanto,contestó:

    NO,yera

    unhu

    man

    ocu

    erdo

    —Prob

    lema172

    :T.-Estoy

    Loco.

    ¿Quépued

    eser?

    sol172=

    [h|h

    @(t,c

    )←

    trans,

    interpreta

    locohh]

    EnTran

    silvania

    >sol172

    [(Vam

    piro,C

    uerdo

    ),(Vam

    piro,L

    oco)]

    —Luego

    esunVam

    piro

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    63

    —Prob

    lema176

    —RS,dirigién

    dose

    aA.-¿E

    sB

    human

    o?—

    A.-Eso

    creo.—

    RS,dirigién

    dose

    aB.-¿A

    eshu

    man

    o?—

    ¿Quéresp

    ondió?

    Aceptarem

    osun

    prin

    cipio

    fundam

    ental:

    “creo”nodep

    endede

    sucordura.

    Necesitam

    osuna

    funciónpara

    suinterpretación:

    creo::Frase

    a→

    Tran

    silvano→

    Frase

    acreo

    f(H

    uman

    o,c

    )=

    fcreo

    f(V

    ampiro

    ,c)=

    not.f

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    64

    sol176res

    =[pt|pt@

    (a,b

    )←

    trans‘x‘tran

    s,(f

    ‘creo‘a

    )pt,

    (res−

    :>g‘valorS

    i‘b)pt

    ]

    where

    f(t,t

    ′)=

    human

    ot′

    g(t,t

    ′)=

    human

    ot

    EnTran

    silvania

    >sol176

    False

    []—

    talresp

    uesta

    esunacontrad

    icciónEnTran

    silvania

    >sol176

    True

    [((Human

    o,C

    uerdo

    ),(Human

    o,C

    uerdo

    )),((Human

    o,C

    uerdo

    ),...—

    Luego

    laresp

    uesta

    fueSI

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    65

    Ilustremos

    ahorala

    diferenciade

    interpretaciónde

    lasfrases

    ‘creoX’y‘X’.

    —Prob

    lema177

    —RS,dirigién

    dose

    aA.-¿E

    resform

    al?—

    ¿Quépuedodeterm

    inar

    dep

    endien

    dodela

    respuesta?

    formal

    ::Frase

    Tran

    silvano

    formal

    =(=

    =(H

    uman

    o,C

    uerdo

    ))‘o‘(=

    =(V

    ampiro

    ,Loco

    ))

    sol177res

    =[a|a←

    trans,

    (res−

    :>form

    al‘valorS

    i‘a)a]

    EnTran

    silvania

    >sol177

    False

    []—

    Luego,

    todos

    lostran

    silvanos

    contestanSI,yad

    emás:

    EnTran

    silvania

    >sol177

    True

    [(Human

    o,C

    uerdo

    ),(Human

    o,L

    oco),(V

    ampiro

    ,Cuerdo

    ),(Vam

    piro,L

    oco)]

    —¡las

    4posib

    ilidad

    es!:Nopod

    emos

    inferir

    NADA.

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    66

    —Prob

    lema182

    —T.-Sisoy

    formal

    entonces

    Drácu

    lavive.

    EJERCIC

    IO

    —Prob

    lema190:

    —¿Q

    uépregu

    ntarauntran

    silvanopara

    saber

    siDrácu

    lavive?

    EJERCIC

    IO

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    67

    LosCofre

    sdePorcia

    Los

    siguientesproblem

    asestán

    inspiradosen

    Porcia

    (personaje

    deElmercader

    deVen

    ecia,de

    Shakesp

    eare),una

    princesaque

    decideelegir

    esposo,

    noatendiendo

    asu

    belleza

    obondad,

    sinoasu

    agudezamental

    ointeligencia.

    Porcia

    tienevarios

    cofres(de

    oro,de

    plata,...algunos

    fabri-cados

    por

    Bellini,

    ...).Cada

    cofretiene

    unainscrip

    ción(p.e.,

    diciendosu

    contenido).Porcia

    escondesu

    retratoen

    uncofre.

    El

    pretendientedeb

    edescubrir

    elcofre

    quelo

    contienede

    acuerdocon

    eldiálogo

    dadoen

    lasinscrip

    ciones.

    67a

    oro

    elretrato

    estáen

    estecofre

    plata

    elretrato

    no

    estáaqú

    ı

    plomo

    elretrato

    no

    estáen

    elcofre

    deoro

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    68

    68a–alo

    sumouna

    inscripción

    decada

    cofrees

    falsa

    oro

    1el

    retratonoestá

    aqúı

    2el

    artistaquehizo

    elretrato

    esven

    eciano

    plata

    1el

    retratonoestá

    enel

    deoro

    2el

    artistaquehizo

    elretrato

    esfloren

    tino

    plomo

    1el

    retratonoestá

    aqúı

    2el

    retratoestá

    enel

    cofrede

    plata

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    69

    69boro

    elretrato

    no

    estáaqú

    ı

    plataexactam

    ente

    unode

    estoscofres

    lohizo

    Bellin

    i

    70aoro

    elretrato

    no

    estáaqú

    ı

    plataexactam

    ente

    unade

    estasinscripcio-nes

    escierta

    Las

    inscripciones

    enHaskell

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    70

    data

    Color

    =Oro|P

    lata|P

    lomoderiv

    ing(E

    q,Show

    )data

    Pintor

    =Ven

    eciano|F

    lorentin

    oderiv

    ing(E

    q,Show

    )

    valor::Frase

    a→

    Bool→

    Frase

    a

    f‘valor

    ‘True

    =f

    f‘valor

    ‘=

    not.f

    sol67a=

    [cont|

    cont←

    [Oro,P

    lata,P

    lomo],

    —alo

    sumounodelas

    inscrip

    ciones

    escierta

    (ioro

    ,iplata

    ,iplom

    o)←

    [(False

    ,False

    ,False

    ),(False

    ,False

    ,True),

    (False

    ,True,F

    alse),(T

    rue,F

    alse,F

    alse)],

    (oro‘valor

    ‘ioro

    )con

    t,(plata

    ‘valor‘i

    plata)con

    t,(plom

    o‘valor

    ‘iplom

    o)con

    t]where

    ...

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    71

    oro,plata

    ,plomo

    ::Frase

    Color

    oroc

    =c==

    Oro

    —el

    retratoestá

    eneste

    cofreplata

    c=

    c6=

    Plata

    —el

    retratonoestá

    aqúı

    plomoc

    =c6=

    Oro

    —el

    retratonoestá

    enel

    cofredeoro

    CofresD

    ePorcia

    >sol67a

    [Plata

    ]—

    Elretrato

    estáen

    elcofre

    dePlata.

    Ray

    Smullyan

    expone

    unrazonam

    ientosim

    ple:

    Las

    inscrip

    ciones

    del

    deoro

    yel

    deplom

    oson

    contra-

    rias,luego

    unodeellas

    escierta.

    Com

    oalo

    sumouna

    delas

    inscrip

    ciones

    escierta,

    ladel

    cofredeplata

    esfalsa,

    ypor

    tanto

    elretrato

    estáen

    eldeplata.

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    72

    sol68a=

    [(conten

    edor,pin

    tor)|

    e@(con

    tenedor

    ,pintor

    )←

    [Oro,P

    lata,P

    lomo]‘x

    ‘[Ven

    eciano,F

    lorentin

    o],

    (ioro

    1,ioro

    2)←

    [(True,T

    rue),(T

    rue,F

    alse),(F

    alse,T

    rue)],

    —alo

    sumounainscrip

    ciónes

    falsa(oro

    1‘valor

    ‘ioro

    1)e,(oro

    2‘valor

    ‘ioro

    2)e,

    (iplata

    1,iplata

    2)←

    [(True,T

    rue),(T

    rue,F

    alse),(F

    alse,T

    rue)],

    (plata1‘valor

    ‘iplata

    1)e,(plata

    2‘valor

    ‘iplata

    2)e,

    (iplom

    o1,i

    plomo2)←

    [(True,T

    rue),(T

    rue,F

    alse),(F

    alse,T

    rue)],

    (plomo1‘valor

    ‘iplom

    o1)

    e,(plom

    o2‘valor

    ‘iplom

    o2)

    e]

    where{

    oro1,oro

    2,plata1,plata

    2,plomo1,plom

    o2

    ::Frase

    (Color

    ,Pintor

    );

    oro1(c,a

    )=

    c6=

    Oro

    ;oro

    2(c,a

    )=

    a==

    Ven

    eciano;

    plata1(c,a

    )=

    c6=

    Oro

    ;plata

    2(c,a

    )=

    a==

    Floren

    tino

    plomo1(c,a

    )=

    c6=

    Plom

    o;plom

    o2(c,a

    )=

    c==

    Plata}

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    73

    CofresD

    ePorcia

    >sol68a

    [(Plata

    ,Ven

    eciano),(P

    lata,F

    lorentin

    o)]

    —Elretrato

    estáen

    elcofre

    dePlata.

    —Supintor

    noestá

    determ

    inad

    o.

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    74

    sol69b=

    EJERCIC

    IO

    —¡la

    inform

    acióninicial

    del

    prob

    lemaes

    esencial

    typeInscripció

    n=

    Bool

    sol70a=

    EJERCIC

    IO

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    75

    Númerosenla

    frente

    (J.Conway)

    Johnelige

    dosnúm

    erosp,b∈

    [1..9]yun

    terceroy∈

    [2..18]escrib

    epen

    lafrente

    dePaco

    yben

    lade

    Blas

    escribeen

    unapizarra

    yjunto

    ala

    sumap+b

    Manuel

    desdeotra

    habitaciónescucha

    elsiguiente

    diálogo:

    5

    4

    10

    9

    Blas

    .—Nosé

    elnúmero

    demifren

    te.Paco

    .—Yotam

    poco.

    Blas

    .—Pues

    sigoigu

    al.Paco

    .—Y

    yo.Blas

    .—¡Casi

    losé!

    Paco

    .—Y

    yo.Blas

    .—Meestoy

    pon

    iendonerv

    iosillo.Paco

    .—Yotam

    bién

    estoydelos

    nerv

    ios.Blas

    .—¡A

    já,ya

    séel

    mı́o!

    X¿T

    ienesentido

    eldiálogo?

    X¿sobra

    laúltim

    aafi

    rmación?

    X¿P

    uedeManuel

    adivinarlos

    números?

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    76

    Unaplantilla

    Haskell

    Este

    problemaes

    algomás

    general.Clasifi

    camos

    lainform

    ación:

    información

    globalt

    9inform

    aciónpública

    lapizarra

    109

    información

    privadap,b

    4,5

    Xinform

    aciónprivada:

    laque

    notiene

    elotro;

    Xsim

    etŕıa:Johnreparte

    byp,

    ...,Blas

    .—Nosé

    tunúmero.

    Engeneral

    unalgoritm

    ointeligente

    tieneel

    tipo:

    veoYcreo

    ::InfPrivada

    →InfPublica

    →[In

    fPrivada

    ]—

    Nose

    tudato:

    fmiD

    atoinfP

    ública

    =varios

    (veoYcreo

    miD

    atoinfP

    ública

    )

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    77

    t=

    9—

    inform

    aciónglob

    al

    data

    Pizarra

    =PIntInt

    —los

    números

    dela

    pizarra

    typeFren

    te=

    Int

    —el

    número

    enla

    frente

    —unalgoritm

    ointeligen

    teveoY

    creo::Fren

    te→

    Pizarra

    →[Fren

    te]

    veoYcreo

    f(P

    xy)=

    [f′|f

    ′←

    [x−

    f,y−

    f],0<

    f′,f′≤

    t]

    EnLaF

    rente>

    veoYcreo

    3(P

    41)

    [1]EnLaF

    rente>

    veoYcreo

    3(P

    46)

    [1,3]

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    78

    blas,paco

    ::NdeO

    rden→

    Fren

    te→

    Pizarra

    →Bool

    blas1

    ppiz

    =varios

    (veoYcreo

    ppiz

    )blas

    (n+

    1)ppiz

    =varios

    [b|b←

    veoYcreo

    ppiz

    ,paco

    nbpiz

    ]paco

    nbpiz

    =varios

    [p|p←

    veoYcreo

    bpiz

    ,blas

    nppiz

    ]

    espacio=

    [(p,b,Pxy)|p←

    [1..t],b←

    [1..t],letx

    =p+b,y←

    [2..2∗t],

    y6=

    x]

    —búsqu

    edahacia

    atrás

    hastaBlas

    ::NdeO

    rden→

    [(Fren

    te,F

    rente,P

    izarra)]

    hastaBlas

    n=

    (λ(p,b,piz

    )→

    blasnppiz

    )‘filter

    ‘espacio

    hastaPaco

    n=

    filter

    (λ(p,b,piz

    )→

    paconbpiz

    )espacio

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    79

    TamañodelProblema

    –Tam

    añodel

    espacio

    debúsqueda:

    t·t·

    2t−

    2'

    2t 3

    ↑↑

    ↑p

    b(x6=)y∈

    [2..2t]

    X¿cuántos

    elementos

    filtra

    laprim

    eraafi

    rmación?

    lenght(hasta

    Blas1)

    –Tal

    valores

    lamitad

    delinicial:

    t 2(t−

    1)Enefecto,

    sip,b∈

    [1..t],x=p+b,

    blas1p(P

    xy)

    ≡1≤y−p≤t

    ,x6=y

    y∈

    [p+

    1..p+t]

    ypuede

    tomar

    solamente

    t−

    1valores.

    X¿cuántos

    elementos

    filtra

    lasegunda

    afirm

    ación?

    lenght(hasta

    Paco

    1)

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    80

    Unaconjetura

    sobre

    lasolució

    ndelproblema

    Laevaluación

    delen

    ght(h

    asta

    Blasn)y...

    proporciona:

    tles

    hB1hP1hB2hP2hB3hP3hB4hP4hB5hP5

    336

    184

    496

    4812

    45

    200100

    3012

    46

    360180

    5624

    124

    7588

    29498

    4624

    124

    8896

    448152

    7640

    2412

    49

    1296648

    228114

    6640

    2412

    410

    1800900

    320168

    10060

    4024

    124

    ...

    Conjetura:

    encierto

    instan

    teel

    espacio

    sered

    uce

    a4com

    binacio-

    nes

    ydesp

    ués

    esvaćıo

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    81

    –Através

    delprogram

    apodem

    osobtener

    talescom

    binaciones,

    thasta

    Paco

    t−1

    2

    3(1,

    2,P

    34)

    (2,2,P

    43)

    (2,2,P

    45)

    (3,2,P

    54)

    5(2,

    3,P

    56)

    (3,3,P

    65)

    (3,3,P

    67)

    (4,3,P

    76)

    7(3,

    4,P

    78)

    (4,4,P

    87)

    (4,4,P

    89)

    (5,4,P

    98)

    9(4,

    5,P

    910)

    (5,5,P

    109)

    (5,5,P

    1011)

    (6,5,P

    1110)

    Conjetura:

    Para

    tim

    par

    =2n

    +1desp

    ués

    delan-ésim

    aafi

    rmación

    dePaco

    ,elúnico

    número

    posib

    lepara

    Blas

    esb=n+1.

    Laúnica

    afirm

    acióncon

    sentid

    opor

    parte

    deBlas

    siprosigu

    eel

    diálogo

    es:¡A

    já,ya

    séminúmero!

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    82

    thasta

    Blas

    t2

    4(2,2,P

    45)

    (3,2,P56)

    (2,3,P54)

    (3,3,P65)

    6(3,3,P

    67)

    (4,3,P78)

    (3,4,P76)

    (4,4,P87)

    8(4,4,P

    89)

    (5,4,P910)

    (4,5,P98)

    (5,5,P10

    9)10

    (5,5,P10

    11)(6,5,P

    1112)

    (5,6,P11

    10)(6,6,P

    1211)

    Conjetura:

    Para

    t=

    2n,desp

    ués

    delan-ésim

    aafi

    rmación

    deBlas

    ,elnúmero

    deBlas

    noestá

    determ

    inad

    o.Siprosigu

    eel

    diálogo

    elprob

    lemanotien

    esolu

    ción(con

    2nfrases).

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    83

    Demostra

    cióndela

    conjetura

    –Utilizarem

    osla

    notaciónhabitual

    dela

    matem

    áticaB

    n(p,x

    ,y)yP

    n(b,x

    ,y)predicados

    hastalafrase

    n-ésim

    aI=

    [1..t]⊆

    N,

    Lem

    a0.-1

    .1Sien

    dop,b∈I;x,y∈

    [2..2t];x6=y:

    B1 (p,x

    ,y)≡

    x−p,y−p∈I

    Bn+1 (p,x

    ,y)≡B1 (p,x

    ,y)∧P

    n(x−p,x

    ,y)∧P

    n(y−p,x

    ,y)

    Pn(b,x

    ,y)≡B1 (p,x

    ,y)∧B

    n(x−b,x

    ,y)∧B

    n(y−b,x

    ,y)

    Teorem

    a0.-1

    .2Sip,b∈I,x,y∈

    [2..2t],x6=y,ysiadem

    ás

    x=p+q∨y=p+q,entonces:

    (1)Sit=

    2n+

    1,P

    n(b,x

    ,y)

    ⇒b=n+

    1∧|x−y|=

    1(2)

    Sit=

    2n,

    Bn(p,x

    ,y)

    ⇒|x−y|=

    1,¬P

    n(b,x

    ,y)

    p,b∈{n,n

    +1}

    Para

    t=

    9,n=

    4(8

    frases),Manuel

    sabráque

    b=

    5.

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    84

    Varia

    ntesdelproblema

    Variante

    1

    Johntom

    alos

    números

    delintervalo

    I=

    [1..t],yel

    diálogoes:

    Blas

    .—Nocon

    ozcoel

    número

    demifren

    te.Paco

    .—Yotam

    poco.

    Blas

    .—Pues,

    sigosin

    saberlo.

    Paco

    .—Enton

    ces,yo

    tampoco.

    Blas

    .—Yalo

    sé

    ¿Puede

    Manuel

    adivinarel

    valorde

    t?¿y

    losnúm

    eros?EJERCIC

    IO

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    85

    Variante

    2

    Manuel

    conoceel

    valorde

    t,yel

    diálogoes:

    Blas

    .—Nocon

    ozcoel

    número

    demifren

    te.Paco

    .—Yotam

    poco.

    Blas

    .—Pues,

    sigosin

    saberlo.

    Paco

    .—Enton

    ces,yo

    tampoco.

    Manu

    el.—

    ¡Taraŕı

    quete

    v́ı!Yasé

    elnúmero

    deBlas

    ¿Cual

    esel

    valorde

    t?EJERCIC

    IO¿Y

    siPaco

    yBlas

    noconocen

    t?¿E

    strascendente?

    EJERCIC

    IO

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    86

    ElProblem

    aP-S(H

    Freudenthal)

    Hans

    eligedos

    números

    distintosmayores

    que1,

    entregael

    pro-ducto

    aPROD

    yla

    sumaaSUM

    ,que

    mantienen

    elsiguiente

    diálogo:SUM

    .—Nose

    cómovas

    aad

    ivinar

    misuma.

    PROD.—

    Enton

    ces,nosé

    tusuma

    SUM

    .—Pues

    yoya

    setu

    producto.

    ¿Cuáles

    eranlos

    números

    elegidospor

    Hans?

    XEnel

    problemaoriginal

    (1969)la

    segundafrase

    es:PROD.—

    ¡Ajá!,

    enton

    cesya

    sétu

    suma

    información

    globalx,y

    >1,

    x6=y

    información

    públicaΦ

    información

    privadas,p

  • Puzzles,

    Juego

    sMatem

    ático

    syProgra

    mació

    nFuncio

    nal(C

    ON

    EJERCIC

    IOS).

    Marz

    o,2005

    87

    Unprogram

    aHaskell

    sum

    s=and(mapvarios

    [Sp|p←

    Ps]

    )sum

    =and.mapvarios

    .map

    S.P

    prop=varios

    [s|s←

    Sp,

    sum

    s]pro

    =varios

    .filter

    sum

    .S

    sum′s=uno[p|p←

    Ps,

    prop]

    sol=

    [s|s←

    [5..],sum′s]

    Ps=

    [x∗(s−x)|x←

    [2..(s−

    1)‘div‘2]]

    Sp=...

    Xevaluando

    tenemos

    sol=

    [11,(p

    =30)

    XEnel

    problemaoriginal

    (1969)la

    segundafrase

    es:PROD.—

    ¡Ajá!,

    enton

    cesya

    sétu

    suma

    EJERCIC

    IO