Advertisement
Dimitrija

Ф1 Трка (30 поени)

Nov 6th, 2021
1,569
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.50 KB | None | 0 0
  1. import java.util.LinkedList;
  2. import java.util.List;
  3. import java.io.*;
  4. import java.util.Collections;
  5. import java.util.List;
  6. import java.util.stream.Collectors;
  7.  
  8.  
  9. public class F1Test {
  10.  
  11.     public static void main(String[] args) {
  12.  
  13.         //File file = new File("C:\\Users\\Public\\Documents\\IntelliJ Java\\src\\npKol1\\F1Test\\test.txt");
  14.  
  15.         F1Race f1Race = new F1Race();
  16. //        try {
  17. //            f1Race.readResults(new FileInputStream(file));
  18. //        } catch (FileNotFoundException e) {
  19. //            e.printStackTrace();
  20. //        }
  21.         f1Race.readResults(System.in);
  22.         f1Race.printSorted(System.out);
  23.     }
  24.  
  25. }
  26.  
  27.  
  28.  
  29. class F1Race {
  30.  
  31.     List<Driver> drivers;
  32.  
  33.     public F1Race(){}
  34.  
  35.     public void readResults(InputStream inputStream) {
  36.         BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
  37.  
  38.         drivers = bufferedReader.lines()
  39.                 .map(s -> Driver.createDriver(s))
  40.                 .collect(Collectors.toList());
  41.  
  42. //        for (int i=0;i<drivers.size();i++){
  43. //            System.out.println(drivers.get(i));
  44. //        }
  45.  
  46.     }
  47.  
  48.     public void printSorted(OutputStream outputStream) {
  49.         PrintWriter printWriter = new PrintWriter(outputStream);
  50.  
  51.         Collections.sort(drivers);
  52.  
  53.         for (int i=0;i<drivers.size();i++){
  54.             int numberofSpaces = 12- drivers.get(i).getName().length();
  55.             StringBuilder stringBuilder = new StringBuilder();
  56.             System.out.print(i+1+". "+ drivers.get(i).getName());
  57.             for (int j=0;j<numberofSpaces;j++){
  58.                 stringBuilder.append(" ");
  59.             }
  60.             System.out.println(stringBuilder.toString() + drivers.get(i).bestLap());
  61.         }
  62.  
  63.     }
  64. }
  65. class Driver implements Comparable<Driver>{
  66.     public String getName() {
  67.         return name;
  68.     }
  69.  
  70.     private String name;
  71.     private List<Lap> laps;
  72.     public Driver(List<Lap> laps, String name){
  73.         this.laps = laps;
  74.         this.name = name;
  75.     }
  76.  
  77.     @Override
  78.     public String toString() {
  79.         StringBuilder stringBuilder = new StringBuilder();
  80.         stringBuilder.append(name);
  81.         stringBuilder.append(" ");
  82.         for (int i=0;i<laps.size();i++){
  83.             stringBuilder.append(laps.get(i));
  84.             stringBuilder.append(" ");
  85.         }
  86.         return stringBuilder.toString();
  87.     }
  88.  
  89.     public Driver(){
  90.  
  91.     }
  92.  
  93.     public static Driver createDriver(String s){
  94.         String[] strings = s.split("\\s+");
  95.         String name = strings[0];
  96.         List<Lap> laps = new LinkedList<Lap>();
  97.         laps.add(new Lap(strings[1]));
  98.         laps.add(new Lap(strings[2]));
  99.         laps.add(new Lap(strings[3]));
  100.         return new Driver(laps,name);
  101.     }
  102.  
  103.  
  104.     @Override
  105.     public int compareTo(Driver o) {
  106.         return fastestTime(bestLap(),o.bestLap());
  107.     }
  108.  
  109.     public Lap bestLap() {
  110.         Lap lap = new Lap(laps.get(0).getMm(),laps.get(0).getSs(),laps.get(0).getMmm());
  111.         for (int i=1;i<laps.size();i++){
  112.             if (fastestTime(lap,laps.get(i)) == 1){
  113.                 lap = laps.get(i);
  114.             }
  115.         }
  116.         return lap;
  117.     }
  118.  
  119.     private int fastestTime(Lap lap, Lap lap1) {
  120.         if (lap.getMm() < lap1.getMm()){
  121.             return -1;
  122.         }
  123.         else if (lap.getMm() == lap1.getMm()&&lap.getSs() < lap1.getSs()){
  124.             return -1;
  125.         }
  126.         if (    lap.getMm() == lap1.getMm() &&
  127.                 lap.getSs() == lap1.getSs() &&
  128.                 lap.getMmm() < lap1.getMmm()){
  129.             return -1;
  130.         }
  131.         if (    lap.getMm() == lap1.getMm() &&
  132.                 lap.getSs() == lap1.getSs() &&
  133.                 lap.getMmm() == lap1.getMmm()){
  134.             return 0;
  135.         }
  136.  
  137.         return 1;
  138.  
  139.     }
  140. }
  141. class Lap {
  142.     private final int mm;
  143.     private final int ss;
  144.     private final int mmm;
  145.  
  146.     public int getMm() {
  147.         return mm;
  148.     }
  149.  
  150.     public int getSs() {
  151.         return ss;
  152.     }
  153.  
  154.     public int getMmm() {
  155.         return mmm;
  156.     }
  157.  
  158.     public Lap(int mm, int ss, int mmm) {
  159.         this.mm = mm;
  160.         this.ss = ss;
  161.         this.mmm = mmm;
  162.     }
  163.  
  164.     public Lap(String string) {
  165.         String[]strings = string.split(":");
  166.         this.mm = Integer.parseInt(strings[0]);
  167.         this.ss = Integer.parseInt(strings[1]);
  168.         this.mmm = Integer.parseInt(strings[2]);
  169.     }
  170.  
  171.     @Override
  172.     public String toString() {
  173.         return String.format("%01d:%02d:%03d",mm,ss,mmm);
  174.     }
  175. }
  176.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement