Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit d16f5a7

Browse files
Add kata nba ranking
1 parent 106649a commit d16f5a7

File tree

3 files changed

+181
-0
lines changed

3 files changed

+181
-0
lines changed

‎README.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@
77
| kyu | Codewars Kate | My Solutions |
88
| --- | --- | --- |
99
| 3 | [Prime Streaming (PG-13)](https://www.codewars.com/kata/5519a584a73e70fa570005f5) | [Pg13PrimeStreaming.java](https://github.com/adrianblade/codewars_java_solution/blob/master/src/main/java/kyu3/prime_streaming_pg_13/Pg13PrimeStreaming.java) |
10+
| 6 | [Ranking NBA teams](https://www.codewars.com/kata/5a420163b6cfd7cde5000077) | [RankingNbaTeams.java](https://github.com/adrianblade/codewars_java_solution/blob/master/src/main/java/kyu6/nba_teams/RankingNbaTeams.java) |
1011
| 8 | [Multiply](https://www.codewars.com/kata/50654ddff44f800200000004) | [Multiply.java](https://github.com/adrianblade/codewars_java_solution/blob/master/src/main/java/kyu8/multiply/Multiply.java) |
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
package kyu6.nba_teams;
2+
3+
import java.util.Arrays;
4+
import java.util.List;
5+
import java.util.stream.Collectors;
6+
7+
public class RankingNbaTeams {
8+
9+
private static final String teams = "Los Angeles Clippers,Dallas Mavericks,New York Knicks,Atlanta Hawks,Indiana Pacers,Memphis Grizzlies,"
10+
+ "Los Angeles Lakers,Minnesota Timberwolves,Phoenix Suns,Portland Trail Blazers,New Orleans Pelicans,"
11+
+ "Sacramento Kings,Los Angeles Clippers,Houston Rockets,Denver Nuggets,Cleveland Cavaliers,Milwaukee Bucks,"
12+
+ "Oklahoma City Thunder,San Antonio Spurs,Boston Celtics,Philadelphia 76ers,Brooklyn Nets,Chicago Bulls,"
13+
+ "Detroit Pistons,Utah Jazz,Miami Heat,Charlotte Hornets,Toronto Raptors,Orlando Magic,Washington Wizards,"
14+
+ "Golden State Warriors,Dallas Mavericks";
15+
private static final String COMMA = ",";
16+
private static final int THREE = 3;
17+
private static final String SPACE = " ";
18+
19+
static String nbaCup(String resultSheet, String toFind) {
20+
if (resultSheet == null || resultSheet.isEmpty() || toFind == null || toFind.isEmpty()) return "";
21+
String[] matches = resultSheet.split(COMMA);
22+
List<String> matchesOfUniqueTeam = Arrays.stream(matches)
23+
.filter(match -> match.contains(toFind))
24+
.collect(Collectors.toList());
25+
return sumStats(matchesOfUniqueTeam, toFind);
26+
}
27+
28+
private static Result getResult(String line) {
29+
String localTeam = null;
30+
int localResultTeam = 0;
31+
String visitorTeam = null;
32+
int visitorResultTeam = 0;
33+
final String[] teams = RankingNbaTeams.teams.split(COMMA);
34+
for (String team : teams) {
35+
if (line.contains(team)) {
36+
if (localTeam == null) {
37+
localTeam = team;
38+
String number = line.substring(line.indexOf(localTeam) + localTeam.length() + 1).split(SPACE)[0];
39+
localResultTeam = toNumeric(number);
40+
} else if (!team.equals(localTeam)) {
41+
visitorTeam = team;
42+
String number = line.substring(line.indexOf(visitorTeam) + visitorTeam.length() + 1).split(SPACE)[0];
43+
visitorResultTeam = toNumeric(number);
44+
break;
45+
}
46+
}
47+
}
48+
return new Result(localTeam, localResultTeam, visitorTeam, visitorResultTeam);
49+
}
50+
51+
private static String sumStats(List<String> matchesOfUniqueTeam, String toFind) {
52+
int winners = 0;
53+
int draws = 0;
54+
int losses = 0;
55+
int scored = 0;
56+
int conceded = 0;
57+
int points;
58+
final List<String> teamsArray = Arrays.asList(RankingNbaTeams.teams.split(","));
59+
if (!teamsArray.contains(toFind)) return toFind + ":This team didn't play!";
60+
for (String match : matchesOfUniqueTeam) {
61+
if (match.contains(".")) return "Error(float number):" + match;
62+
final Result result = getResult(match);
63+
if (result.winLocal() && result.isLocal(toFind)) { // Soy local y gana local
64+
winners++;
65+
scored = scored + result.getLocalResultTeam();
66+
conceded = conceded + result.getVisitorResultTeam();
67+
68+
} else if (result.winVisitor() && result.isLocal(toFind)) { // Soy local y pierde local
69+
losses++;
70+
scored = scored + result.getLocalResultTeam();
71+
conceded = conceded + result.getVisitorResultTeam();
72+
73+
} else if (result.winLocal() && result.isVisitor(toFind)) { // Soy visitante y gana visitante
74+
losses++;
75+
scored = scored + result.getVisitorResultTeam();
76+
conceded = conceded + result.getLocalResultTeam();
77+
} else if (result.winVisitor() && result.isVisitor(toFind)) { // Soy visitante y pierde visitante
78+
winners++;
79+
scored = scored + result.getVisitorResultTeam();
80+
conceded = conceded + result.getLocalResultTeam();
81+
82+
} else { // EMPATE
83+
draws++;
84+
scored = scored + result.getLocalResultTeam();
85+
conceded = conceded + result.getLocalResultTeam();
86+
87+
}
88+
}
89+
points = winners * THREE + draws;
90+
//"Team Name:W=nb of wins;D=nb of draws;L=nb of losses;Scored=nb;Conceded=nb;Points=nb"
91+
return toFind + ":W=" + winners + ";D=" + draws + ";L=" + losses + ";Scored=" + scored + ";Conceded=" + conceded + ";Points=" + points;
92+
}
93+
94+
private static int toNumeric(String str) throws NumberFormatException {
95+
return Integer.parseInt(str);
96+
}
97+
98+
private static class Result {
99+
private String localTeam;
100+
private int localResultTeam;
101+
private String visitorTeam;
102+
private int visitorResultTeam;
103+
104+
Result(String localTeam, int localResultTeam, String visitorTeam, int visitorResultTeam) {
105+
this.localTeam = localTeam;
106+
this.localResultTeam = localResultTeam;
107+
this.visitorTeam = visitorTeam;
108+
this.visitorResultTeam = visitorResultTeam;
109+
}
110+
111+
boolean isLocal(String team) {
112+
return localTeam.equals(team);
113+
}
114+
115+
boolean isVisitor(String team) {
116+
return visitorTeam.equals(team);
117+
}
118+
119+
boolean winLocal() {
120+
return localResultTeam > visitorResultTeam;
121+
}
122+
123+
boolean winVisitor() {
124+
return localResultTeam < visitorResultTeam;
125+
}
126+
127+
int getLocalResultTeam() {
128+
return localResultTeam;
129+
}
130+
131+
int getVisitorResultTeam() {
132+
return visitorResultTeam;
133+
}
134+
}
135+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package kyu6.nba_teams;
2+
3+
import org.junit.Test;
4+
5+
import static org.junit.Assert.*;
6+
7+
public class RankingNbaTeamsTest {
8+
9+
String resultSheet1 = "Los Angeles Clippers 104 Dallas Mavericks 88,New York Knicks 101 Atlanta Hawks 112,Indiana Pacers 103 Memphis Grizzlies 112,"
10+
+ "Los Angeles Lakers 111 Minnesota Timberwolves 112,Phoenix Suns 95 Dallas Mavericks 111,Portland Trail Blazers 112 New Orleans Pelicans 94,"
11+
+ "Sacramento Kings 104 Los Angeles Clippers 111,Houston Rockets 85 Denver Nuggets 105,Memphis Grizzlies 76 Cleveland Cavaliers 106,"
12+
+ "Milwaukee Bucks 97 New York Knicks 122,Oklahoma City Thunder 112 San Antonio Spurs 106,Boston Celtics 112 Philadelphia 76ers 95,"
13+
+ "Brooklyn Nets 100 Chicago Bulls 115,Detroit Pistons 92 Utah Jazz 87,Miami Heat 104 Charlotte Hornets 94,"
14+
+ "Toronto Raptors 106 Indiana Pacers 99,Orlando Magic 87 Washington Wizards 88,Golden State Warriors 111 New Orleans Pelicans 95,"
15+
+ "Atlanta Hawks 94 Detroit Pistons 106,Chicago Bulls 97 Cleveland Cavaliers 95,";
16+
String resultSheet2 = "San Antonio Spurs 111 Houston Rockets 86,Chicago Bulls 103 Dallas Mavericks 102,Minnesota Timberwolves 112 Milwaukee Bucks 108,"
17+
+ "New Orleans Pelicans 93 Miami Heat 90,Boston Celtics 81 Philadelphia 76ers 65,Detroit Pistons 115 Atlanta Hawks 87,"
18+
+ "Toronto Raptors 92 Washington Wizards 82,Orlando Magic 86 Memphis Grizzlies 76,Los Angeles Clippers 115 Portland Trail Blazers 109,"
19+
+ "Los Angeles Lakers 97 Golden State Warriors 136,Utah Jazz 98 Denver Nuggets 78,Boston Celtics 99 New York Knicks 85,"
20+
+ "Indiana Pacers 98 Charlotte Hornets 86,Dallas Mavericks 87 Phoenix Suns 99,Atlanta Hawks 81 Memphis Grizzlies 82,"
21+
+ "Miami Heat 110 Washington Wizards 105,Detroit Pistons 94 Charlotte Hornets 99,Orlando Magic 110 New Orleans Pelicans 107,"
22+
+ "Los Angeles Clippers 130 Golden State Warriors 95,Utah Jazz 102 Oklahoma City Thunder 113,San Antonio Spurs 84 Phoenix Suns 104,"
23+
+ "Chicago Bulls 103 Indiana Pacers 94,Milwaukee Bucks 106 Minnesota Timberwolves 88,Los Angeles Lakers 104 Portland Trail Blazers 102,"
24+
+ "Houston Rockets 120 New Orleans Pelicans 100,Boston Celtics 111 Brooklyn Nets 105,Charlotte Hornets 94 Chicago Bulls 86,Cleveland Cavaliers 103 Dallas Mavericks 97";
25+
String teams = "Los Angeles Clippers,Dallas Mavericks,New York Knicks,NYK,Atlanta Hawks,Indiana Pacers,Memphis Grizzlies,"
26+
+ "Los Angeles Lakers,Minnesota Timberwolves,Phoenix Suns,Portland Trail Blazers,New Orleans Pelicans,"
27+
+ "Sacramento Kings,Los Angeles Clippers,Houston Rockets,Denver Nuggets,Cleveland Cavaliers,Milwaukee Bucks,"
28+
+ "Oklahoma City Thunder,San Antonio Spurs,Boston Celtics,Philadelphia 76ers,Brooklyn Nets,Chicago Bulls,"
29+
+ "Detroit Pistons,Utah Jazz,Miami Heat,Charlotte Hornets,Toronto Raptors,Orlando Magic,Washington Wizards,"
30+
+ "Golden State Warriors,Dallas Maver";
31+
String resultSheet3 = resultSheet1 + resultSheet2;
32+
33+
private static void testing(String actual, String expected) {
34+
assertEquals(expected, actual);
35+
}
36+
37+
@Test
38+
public void test1() {
39+
System.out.println("Fixed Tests: nbaCup");
40+
testing(RankingNbaTeams.nbaCup(resultSheet3, "Boston Celtics"),
41+
"Boston Celtics:W=4;D=0;L=0;Scored=403;Conceded=350;Points=12");
42+
testing(RankingNbaTeams.nbaCup(resultSheet3, "Boston Celt"),
43+
"Boston Celt:This team didn't play!");
44+
}
45+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /