Advertisement
Guest User

dsexam

a guest
Nov 9th, 2015
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.08 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. import java.util.Map.Entry;
  7.  
  8. import java.util.Scanner;
  9. import java.util.TreeMap;
  10.  
  11.  
  12. public class Scoreboard {
  13.     public static void main(String[] args) {
  14.         Scanner scan = new Scanner(System.in);
  15.         HashMap<String, String> users = new HashMap<>();
  16.         HashMap<String, String> games = new HashMap<>();
  17.         HashMap<String, HashMap<String, ArrayList<Integer>>> scoreboard = new HashMap<>();
  18.         String input = scan.nextLine();
  19.  
  20.         while (!input.equals("End")) {
  21.             String[] line = input.split(" ");
  22.             String command = line[0];
  23.  
  24.             switch (command) {
  25.             case "RegisterUser":
  26.                 String username = line[1];
  27.                 String password = line[2];
  28.                 if (users.containsKey(username)) {
  29.                     System.out.println("Duplicated user");
  30.                 } else {
  31.                     users.put(username, password);
  32.                     System.out.println("User registered");
  33.                 }
  34.                 break;
  35.  
  36.             case "RegisterGame":
  37.                 String gamename = line[1];
  38.                 String gamePassword = line[2];
  39.                 if (games.containsKey(gamename)) {
  40.                     System.out.println("Duplicated game");
  41.                 } else {
  42.                     games.put(gamename, gamePassword);
  43.                     System.out.println("Game registered");
  44.                 }
  45.                 break;
  46.  
  47.             case "AddScore":
  48.                 String userForScore = line[1];
  49.                 String passForUserScore = line[2];
  50.                 String gameToScore = line[3];
  51.                 String passForGame = line[4];
  52.                 int score = Integer.parseInt(line[5]);
  53.  
  54.                 if (users.containsKey(userForScore) && passForUserScore.equals(users.get(userForScore))
  55.                         && games.containsKey(gameToScore) && passForGame.equals(games.get(gameToScore))) {
  56.                     if (scoreboard.containsKey(gameToScore)) {
  57.                         if (scoreboard.get(gameToScore).containsKey(userForScore)) {
  58.                             scoreboard.get(gameToScore).get(userForScore).add(score);
  59.                             System.out.println("Score added");
  60.                         } else {
  61.                             ArrayList<Integer> tempList2 = new ArrayList<>();
  62.                             tempList2.add(score);
  63.                             scoreboard.get(gameToScore).put(userForScore, tempList2);
  64.                             System.out.println("Score added");
  65.                         }
  66.                        
  67.                     } else {
  68.                         HashMap<String, ArrayList<Integer>> tempMap = new HashMap<>();
  69.                         ArrayList<Integer> tempList = new ArrayList<>();
  70.                         tempList.add(score);
  71.                         tempMap.put(userForScore, tempList);
  72.                         scoreboard.put(gameToScore, tempMap);
  73.                         System.out.println("Score added");
  74.                     }
  75.                 } else {
  76.                     System.out.println("Cannot add score");
  77.                 }
  78.                 break;
  79.  
  80.             case "ShowScoreboard":
  81.                 String game = line[1];
  82.                 boolean haveTen = false;
  83.                 Map<Integer, ArrayList<String>> sortedByName = new TreeMap<>(Collections.reverseOrder());
  84.                 if(!games.containsKey(game)) {
  85.                     System.out.println("Game not found");
  86.                     break;
  87.                 } else if(!scoreboard.containsKey(game)) {
  88.                     System.out.println("No score");
  89.                    
  90.                     break;
  91.                 }
  92.                 for (Entry<String, ArrayList<Integer>> entry : scoreboard.get(game).entrySet()) {
  93.                     if (haveTen) {
  94.                         break;
  95.                     }
  96.                     entry.getValue().sort((a,b) -> b.compareTo(a));
  97.                     for (Integer i : entry.getValue()) {
  98.                         if (haveTen) {
  99.                             break;
  100.                         }
  101.                         if (sortedByName.containsKey(i)) {
  102.                             sortedByName.get(i).add(entry.getKey());
  103.                         } else {
  104.                             ArrayList<String> tempArrayList = new ArrayList<>();
  105.                             tempArrayList.add(entry.getKey());
  106.                             sortedByName.put(i, tempArrayList);
  107.                         }
  108.                         if (sortedByName.size() >= 10) {
  109.                             haveTen = true;
  110.                         }
  111.                     }
  112.                 }
  113.                 int count = 1;
  114.  
  115.                 for (Entry<Integer, ArrayList<String>> entry : sortedByName.entrySet()) {
  116.                     entry.getValue().sort((a,b) -> a.compareTo(b));
  117.                     if (count > 10) {
  118.                         break;
  119.                     }
  120.                     for (String name : entry.getValue()) {
  121.                         if (count > 10) {
  122.                             break;
  123.                         }
  124.                         System.out.printf("#%d %s %d\n", count, name, entry.getKey());
  125.                         count++;
  126.                     }
  127.                 }
  128.                 break;
  129.             case "DeleteGame":
  130.                 String gameToDelete = line[1];
  131.                 String passForGameToDel = line[2];
  132.                 if(games.containsKey(gameToDelete) && passForGameToDel.equals(games.get(gameToDelete))) {
  133.                     if(scoreboard.containsKey(gameToDelete)) {
  134.                         scoreboard.remove(gameToDelete);
  135.                         games.remove(gameToDelete);
  136.                         System.out.println("Game deleted");
  137.                     } else {
  138.                         games.remove(gameToDelete);
  139.                         System.out.println("Game deleted");
  140.                     }
  141.                 } else {
  142.                     System.out.println("Cannot delete game");
  143.                 }
  144.                 break;
  145.                
  146.             case "ListGamesByPrefix":
  147.                 String prefix = line[1];
  148.                 List<String> gamesByPrefix = new ArrayList<>();
  149.                 for(Entry<String, String> entry : games.entrySet()) {
  150.                     if(entry.getKey().startsWith(prefix)) {
  151.                         gamesByPrefix.add(entry.getKey());
  152.                         if(gamesByPrefix.size() >= 10) {
  153.                             break;
  154.                         }
  155.                     }
  156.                 }
  157.                 if(gamesByPrefix.size() == 0) {
  158.                     System.out.println("No matches");
  159.                     break;
  160.                 }
  161.                 gamesByPrefix.sort((a,b) -> a.compareTo(b));
  162.                 String output = gamesByPrefix.toString();
  163.                 output = output.replace("[", "");
  164.                 output = output.replace("]", "");
  165.                 System.out.println(output);
  166.             default:
  167.                 break;
  168.             }
  169.             input = scan.nextLine();
  170.         }
  171.     }
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement