
Queridos chicos y queridas chicas, la semana que viene comienzan las clases del segundo cuatrimestre y habrá que ponerse las pilas. Así que supongo que la documentación que os enlazo os puede resultar de interés:
Estructuras de datos y métodos algorítmicos : ejercicios resueltos
Os agradecería (y supongo que vosotros tambień) que si encontráis algo por la red relacionado con la asignatura lo publicárais aquí para colaborar entre todos en la dinamización de los contenidos.
Nos vemos el lunes!
Como más de uno lo habéis insinuado, os aviso de que en este blog no voy a dejar ningún tipo de material, ya que para eso está la plataforma moodle.
ResponderEliminarLKB, que le parece si de alguna manera se pudiera publicar en este blog, aspectos relacionados con el mundo laboral, becas, ayudas, investigaciones, ...
ResponderEliminarA mí me parece perfecto siempre y cuando estén dentro del ámbito de las Estructuras de Datos.
ResponderEliminarLISTAS EN PROLOG ≈ ESPECIFICACION ALGEBRAICA
ResponderEliminaresVacia([]).
primero([X|_],X).
resto([_|R],R).
setPrimero([_|L],E,[E|L]).
setResto(X,R,[X|R]).
insertarPrincipio(E,L,[E|L]).
insertarPrincipio2(O,A,K):-A=[],setResto(A,[],P),setPrimero(P,O,K),!.
insertarPrincipio2(O,L,K):-primero(L,P),resto(L,R),setResto(P,R,I),insertarPrincipio(I,O,K). %setPrimero
eliminaPrimero([_|R],R).
clone(A,A).
clone2([],[]).
clone2(A,S):-resto(A,R),primero(A,P),clone2(R,D),insertarPrincipio(P,D,S),!.
toString([]).
toString([X|R]):-write(X),write(' '),toString(R).
equals([],[]).
equals([X|R],[Y|T]):-X=Y,equals(R,T).
longitud([],0).
longitud([_|R],N):-N is 1+S,longitud(R,S).
ultimo([X],X).
ultimo([_|R],N):-ultimo(R,N).
elementoN([X|_],1,X).
elementoN([_|R],N,S):-A is N-1,elementoN(R,A,S).
pertenece(L,O):-posicion(L,O,N),N>0,!.
posicion([],_,_):-fail.
posicion([O|_],O,1).
posicion([_|R],O,N):-posicion(R,O,A),N is A+1.
insertarFinal([],O,[O]).
insertarFinal([X|R],O,[X|P]):-insertarFinal(R,O,P).
insertarN(L,O,1,[O|L]).
insertarN([X|L],O,N,[X|S]):-A is N-1,insertarN(L,O,A,S).
concatenar(X,[],[X]).
concatenar(X,[Y|S],Ñ):-insertarFinal(X,Y,P),concatenar(P,S,Ñ).
eliminaO(O,[X|L],L):-O=X.
eliminaO(O,[_|L],A):-eliminaO(O,L,A).
eliminaUltimo([_],[]).
eliminaUltimo([X|R],[X|A]):-eliminaUltimo(R,A).
eliminaN([_|R],1,R).
eliminaN([X|R],N,[X|P]):-A is N-1,eliminaN(R,A,P).
modificaN(A,O,N,B):-eliminaN(A,N,S),insertarN(S,O,N,B).
modificaObjeto(L,O1,O2,S):-pertenece(L,O1),posicion(L,O1,N),modificaN(L,O2,N,S).
modificaPrimero(L,O,P):-modificaN(L,O,1,P).
coloca([],O,[O]).
coloca(A,O,S):-primero(A,P),P@>O,insertarPrincipio(A,O,S).
coloca([X|R],O,[X|Z]):-coloca(R,O,Z),!.
ordena([],[]).
ordena([X|R],P):-ordena(R,S),coloca(S,X,P),!.
crear(0,[0]).
crear(N,[N|A]):-Q is N-1,crear(Q,A),!.
concatenar2([],A,A).
concatenar2([X|R],A,[X|W]):-concatenar2(R,A,W). %%como lo hago en java
Supongo que las listas en prolog os recuerdan a la especificación algebraica del TAD lista que hemos visto en clase ¿no?
ResponderEliminarGracias 0.1835113 por hacerlo evidente y espero que os haya ayudado a entenderlo mejor en ambas asignaturas.