Ordenar lista

Ver el tema anterior Ver el tema siguiente Ir abajo

Ordenar lista

Mensaje por carlosmgilp el Vie Jun 24, 2016 9:28 pm

Hola muchachos como están.

Disculpen quien me enseña a crear una función para ordenar esta lista.
La finalidad es ordenarla de forma ascendente (Desde la A hasta la Z)

Esta es la lista que tengo

Código:
(list '("cursorsize" 100) '("delobj" 1) '("facetres" 10) '("imageframe" 2) '("isolines" 8) '("mirrtext" 0) '("mtextcolumn" 0) '("dispsilh" 1) '("peditaccept" 1) '("splinesegs" 16) '("surftab1" 12)
      '("surftab2" 12) '("shortcutmenu" 27) '("selectionannodisplay" 0) '("meshtype" 0) '("grips" 1) '("attdia" 0) '("pickfirst" 1) '("delobj" 1) '("filedia" 1))

Gracias.

carlosmgilp

Mensajes : 96
Fecha de inscripción : 17/03/2016
Edad : 35
Localización : Venezuela

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ordenar lista

Mensaje por amc.dicsac el Vie Jun 24, 2016 9:46 pm

Hola que tal aca tengo un ejemplo del maestro LeeMac

Código:
Command: (acad_strlsort '("a" "d" "A" "D" "1" "-" "_"))
("-" "_" "1" "a" "A" "d" "D")



Última edición por amc.dicsac el Sáb Jun 25, 2016 1:11 am, editado 1 vez
avatar
amc.dicsac

Mensajes : 80
Fecha de inscripción : 17/03/2016
Edad : 27
Localización : Lima - Perú

Ver perfil de usuario http://axprogramlisp.blogspot.pe/

Volver arriba Ir abajo

Re: Ordenar lista

Mensaje por carlosmgilp el Sáb Jun 25, 2016 12:30 am

Hola hermano como estas.
Gracias por el dato, pero con la lista que tengo no me los ordena.
Esperemos haber si alguien me dice como se puede.
Saludos.

carlosmgilp

Mensajes : 96
Fecha de inscripción : 17/03/2016
Edad : 35
Localización : Venezuela

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ordenar lista

Mensaje por amc.dicsac el Sáb Jun 25, 2016 1:08 am

carlosmgilp escribió:Hola hermano como estas.
Gracias por el dato, pero con la lista que tengo no me los ordena.
Esperemos haber si alguien me dice como se puede.
Saludos.

Aqui te mando esta solucion espero que te sirva saludos.

Código:
(defun c:orden (/ NomenclatureList)
(setq NomenclatureList  (list  '("cursorsize" 100) '("delobj" 1) '("facetres" 10) '("imageframe" 2) '("isolines" 8)
                    '("mirrtext" 0) '("mtextcolumn" 0) '("dispsilh" 1) '("peditaccept" 1) '("splinesegs" 16)
                    '("surftab1" 12) '("surftab2" 12) '("shortcutmenu" 27) '("selectionannodisplay" 0)
                    '("meshtype" 0) '("grips" 1) '("attdia" 0) '("pickfirst" 1) '("delobj" 1) '("filedia" 1)))
(cd:LST_SortList NomenclatureList 0 0))


    ; ======================================================================== ;
    ; Autor ------> kruuger
    ; https://www.theswamp.org/index.php?topic=41954.msg470690#msg470690
    ; Sortowanie listy / Sort list                                             ;
    ;  Lst  [LIST] - lista do sortowania / list to sort                        ;
    ;  Pos   [INT] - pozycja sortowania / sort position                        ;
    ;  Order [INT] - 0 = rosnaco / ascending                                   ;
    ;                1 = malejaco / descending                                 ;
    ; ------------------------------------------------------------------------ ;
    ; example   (cd:LST_SortList (list '(1 "b") '(4 "a") '(2 "c")) 0 1)                  ;
    ; ======================================================================== ;
    (defun cd:LST_SortList (Lst Pos Order)
      (vl-Sort Lst
        (function
          (lambda (%1 %2)
            ( (if (zerop Order) < >)
              (nth Pos %1)
              (nth Pos %2)
            )
          )
        )
      )
    )
avatar
amc.dicsac

Mensajes : 80
Fecha de inscripción : 17/03/2016
Edad : 27
Localización : Lima - Perú

Ver perfil de usuario http://axprogramlisp.blogspot.pe/

Volver arriba Ir abajo

Re: Ordenar lista

Mensaje por carlosmgilp el Sáb Jun 25, 2016 1:57 am

Hola hermano como estas, funciona muy bien, me elimina el apostrofe pero después veo como se lo agrego a la lista final, para no agregarlo manualmente.

Un saludo y mil gracias.

carlosmgilp

Mensajes : 96
Fecha de inscripción : 17/03/2016
Edad : 35
Localización : Venezuela

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ordenar lista

Mensaje por Admin el Sáb Jun 25, 2016 2:48 am

Verifica esto

Código:
(defun c:orden (/ NomenclatureList)
(setq NomenclatureList  (list  '("cursorsize" 100) '("delobj" 1) '("facetres" 10) '("imageframe" 2) '("isolines" 8)
                    '("mirrtext" 0) '("mtextcolumn" 0) '("dispsilh" 1) '("peditaccept" 1) '("splinesegs" 16)
                    '("surftab1" 12) '("surftab2" 12) '("shortcutmenu" 27) '("selectionannodisplay" 0)
                    '("meshtype" 0) '("grips" 1) '("attdia" 0) '("pickfirst" 1) '("delobj" 1) '("filedia" 1)))
  (setq lista-ordenada(cd:LST_SortList NomenclatureList 0 0)))  ; asigna la lista ordenada a una variable


    ; ======================================================================== ;
    ; Autor ------> kruuger
    ; https://www.theswamp.org/index.php?topic=41954.msg470690#msg470690
    ; Sortowanie listy / Sort list                                            ;
    ;  Lst  [LIST] - lista do sortowania / list to sort                        ;
    ;  Pos  [INT] - pozycja sortowania / sort position                        ;
    ;  Order [INT] - 0 = rosnaco / ascending                                  ;
    ;                1 = malejaco / descending                                ;
    ; ------------------------------------------------------------------------ ;
    ; example  (cd:LST_SortList (list '(1 "b") '(4 "a") '(2 "c")) 0 1)                  ;
    ; ======================================================================== ;
    (DEFUN CD:LST_SORTLIST  (LST POS ORDER)

      (VL-SORT LST
              (FUNCTION
                (LAMBDA (%1 %2)
                  ((IF (ZEROP ORDER)
                      <
                      >)
                    (NTH POS %1)
                    (NTH POS %2)
                    )
                  )
                )
              )
      )


Admin
Admin

Mensajes : 164
Fecha de inscripción : 16/03/2016
Edad : 69
Localización : CORDOBA ARGENTINA

Ver perfil de usuario http://acadhispano.foroargentina.net

Volver arriba Ir abajo

Re: Ordenar lista

Mensaje por carlosmgilp el Sáb Jun 25, 2016 4:47 am

Bueno de por si solo agregaste la variable.

Pero los apostrofes si se van ya hice las comparaciones.

Jejeje.
Un saludo.

carlosmgilp

Mensajes : 96
Fecha de inscripción : 17/03/2016
Edad : 35
Localización : Venezuela

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ordenar lista

Mensaje por nolo el Dom Jun 26, 2016 12:41 pm

Esta estupenda la función de Kruuger pero yo lo hubiera echo así

Código:
(mapcar '(lambda(a)(assoc a NomenclatureList))(acad_strlsort (mapcar 'car NomenclatureList)))

Un saludo

nolo

Mensajes : 136
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ordenar lista

Mensaje por carlosmgilp el Dom Jun 26, 2016 5:46 pm

Hola Nolo como estas.

Muy buena opción.

Muchas gracias y sigo tomando nota.

carlosmgilp

Mensajes : 96
Fecha de inscripción : 17/03/2016
Edad : 35
Localización : Venezuela

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ordenar lista

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.