Advertisement
Guest User

teste 2017 plog incompleto

a guest
Nov 20th, 2018
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 4.48 KB | None | 0 0
  1. %player(Name, UserName, Age).
  2. player('Danny', 'Best Player Ever', 27).
  3. player('Annie', 'Worst Player Ever', 24).
  4. player('Harry', 'A-Star Player', 26).
  5. player('Manny', 'The Player', 14).
  6. player('Jonny', 'A Player', 16).
  7.  
  8. %game(Name, Categories, MinAge).
  9. game('5 ATG', [action, adventure, open-world, multiplayer], 18).
  10. game('Carrier Shift: Game Over', [action, fps, multiplayer, shooter], 16
  11. ).
  12. game('Duas Botas', [action, free, strategy, moba], 12).
  13.  
  14. %played(Player, Game, HoursPlayed, PercentUnlocked)
  15. :- dynamic played/4.
  16. played('Best Player Ever', '5 ATG', 3, 83).
  17. played('Worst Player Ever', '5 ATG', 52, 9).
  18. played('The Player', 'Carrier Shift: Game Over', 44, 22).
  19. played('A Player', 'Carrier Shift: Game Over', 48, 24).
  20. played('A-Star Player', 'Duas Botas', 37, 16).
  21. played('Best Player Ever', 'Duas Botas', 33, 22).
  22.  
  23. % 1
  24.  
  25. playedALot(Player) :-
  26.     played(Player, _Game, Hours, _Percent),
  27.     Hours >= 50.
  28.  
  29. % 2
  30.  
  31. isAgeAppropriate(Player, Game) :-
  32.     player(Player, _Username, Age),
  33.     game(Game, _Categories, MinAge),
  34.     Age >= MinAge.
  35.  
  36. % 3
  37.  
  38. updatePlayer(Player, Game, Hours, Percentage) :-
  39.     played(Player, Game, CurrHours, CurrPercentage),
  40.     NewHours is Hours + CurrHours,
  41.     NewPercentage is CurrPercentage + Percentage,
  42.     retract(played(Player, Game, CurrHours, CurrPercentage)),
  43.     asserta(played(Player, Game, NewHours, NewPercentage)).
  44.  
  45. % 4
  46.  
  47. listGamesOfCategory(Cat) :-
  48.     print_all_games_of_cat(Cat, []).
  49.  
  50. print_all_games_of_cat(Cat, VisitedGames) :-
  51.     game(Name, Categories, MinAge),
  52.     \+ member(Name, VisitedGames),
  53.     member(Cat, Categories), !,
  54.     append(VisitedGames, [Name], VisitedGames2),
  55.     write(Name), write(' ('), write(MinAge), write(')'), nl,
  56.     print_all_games_of_cat(Cat, VisitedGames2).
  57.    
  58. print_all_games_of_cat(_, _).
  59.  
  60. % 5
  61.  
  62. timePlayingGames(Player, Games, ListOfTimes, SumTimes) :-
  63.     timePlayingGames_aux(Player, Games, [], ListOfTimes, 0, SumTimes).
  64.  
  65. timePlayingGames_aux(_, [], ListOfTimes, ListOfTimes, SumTimes, SumTimes).
  66.  
  67. timePlayingGames_aux(Player, [GamesH | GamesT], CurrListOfTimes, ListOfTimes, CurrSumTimes, SumTimes) :-
  68.     played(Player, GamesH, Time, _), !,
  69.     CurrSumTimes2 is CurrSumTimes + Time,
  70.     append(CurrListOfTimes, [Time], CurrListOfTimes2),
  71.     timePlayingGames_aux(Player, GamesT, CurrListOfTimes2, ListOfTimes, CurrSumTimes2, SumTimes).
  72.  
  73. timePlayingGames_aux(Player, [_GamesH | GamesT], CurrListOfTimes, ListOfTimes, CurrSumTimes, SumTimes) :-
  74.     append(CurrListOfTimes, [0], CurrListOfTimes2),
  75.     timePlayingGames_aux(Player, GamesT, CurrListOfTimes2, ListOfTimes, CurrSumTimes, SumTimes).
  76.  
  77. % 6
  78.  
  79. fewHours(Player, Games) :-
  80.     fewHours_aux(Player, [], [], Games).
  81.  
  82. fewHours_aux(Player, VisitedGames, CurrGames, Games) :-
  83.     played(Player, Game, Hours, _Percent),
  84.     \+ member(Game, VisitedGames),
  85.     Hours < 10, !,
  86.     append(CurrGames, [Game], CurrGames2),
  87.     append(VisitedGames, [Game], VisitedGames2),
  88.     fewHours_aux(Player, VisitedGames2, CurrGames2, Games).
  89.  
  90. fewHours_aux(Player, VisitedGames, CurrGames, Games) :-
  91.     played(Player, Game, _Hours, _Percent),
  92.     \+ member(Game, VisitedGames), !,
  93.     append(VisitedGames, [Game], VisitedGames2),
  94.     fewHours_aux(Player, VisitedGames2, CurrGames, Games).
  95.  
  96. fewHours_aux(_Player, _VisitedGames, Games, Games).
  97.  
  98. % 7
  99. % Lmao sou nabo podia usar findall
  100.  
  101. ageRange(MinAge, MaxAge, Players) :-
  102.     % ageRange_aux(MinAge, MaxAge, [], Players, []).
  103.     findall(Name, (player(Name, _Username, Age), Age >= MinAge, Age =< MaxAge), Players).
  104.  
  105. ageRange_aux(MinAge, MaxAge, CurrPlayers, Players, CheckedPlayers) :-
  106.     player(Player, _Username, Age),
  107.     \+ member(Player, CheckedPlayers),
  108.     Age >= MinAge,
  109.     Age =< MaxAge, !,
  110.     append(CurrPlayers, [Player], CurrPlayers2),
  111.     append(CheckedPlayers, [Player], CheckedPlayers2),
  112.     ageRange_aux(MinAge, MaxAge, CurrPlayers2, Players, CheckedPlayers2).
  113.  
  114. ageRange_aux(MinAge, MaxAge, CurrPlayers, Players, CheckedPlayers) :-
  115.     player(Player, _Username, _Age),
  116.     \+ member(Player, CheckedPlayers), !,
  117.     append(CheckedPlayers, [Player], CheckedPlayers2),
  118.     ageRange_aux(MinAge, MaxAge, CurrPlayers, Players, CheckedPlayers2).
  119.  
  120. ageRange_aux(_MinAge, _MaxAge, Players, Players, _CheckedPlayers).
  121.  
  122. % 8
  123.  
  124. :- use_module(library(lists)).
  125.  
  126. averageAge(Game, AverageAge) :-
  127.     findall(Age, (played(_Username, Game, _, _), player(_Name, _Username, Age)), Ages),
  128.     sumlist(Ages, AgeSum),
  129.     length(Ages, AgeLen),
  130.     AgeLen > 0,
  131.     AverageAge is AgeSum / AgeLen.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement