Slipkorn

SuperHeroes

Jul 5th, 2014
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 3.44 KB | None | 0 0
  1. habilidad(superman,bardero([correForestCorre,soyGrosoYQue,rayitosVisuales,alientoAquafresh,vuelaVuela,miraCorpinios])).
  2.  
  3. habilidad(flash,velocista(300)). 
  4.  
  5. habilidad(batman,porArtefacto([artefacto(batarang,20),
  6. artefacto(batarangExplosivo,50), artefacto(baticinturon,250), artefacto(capa,80), 
  7. artefacto(batidora,30), artefacto(batigancho,50), artefacto(alfred,800), 
  8. artefacto(robin,10), artefacto(batimovil,700)])). % (A la cátedra le gusta Batman) 
  9.  
  10. habilidad(laMujerMaravilla,bardero([superFuerza, ligerona, brazaletesAntiBalas, lazoDeLaVerdad])). 
  11.  
  12. habilidad(linternaVerde,porArtefacto([artefacto(anillo,600)])). 
  13.  
  14. habilidad(ironMan,porArtefacto([artefacto(casco,50), artefacto(armadura,400)])). 
  15.  
  16. habilidad(spiderman,bichoDeLaboratorio). 
  17.  
  18. habilidad(hulk,bichoDeLaboratorio). 
  19.  
  20. habilidad(capitanAmerica,bichoDeLaboratorio). 
  21.  
  22. habilidad(punisher,bardero([seLaBanca])). 
  23.  
  24.  
  25. equipo(superman,ligaJusticia). 
  26. equipo(batman,ligaJusticia). 
  27. equipo(flash,ligaJusticia). 
  28. equipo(linternaVerde,ligaJusticia). 
  29. equipo(laMujerMaravilla,ligaJusticia). 
  30. equipo(ironMan,losVengadores). 
  31. equipo(spiderman,losVengadores). 
  32. equipo(hulk,losVengadores). 
  33. equipo(capitanAmerica,losVengadores). 
  34.  
  35. %1) Spiderman siempre trabaja solo porque nadie lo quiere por eso lo defino como un echo
  36. trabajaSolo(spiderman).
  37. trabajaSolo(Super):- %Luego andquiero los superheroes y quiero que no pertenescan a ningun equipo
  38.     habilidad(Super,_),
  39.     not(equipo(Super,_)).
  40.    
  41. %2)Primero defino potencia. 1 para cada caso
  42.  
  43. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  44. potencia(Super,Potencia):-
  45.         habilidad(Super,bardero(Lista)),
  46.         length(Lista,Potencia).
  47.        
  48. potencia(Super,Potencia):-
  49.         habilidad(Super,velocista(Potencia)).
  50.  
  51. %este recibe una lista [artefacto(Nombre,Cantidad)] y suma las cantidades
  52. sumaArtefactos([Primero|[]],Parcial):- artefacto(_,Parcial) = Primero.     
  53. sumaArtefactos([Primero|Cola],Suma):-
  54.         sumaArtefactos(Cola,Parcial),
  55.         artefacto(_,Num) = Primero,
  56.         Suma is Num + Parcial.
  57.        
  58. potencia(Super,Potencia):-
  59.         habilidad(Super,porArtefacto(Lista)),
  60.         sumaArtefactos(Lista,Potencia).
  61.        
  62. potencia(Super,Potencia):-
  63.         habilidad(Super,bichoDeLaboratorio),
  64.         Potencia is 200.
  65.        
  66. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  67.  
  68. %ahora paso a hacer el potencia media, pero antes
  69.  
  70. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  71. %Este recibe la lista de SuperHeroes que pertenecen al Equipo y devuelve la lista con sus potencias.
  72. aplicarpotencia([Primero|[]],[ListaPot]):- potencia(Primero,ListaPot).
  73. aplicarpotencia([Primero|Cola],[Potencia|ListaPot]):-
  74.     aplicarpotencia(Cola,ListaPot),
  75.     potencia(Primero,Potencia).
  76.  
  77. %Este recibe una lista de numeros y la suma.
  78. sumar([Primero|[]],Primero).
  79. sumar([Primero|Cola],Suma):-
  80.     sumar(Cola,Parcial),
  81.     Suma is Primero + Parcial.
  82.    
  83. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  84.  
  85. potenciaMedia(Equipo,Potencia):-
  86.     findall(Super,equipo(Super,Equipo),Lista),
  87.     aplicarpotencia(Lista,Potencias),
  88.     length(Potencias,Cant),
  89.     sumar(Potencias,Total),
  90.     Potencia is Total / Cant.
  91.    
  92. %3) Preguntamos si el primero es mayor que el segundo para saber si esta ordenado
  93.  
  94. estaOrdenado([Primero,Segundo|[]]):-
  95.     potencia(Primero,Pot1),
  96.     potencia(Segundo,Pot2),
  97.     Pot1 > Pot2.
  98.    
  99. estaOrdenado([Primero,Segundo|Cola]):-
  100.     estaOrdenado([Segundo|Cola]),
  101.     potencia(Primero,Pot1),
  102.     potencia(Segundo,Pot2),
  103.     Pot1 > Pot2.
Advertisement
Add Comment
Please, Sign In to add comment