0votos

Cuadrado de carácteres en Clojure

por josejuan hace 3 años

Por construcción por definición y verificación de equivalencia.

Crear un programa que lea un número y a partir de él cree un cuadrado de carácteres con ese tamaño. Los carácteres del borde deben ser diferentes a los del interior.

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
(ns prueba.cuadrado 
  (:gen-class)) 
 
(use '[clojure.string :only (join split)]) 
 
(defn construccion [i e n] 
  (let [r (fn [s] (replicate (- n 2) s)) 
        w (fn [c] [e (r c) (construccion i e 1)])] 
    (join (flatten (if (= n 1) 
                       [e "\n"] 
                       [(w e) (r (w i)) (w e)]))))) 
 
(defn definicion [i e n] 
  (let [s (range 1 (+ 1 n)) 
        c (fn [x y] 
            (if (= x n) 
              [e "\n"] 
              (if (and (> x 1) (> y 1) (< y n)) i e)))] 
    (join (flatten (for [y s x s] (c x y)))))) 
 
(defn abs [n] (max n (- n))) 
 
(defn comparar [i x n] 
  (if (< n 1) 
    (comparar i x (+ 1 (abs n))) 
    (= (construccion i x n) (definicion i x n)))) 
 
; prueba.core=> (filter #(not (comparar ":" "*" %)) (range 1 60)) 
; () 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.