Clojure - Punts amb clausures 1 X56149


Statement
 

pdf   zip

Es poden utilitzar clausures per definir objectes sense classe. En aquest problema definirem l’"objecte" per representar punts en el pla amb clausures. Així fent (punt22)(punt\,2\,2) ens tornarà una instància amb les coordenades cartesianes {2,2}\{2,\,2\}.

  1. Afegiu la funcionalitat tal que a l’aplicar les keywords (a l’estil dels mètodes) :crt:crt o :plr:plr per obtenir les coordenades cartesianes o polars respectivament.

  2. Afegiu la possibilitat de calcular distàncies euclidianes amb la keyword :dst:dst.

  3. Doneu una funció mes-propera que, donada una llista de punts i un punt, ens torni el punt de la llista més proper al donat com a paràmetre.

Public test cases
  • Input

    ((punt 2 0) :crt)
    ((punt 2 2) :plr)
    ((punt 2 2) :dst (punt 2 0))
    (mes-propera (punt 2 0) (list (punt 1 1) (punt 2 1) (punt 3 2)))
    

    Output

    (2 0)
    (2.8284271247461903 45.0)
    2.0
    (2 1)
    
  • Information
    Author
    Gerard Escudero
    Language
    Catalan
    Official solutions
    Clojure
    User solutions
    Clojure