Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //package naprednolabs;
- import java.io.*;
- import java.util.*;
- import java.util.stream.Collectors;
- import java.util.stream.Stream;
- public class F1Test {
- public static void main(String[] args) throws IOException {
- F1Race f1Race = new F1Race();
- f1Race.readResults(System.in);
- f1Race.printSorted(System.out);
- }
- }
- class Pilot implements Comparable<Pilot> {
- private String name;
- private String lap1, lap2, lap3;
- private int bestint;
- private String best;
- public Pilot() {
- this.name = "tanja savic";
- this.lap1 = "empty";
- this.lap2 = "empty";
- this.lap3 = "empty";
- this.bestint = 0;
- }
- public Pilot(String name, String lap1, String lap2, String lap3) {
- this.name = name;
- this.lap1 = lap1;
- this.lap2 = lap2;
- this.lap3 = lap3;
- calc();
- }
- public static Pilot createPilot(String line) {
- String[] help = line.split("\\s+");
- return new Pilot(help[0], help[1], help[2], help[3]);
- }
- private void calc() {
- //1:57:563 1:55:187 1:55:634
- String[] att1 = lap1.split(":");
- String[] att2 = lap2.split(":");
- String[] att3 = lap3.split(":");
- int zalap1 = Integer.parseInt(att1[0]) * 60000 + Integer.parseInt(att1[1]) * 1000 + Integer.parseInt(att1[2]);
- int zalap2 = Integer.parseInt(att2[0]) * 60000 + Integer.parseInt(att2[1]) * 1000 + Integer.parseInt(att2[2]);
- int zalap3 = Integer.parseInt(att3[0]) * 60000 + Integer.parseInt(att3[1]) * 1000 + Integer.parseInt(att3[2]);
- if (zalap1 < zalap2 && zalap1 < zalap3) {
- this.best = lap1;
- this.bestint = zalap1;
- } else if (zalap2 < zalap1 && zalap2 < zalap3) {
- this.best = lap2;
- this.bestint = zalap2;
- } else {
- this.best = lap3;
- this.bestint = zalap3;
- }
- }
- @Override
- public int compareTo(Pilot other) {
- return Integer.compare(this.bestint, other.bestint);
- }
- @Override
- public String toString() {
- return String.format("%0$-10s", this.name) + String.format("%0$10s", this.best);
- }
- }
- class F1Race {
- private List<Pilot> niza;
- public F1Race() {
- this.niza = new ArrayList<>();
- }
- public void readResults(InputStream inputStream) {
- BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
- this.niza = br.lines()
- .map(Pilot::createPilot)
- .collect(Collectors.toList());
- }
- public void printSorted(OutputStream outputStream) {
- PrintWriter pw = new PrintWriter(outputStream);
- List<Pilot> attempt = this.niza.stream().sorted().collect(Collectors.toList());
- pw.flush();
- for (int i = 0; i < this.niza.size(); i++)
- pw.println(i + 1 + ". " + attempt.get(i));
- pw.flush();
- }
- }
- /*
- Да се имплементира класа F1Race која ќе чита од влезен тек (стандарден влез, датотека, ...)
- податоци за времињата од последните 3 круга на неколку пилоти на Ф1 трка. Податоците се во следниот формат:
- Driver_name lap1 lap2 lap3, притоа lap е во формат mm:ss:nnn каде mm се минути ss се секунди
- nnn се милисекунди (илјадити делови од секундата). Пример:
- Vetel 1:55:523 1:54:987 1:56:134.
- Ваша задача е да ги имплементирате методите:
- F1Race() - default конструктор
- void readResults(InputStream inputStream) - метод за читање на податоците
- void printSorted(OutputStream outputStream) - метод кој ги печати сите пилоти
- сортирани според нивното најдобро време (најкраткото време од нивните 3 последни круга)
- во формат Driver_name best_lap со 10 места за името на возачот (порамнето од лево) и
- 10 места за времето на најдобриот круг порамнето од десно. Притоа времето е во истиот
- формат со времињата кои се читаат.
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement