Odio a mi cerebro

Lunes 14 de Abril de 2008

Cuando estoy de lo más tranquilo, navegando, tarde a la noche, y encuentro un problema interesante, no me deja dormirme hasta que lo resuelvo…

Se me ocurrió una forma de hacer tries en Lisp, y aunque lo anoté para resolverlo cuando me despierte, no me podía dormir.

Es feo, pero funciona:

(defun find-son (tree key)
  (car (remove-if-not (lambda (x) (equal key (car x)))
                                 (cdr tree))))
 
(defun list-to-trie-helper (tree list)
  (unless (null list)
    (let* ((branch (find-son tree (cadr list)))
           (result (or (remove branch tree)
                       (list (car list)))))
      (append result
              (list (list-to-trie-helper
                        branch (cdr list)))))))
 
(defun list-to-trie (tree list)
  (list-to-trie-helper tree (cons _ list)))

Toma una lista (se supone que lo haga con strings, pero bueno…) y la transforma en un trie, con _ como nodo raíz, y los nil indican terminales.

Si agrego (T O R D E K), (P R O G R A M A) y (P R O G R A M A C I O N) a un árbol, me devolverá

(_
 (T (O (R (D (E (K NIL))))))
 (P (R (O (G (R (A (M (A NIL
                       (C (I (O (N NIL)))))))))))))

Ahora, si me disculpan, tengo que dormir.

Por favor, dejá un comentario, o un trackback desde tu sitio. Podés seguir la conversación con el Feed de comentarios de este post.

4 Comentarios a “Odio a mi cerebro”

  1. baltha dijo:

    Lunes 14 de Abril de 2008, 23:05

    vos estas muy al “gas”

  2. max dijo:

    Martes 13 de Mayo de 2008, 04:34

    ..sin palabras…

    lo tuyo no tiene nombre

  3. Tordek dijo:

    Martes 13 de Mayo de 2008, 05:35

    Sí, se llama “Blog”.

    Igual no sé por tu comentario si eso es bueno o malo…

  4. carpincho dijo:

    Domingo 18 de Mayo de 2008, 20:15

    a mi tb me pasa… cdo algo deja de funcionar no puedo dormir hasta arreglarlo… no me gusta dejar cosas sin andar
    saludos
    pd interesante

Comentá:

Entrá con tu cuenta, registrate, o escribí tus datos:

XHTML permitido: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">