Skip to content
Snippets Groups Projects
Verified Commit 251f94c5 authored by Jan Kožusznik's avatar Jan Kožusznik
Browse files

Lab14

parent 5cc02a9b
No related merge requests found
Pipeline #44 failed with stages
in 0 seconds
......@@ -3,7 +3,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cz.jezek</groupId>
<artifactId>lab13-efrei</artifactId>
<artifactId>lab14-efrei</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
......
package cz.jezek.lab11;
public class SortedSetMain {
public class Main {
public static void main(String[] args) {
Tournament tournament = Tournament.generate();
}
......
package cz.jezek.lab11;
import java.util.Objects;
public class Match {
private Oponents oponents;
private int player1Scorel;
private int player2Scorel;
public Match(Player player1, int player1Scorel, Player player2, int player2Scorel) {
this.oponents = new Oponents(player1, player2);
this.player1Scorel = player1Scorel;
this.player2Scorel = player2Scorel;
}
public int getScoreForPlayer(Player player) {
if (Objects.equals(player, oponents.getPlayer1())) {
return player1Scorel;
} else if (Objects.equals(player, oponents.getPlayer2())) {
return player2Scorel;
}
throw new IllegalArgumentException("Player is not participant of this match.");
}
public Oponents getOponents() {
return oponents;
}
public int getPlayer1Scorel() {
return player1Scorel;
}
public int getPlayer2Scorel() {
return player2Scorel;
}
@Override
public String toString() {
return String.format("Match: %s score: %02d:%02d", oponents, player1Scorel, player2Scorel);
}
}
package cz.jezek.lab11;
import java.util.Objects;
public class Oponents {
private Player player1;
private Player player2;
public Oponents(Player player1, Player player2) {
super();
this.player1 = player1;
this.player2 = player2;
}
public Player getPlayer1() {
return player1;
}
public Player getPlayer2() {
return player2;
}
public boolean contains(Player player) {
return Objects.equals(player, player1) || Objects.equals(player, player2);
}
@Override
public int hashCode() {
int result = 1;
result = result + ((player1 == null) ? 0 : player1.hashCode());
result = result + ((player2 == null) ? 0 : player2.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Oponents other = (Oponents) obj;
if (Objects.equals(player1, other.player1) && Objects.equals(player2, other.player2)) {
return true;
}
if (Objects.equals(player1, other.player2) && Objects.equals(player2, other.player1)) {
return true;
}
return false;
}
@Override
public String toString() {
return player1 + " vs " + player2;
}
}
package cz.jezek.lab11;
public class Player {
private String firstName;
private String lastName;
public static Player generateRandom() {
return new Player(RandomGenarator.selectRandom(RandomGenarator.NAMES),
RandomGenarator.selectRandom(RandomGenarator.SURNAMES));
}
public Player(String firstName, String lastName) {
super();
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((firstName == null) ? 0 : firstName.hashCode());
result = prime * result + ((lastName == null) ? 0 : lastName.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Player other = (Player) obj;
if (firstName == null) {
if (other.firstName != null)
return false;
} else if (!firstName.equals(other.firstName))
return false;
if (lastName == null) {
if (other.lastName != null)
return false;
} else if (!lastName.equals(other.lastName))
return false;
return true;
}
@Override
public String toString() {
return firstName + " " + lastName;
}
}
package cz.jezek.lab11;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class RandomGenarator {
public static final Random random = new Random();
public static final List<String> NAMES = Collections.unmodifiableList(Arrays.asList("Abigail", "Adam", "Ada",
"Adolf", "Adéla", "Adrián", "Adela", "Adrian", "Adina", "Aladár", "Adriána", "Alan", "Adriana", "Albert",
"Adriena", "Albín", "Agata", "Aleš", "Agáta", "Alex", "Agnes", "Alexander", "Agnesa", "Alexandr", "Agneša",
"Alexej", "Albína", "Alfons", "Alena", "Alfred", "Alenka", "Alfréd", "Alexandra", "Alois", "Alica", "Alojz",
"Alice", "Anatolij", "Alina", "André", "Alla", "Andreas", "Alma", "Andrej", "Aloisie", "Andrzej", "Alžbeta",
"Anthony", "Alžběta", "Anton", "Amália", "Antonie", "Amalie", "Antonín", "Amálie", "Antonio", "Amanda",
"Arnold", "Amelie", "Arnošt", "Amélie", "Arpád", "Amy", "Artur", "Anastasie", "Attila", "Anastázia",
"Augustín", "Anastázie", "Augustin", "Anastazie", "Barnabáš", "Anděla", "Bartolomej", "Andrea",
"Bartoloměj", "Aneta", "Bedřich", "Anetta", "Benedikt", "Anežka", "Benjamín", "Angela", "Benjamin",
"Angelika", "Bernard", "Angelina", "Blahoslav", "Anika", "Blažej", "Anita", "Bogdan", "Anna", "Bohdan",
"Anna Marie", "Bohumil", "Anna-Marie", "Bohumír", "Annelies", "Bohuš", "Annemarie", "Bohuslav", "Antonia",
"Boleslav", "Antónia", "Borek", "Antonína", "Bořek", "Apolena", "Boris", "Aranka", "Bořivoj", "Arnoštka",
"Božetěch", "Augusta", "Branislav", "Augustina", "Břetislav", "Aurelie", "Brian", "Bára", "Bronislav",
"Barbara", "Bruno", "Barbora", "Čeněk", "Beáta", "Česlav", "Beata", "Čestmír", "Beatrice", "Christian",
"Bedřiška", "Christopher", "Běla", "Ctibor", "Berenika", "Ctirad", "Berta", "Cyril", "Bianka", "Dalibor",
"Bibiana", "Dalimil", "Blahoslava", "Damian", "Blanka", "Damián", "Blažena", "Dan", "Bohdana", "Daniel",
"Bohumila", "Darek", "Bohumíra", "David", "Bohunka", "Dávid", "Bohuslava", "Denis", "Božena", "Dennis",
"Brigita", "Dezider", "Brigitta", "Diego", "Bronislava", "Dieter", "Carmen", "Dimitrij", "Carolina",
"Dobromil", "Caroline", "Dobroslav", "Cecília", "Dominik", "Cecilie", "Drahomír", "Cecílie", "Drahoslav",
"Charlota", "Dušan", "Charlotta", "Edmund", "Charlotte", "Eduard", "Chiara", "Edvard", "Christa", "Egon",
"Christina", "Elemír", "Christine", "Eliáš", "Claudia", "Emanuel", "Claudie", "Emerich", "Dagmar", "Emil",
"Dagmara", "Erhard", "Dana", "Eric", "Danica", "Erich", "Daniela", "Erik", "Danka", "Ernest", "Danny",
"Ervin", "Danuše", "Ervín", "Danuška", "Eugen", "Danuta", "Evald", "Daria", "Evžen", "Darina", "Fabián",
"Darja", "Fabian", "Dáša", "Fedor", "Daša", "Felix", "Debora", "Ferdinand", "Denisa", "Filip", "Diana",
"Florián", "Dita", "Florian", "Dobromila", "František", "Dobroslava", "Gabriel", "Dominika", "Gejza",
"Dora", "George", "Doris", "Georgios", "Dorota", "Gerhard", "Dorothea", "Gražyna", "Doubravka", "Günter",
"Drahomíra", "Gűnter", "Drahoslava", "Gustav", "Drahuše", "Hanuš", "Drahuška", "Heinz", "Dušana", "Helmut",
"Edeltraud", "Henryk", "Edeltrauda", "Herbert", "Edeltruda", "Heřman", "Edita", "Horst", "Edith", "Horymír",
"Ela", "Hubert", "Elen", "Hugo", "Elena", "Hynek", "Eleni", "Ignác", "Eleonora", "Igor", "Elfrída", "Ilja",
"Elfrieda", "Imrich", "Elisa", "Ivan", "Elisabeth", "Ivo", "Eliška", "Ivoš", "Elizabeth", "Jáchym", "Ella",
"Jakub", "Ellen", "Jakub Jan", "Elsa", "Jan", "Elvíra", "Ján", "Ema", "Janusz", "Emanuela", "Jarmil",
"Emília", "Jarolím", "Emilia", "Jaromír", "Emílie", "Jaroslav", "Emilie", "Jasmin", "Emily", "Jeroným",
"Emma", "Jiljí", "Erika", "Jindra", "Erna", "Jindřich", "Ester", "Jiří", "Estera", "Johan", "Etela", "John",
"Eugenie", "Jonáš", "Eva", "Jonatan", "Evelina", "Josef", "Evelína", "Jozef", "Evžena", "Julian", "Evženie",
"Julius", "Filomena", "Július", "Františka", "Juraj", "Gabriela", "Jurij", "Galina", "Justin", "Gerda",
"Kamil", "Gerlinda", "Karel", "Gerta", "Karol", "Gertruda", "Kazimír", "Gisela", "Kevin", "Gita", "Klaus",
"Gizela", "Klement", "Greta", "Koloman", "Gréta", "Konrád", "Halina", "Konstantin", "Halka", "Kristián",
"Hana", "Kristian", "Hanička", "Kryštof", "Hanka", "Kurt", "Hanna", "Květoslav", "Hannelore", "Kvido",
"Heda", "Ladislav", "Hedviga", "Leo", "Hedvika", "Leon", "Helena", "Leonard", "Helga", "Leopold",
"Henrieta", "Leoš", "Hermína", "Lešek", "Hermina", "Lev", "Herta", "Libor", "Hilda", "Lubomír", "Hildegard",
"Ľubomír", "Hildegarda", "Lubor", "Ida", "Ľuboš", "Ilona", "Luboš", "Ilonka", "Lucas", "Ilsa", "Luděk",
"Ilse", "Ludevít", "Ina", "Ludovít", "Inge", "Ľudovit", "Ingeborg", "Ľudovít", "Ingrid", "Ludvík", "Inka",
"Lukáš", "Inna", "Lukas", "Irena", "Lumír", "Irina", "Manfred", "Irma", "Marcel", "Irmgard", "Marco",
"Isabel", "Marcus", "Isabela", "Marek", "Isabella", "Marian", "Iva", "Marián", "Ivana", "Mario", "Ivanka",
"Mário", "Iveta", "Mark", "Ivona", "Marko", "Izabela", "Markus", "Jadwiga", "Maroš", "Jana", "Martin",
"Janetta", "Matěj", "Janette", "Matej", "Janina", "Mathias", "Janis", "Matias", "Janka", "Matouš",
"Jarmila", "Matteo", "Jaromíra", "Matthias", "Jaroslava", "Matúš", "Jaruše", "Matyáš", "Jaruška", "Matyas",
"Jasmína", "Max", "Jelena", "Maxim", "Jena", "Maximilian", "Jenifer", "Maxmilian", "Jennifer", "Maxmilián",
"Jenovefa", "Metoděj", "Jesika", "Michael", "Jessica", "Michail", "Jindřiška", "Michal", "Jiřina",
"Mikoláš", "Jiřinka", "Mikuláš", "Jitka", "Milan", "Jitřenka", "Milán", "Joanna", "Miloň", "Johana",
"Miloš", "Johanka", "Miloslav", "Johanna", "Milouš", "Jolana", "Mirek", "Jolanta", "Mirko", "Josefa",
"Miroslav", "Josefina", "Mojmír", "Josefína", "Nicholas", "Jozefa", "Nick", "Jozefína", "Nicolas",
"Jozefina", "Nikita", "Judita", "Nikolaj", "Júlia", "Nikolas", "Julia", "Nikos", "Juliana", "Norbert",
"Juliána", "Oldřich", "Julie", "Oleg", "Justína", "Oliver", "Justina", "Omar", "Justýna", "Ondřej",
"Kamila", "Ondrej", "Karen", "Oskar", "Karin", "Osvald", "Karina", "Ota", "Karla", "Otakar", "Karolina",
"Otmar", "Karolína", "Oto", "Katarína", "Otokar", "Katarina", "Otomar", "Kateřina", "Otta", "Katka", "Otto",
"Katrin", "Otto", "Klára", "Patrick", "Klaudia", "Patrik", "Klaudie", "Paul", "Kornelie", "Pavel", "Krista",
"Pavol", "Kristína", "Peter", "Kristina", "Petr", "Kristýna", "Philip", "Krystyna", "Pravoslav", "Květa",
"Přemek", "Kvetoslava", "Přemysl", "Květoslava", "Prokop", "Květuše", "Quido", "Květuška", "Radan", "Lada",
"Radek", "Ladislava", "Radim", "Lara", "Radimír", "Larisa", "Radislav", "Laura", "Radko", "Lea", "Radomil",
"Leila", "Radomír", "Lena", "Radoslav", "Lenka", "Radovan", "Leona", "Rafael", "Leontina", "Raimund",
"Leontýna", "Rajmund", "Leopolda", "Rastislav", "Leopoldina", "Reinhard", "Lia", "Reinhold", "Liana",
"René", "Liběna", "Richard", "Libuša", "Robert", "Libuše", "Róbert", "Lída", "Robin", "Lidia", "Roland",
"Lidie", "Roman", "Lidmila", "Ronald", "Liduše", "Rostislav", "Liduška", "Rudolf", "Lilian", "Samuel",
"Liliana", "Sebastian", "Lilien", "Sebastián", "Lilly", "Sebastien", "Linda", "Sergej", "Lívia", "Silvestr",
"Ljuba", "Šimon", "Ljubov", "Simon", "Ľubica", "Slávek", "Ľubomíra", "Slavoj", "Lubomíra", "Slavomil",
"Luca", "Slavomír", "Lucia", "Stanislav", "Lucie", "Štefan", "Luďka", "Stefan", "Ľudmila", "Štěpán",
"Ludmila", "Svatomír", "Ludvika", "Svatopluk", "Luisa", "Svatoslav", "Lydia", "Tadeáš", "Lýdia", "Teodor",
"Lydie", "Theodor", "Lýdie", "Thomas", "Madlen", "Tibor", "Magda", "Tim", "Magdalena", "Timotej",
"Magdaléna", "Tobiáš", "Maja", "Tobias", "Mája", "Tom", "Malvína", "Tomáš", "Manuela", "Tomasz", "Marcela",
"Tomislav", "Margareta", "Tony", "Margarita", "Václav", "Margit", "Valdemar", "Margita", "Valentin",
"Maria", "Valérie", "Mária", "Valter", "Mariana", "Vasil", "Marianna", "Vavřinec", "Marianne", "Vendelín",
"Marie", "Verner", "Marie Anna", "Věroslav", "Marija", "Viktor", "Marika", "Vilém", "Marina", "Viliam",
"Markéta", "Vilibald", "Marketa", "Vincenc", "Marta", "Vincent", "Martina", "Vít", "Maruše", "Vitalij",
"Maruška", "Vítek", "Matilda", "Vítězslav", "Matylda", "Vladan", "Maya", "Vladimír", "Melánie", "Vladimir",
"Melanie", "Vladislav", "Melisa", "Vlastimil", "Melissa", "Vlastimír", "Mia", "Vlastislav", "Michaela",
"Vojta", "Michala", "Vojtěch", "Michelle", "Vojtech", "Milada", "Vratislav", "Milana", "Waldemar", "Milena",
"Walter", "Miloslava", "Waltraud", "Miluše", "Werner", "Miluška", "William", "Miriam", "Wolfgang", "Mirka",
"Zbigniew", "Miroslava", "Zbyhněv", "Monika", "Zbyněk", "Naďa", "Zbyšek", "Naděžda", "Zdeněk", "Nadežda",
"Zdenek", "Nancy", "Zděnek", "Natali", "Zdenko", "Natália", "Zdislav", "Natalia", "Zoltán", "Natalie",
"Natálie", "Natalija", "Nataša", "Nathalie", "Nela", "Nella", "Nelli", "Nelly", "Nicol", "Nicola", "Nicole",
"Nika", "Nikol", "Nikola", "Nikoleta", "Nina", "Noemi", "Nora", "Oksana", "Oldřiška", "Olena", "Oĺga",
"Oľga", "Olga", "Olina", "Olivia", "Olivie", "Oluše", "Otilie", "Pamela", "Patricia", "Patricie", "Paula",
"Paulína", "Paulina", "Pavla", "Pavlina", "Pavlína", "Petra", "Petronela", "Petronila", "Petruše",
"Petruška", "Ráchel", "Radana", "Radka", "Radmila", "Radomila", "Radomíra", "Radoslava", "Radovana",
"Rebecca", "Rebeka", "Regína", "Regina", "Renata", "Renáta", "Renée", "Ria", "Rita", "Romana", "Rosalie",
"Rosemarie", "Rostislava", "Rozalia", "Rozália", "Rozálie", "Rozalie", "Rozárie", "Rozárka", "Rudolfa",
"Rut", "Ruth", "Růžena", "Ružena", "Sabina", "Sabrina", "Samanta", "Samantha", "Sandra", "Sara", "Sára",
"Sarah", "Šárka", "Šarlota", "Saša", "Silva", "Silvia", "Silvie", "Simona", "Slavěna", "Slávka",
"Slavomila", "Slavomíra", "Sofia", "Sofie", "Sofie Anna", "Soňa", "Sonia", "Sonja", "Sophia", "Sophie",
"Stanislava", "Štefana", "Štefania", "Štefánia", "Stefanie", "Štefanie", "Stela", "Stella", "Štěpánka",
"Svatava", "Svatoslava", "Světla", "Světlana", "Svetlana", "Světluše", "Světluška", "Sylva", "Sylvia",
"Sylvie", "Tamara", "Táňa", "Taťána", "Taťana", "Tatiana", "Tatjana", "Taťjana", "Tea", "Teodora", "Teresa",
"Tereza", "Terézia", "Terezia", "Terezie", "Thea", "Theodora", "Timea", "Tina", "Uršula", "Ursula",
"Urszula", "Václava", "Valentina", "Valentýna", "Valeria", "Valéria", "Valerie", "Vanda", "Vanesa",
"Vanessa", "Vědunka", "Věnceslava", "Vendula", "Vendulka", "Venuše", "Věra", "Verona", "Veronica",
"Veronika", "Věroslava", "Věruška", "Victoria", "Viera", "Viktória", "Viktoria", "Viktorie", "Viléma",
"Vilemína", "Vilma", "Viola", "Vítězslava", "Vivien", "Vladana", "Vladěna", "Vladimíra", "Vladislava",
"Vlasta", "Vlastimila", "Vlastislava", "Vojtěška", "Vratislava", "Wanda", "Xenie", "Yveta", "Yvetta",
"Yvona", "Yvonna", "Yvonne", "Žaneta", "Zdena", "Zděna", "Zděnka", "Zdeňka", "Zdenka", "Zdislava", "Zina",
"Zita", "Zlata", "Zlatica", "Zlatuše", "Zlatuška", "Zoe", "Žofia", "Zofia", "Žofie", "Zoja", "Zora",
"Zorka", "Zuzana"));
public static final List<String> SURNAMES = Collections.unmodifiableList(Arrays.asList("Novák", "Svoboda",
"Novotný", "Dvořák", "Černý", "Procházka", "Kučera", "Veselý", "Horák", "Němec", "Pokorný", "Marek",
"Pospíšil", "Hájek", "Jelínek", "Král", "Růžička", "Beneš", "Fiala", "Sedláček", "Doležal", "Zeman",
"Nguyen", "Kolář", "Krejčí", "Navrátil", "Čermák", "Urban", "Vaněk", "Blažek", "Kříž", "Kratochvíl",
"Kovář", "Kopecký", "Bartoš", "Vlček", "Musil", "Šimek", "Polák", "Konečný", "Malý", "Čech", "Kadlec",
"Štěpánek", "Staněk", "Holub", "Dostál", "Soukup", "Šťastný", "Mareš", "Sýkora", "Moravec", "Tichý",
"Valenta", "Vávra", "Matoušek", "Bláha", "Říha", "Ševčík", "Bureš", "Hruška", "Mašek", "Pavlík", "Dušek",
"Hrubý", "Havlíček", "Janda", "Mach", "Müller", "Liška"));
public static <T> T selectRandom(List<T> elements) {
return elements.get(random.nextInt(elements.size()));
}
}
package cz.jezek.lab11;
import static cz.jezek.lab11.RandomGenarator.random;
import static cz.jezek.lab11.RandomGenarator.selectRandom;
import static java.util.stream.Collectors.toList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Tournament {
private List<Player> players;
private List<Match> matches;
public static Tournament generate() {
// TODO 1.a Generate a list of 10 random players using the stream and then filter so that it does not contain players with the same name
List<Player> players = Stream.generate(Player::generateRandom).distinct().limit(10).collect(Collectors.toList());
// TODO 1.b Use the stream to generate a list of 50 matches between random players (from the list of players) with a random result. Make sure the player does not play with himself.
List<Match> matches = Stream.generate(() -> generateRandom(players)).filter(Tournament::differentOponents)
.limit(500).collect(toList());
return new Tournament(players, matches);
}
public Tournament(List<Player> players, List<Match> matches) {
this.players = players;
this.matches = matches;
}
public List<Player> getPlayers() {
return players;
}
public List<Match> getMatches() {
return matches;
}
public Player getRandomPlayer() {
return RandomGenarator.selectRandom(players);
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("Player count ").append(players.size())
.append(" Match count: ").append(matches.size());
builder.append("\n");
builder.append("\n\nPlayers:\n");
// TODO 2.a Use the stream to add a listing of all players to the builder. Individual players are separated by a "\ n" character
builder.append(/* list of all players */"");
builder.append("\n\nMatches:\n");
// TODO 2.b Use the stream to add a listing of all entries to the builder. Individual matches are separated by a "\ n" character
builder.append(/* list of all matches */"");
return builder.toString();
}
private static boolean differentOponents(Match m) {
return m.getOponents().getPlayer1() != m.getOponents().getPlayer2();
}
private static Match generateRandom(List<Player> players) {
Match result = new Match(selectRandom(players), random.nextInt(11), selectRandom(players), random.nextInt(11));
return result;
}
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment