Funciones en Clojure
{:deps {org.clojure/clojure {:mvn/version "1.10.3"} ;; complient is used for autocompletion ;; add your libs here (and restart the runtime to pick up changes) compliment/compliment {:mvn/version "0.3.9"}}}Extensible Data Notation
{:hello (clojure-version)}0.1s
(defn cuadrado "Devuelve n al cuadrado" [n] {:pre [(int? n)] :post [(fn [x] (int? x))]} (* n n))0.0s
(cuadrado 2.8 20)0.0s
(cuadrado 10)0.0s
(macroexpand (defn cuadrado [n] (* n n)))0.0s
(ns-interns *ns*)0.0s

Crear una función que reparta una mano de cartas españolas.
El input serán dos colecciones representando los naipes y pintas respectivamente, y en un entero representando el número de cartas a repartir.
El output debe ser una colección, por ejemplo un vector, que contenga las cartas representadas en pares [numero :pinta]
Algoritmo:
Crear una colección de elementos aleatorios de los naipes
Obtener un elemento aleatorio de los naipes
Crear una colección de los elementos aleatorios de las pintas
Obtener un elemento aleatorio de las pintas
Devolver una colección donde cada elemento sea el producto de la unión de un elemento aleatorio de los naipes y un elemento aleatorio de las pintas.
(def numero-carta (concat (range 1 8) (range 10 13)))0.0s
(def pintas [:bastos :oros :espadas :copas])0.0s
(rand-nth numero-carta)0.0s
(rand-nth pintas)0.0s
(repeatedly 10 (rand-nth pintas))0.0s
(repeatedly 5 (fn [] (rand-nth numero-carta)))0.0s
(def reparto-carta-num 10) 0.0s
(let [reparto-carta-num (repeatedly 10 (fn [] (rand-nth numero-carta))) reparto-pintas (repeatedly 10 (fn [] (rand-nth pintas)))] (mapv (fn [carta-num pinta] [carta-num pinta]) reparto-carta-num reparto-pintas))0.0s
(defn repartir-cartas "Devuelve una mano de n cartas del tipo de mazo codificado numeración de cartas y pintas" [n cartas pintas] (let [reparto-carta-num (repeatedly n (fn [] (rand-nth cartas))) reparto-pintas (repeatedly n (fn [] (rand-nth pintas)))] (mapv (fn [carta-num pinta] [carta-num pinta]) reparto-carta-num reparto-pintas)))0.0s
(def resultado (repartir-cartas 9 numero-carta pintas))0.0s
(sort-by second resultado)0.0s