8000 2020-12-11 Update: Added "The highest profits wins!" and "Closest to … · fartem/codewars-java@f26ac3d · GitHub
[go: up one dir, main page]

Skip to content

Commit f26ac3d

Browse files
committed
2020-12-11 Update: Added "The highest profits wins!" and "Closest to Zero"
1 parent 7c25dee commit f26ac3d

File tree

5 files changed

+154
-0
lines changed

5 files changed

+154
-0
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ Profile on Codewars: [fartem](https://www.codewars.com/users/fartem).
9696
| Alternate case | [Link](https://www.codewars.com/kata/57a62154cf1fa5b25200031e) | [Link](./src/main/java/com/smlnskgmail/jaman/codewarsjava/kyu7/AlternateCase.java) |
9797
| Ch4113ng3 | [Link](https://www.codewars.com/kata/59e9f404fc3c49ab24000112) | [Link](./src/main/java/com/smlnskgmail/jaman/codewarsjava/kyu7/Ch4113ng3.java) |
9898
| Changing letters | [Link](https://www.codewars.com/kata/5831c204a31721e2ae000294) | [Link](./src/main/java/com/smlnskgmail/jaman/codewarsjava/kyu7/ChangingLetters.java) |
99+
| Closest to Zero | [Link](https://www.codewars.com/kata/59887207635904314100007b) | [Link](./src/main/java/com/smlnskgmail/jaman/codewarsjava/kyu7/ClosestToZero.java) |
99100
| Count the Characters | [Link](https://www.codewars.com/kata/577ad961ae2807182f000c29) | [Link](./src/main/java/com/smlnskgmail/jaman/codewarsjava/kyu7/CountTheCharacters.java) |
100101
| Covfefe | [Link](https://www.codewars.com/kata/592fd8f752ee71ac7e00008a) | [Link](./src/main/java/com/smlnskgmail/jaman/codewarsjava/kyu7/Covfefe.java) |
101102
| C. Wars | [Link](https://www.codewars.com/kata/55968ab32cf633c3f8000008) | [Link](./src/main/java/com/smlnskgmail/jaman/codewarsjava/kyu7/CWars.java) |
@@ -144,6 +145,7 @@ Profile on Codewars: [fartem](https://www.codewars.com/users/fartem).
144145
| Sum of Odd Cubed Numbers | [Link](https://www.codewars.com/kata/580dda86c40fa6c45f00028a) | [Link](./src/main/java/com/smlnskgmail/jaman/codewarsjava/kyu7/SumOfOddCubedNumbers.java) |
145146
| Sum of odd numbers | [Link](https://www.codewars.com/kata/55fd2d567d94ac3bc9000064) | [Link](./src/main/java/com/smlnskgmail/jaman/codewarsjava/kyu7/SumOfOddNumbers.java) |
146147
| The 12 Days of Christmas | [Link](https://www.codewars.com/kata/57dd3a06eb0537b899000a64) | [Link](./src/main/java/com/smlnskgmail/jaman/codewarsjava/kyu7/The12DaysOfChristmas.java) |
148+
| The Highest profit wins! | [Link](https://www.codewars.com/kata/559590633066759614000063) | [Link](./src/main/java/com/smlnskgmail/jaman/codewarsjava/kyu7/TheHighestProfitWins.java) |
147149
| Two to One | [Link](https://www.codewars.com/kata/5656b6906de340bd1b0000ac) | [Link](./src/main/java/com/smlnskgmail/jaman/codewarsjava/kyu7/TwoToOne.java) |
148150
| Vowel Count | [Link](https://www.codewars.com/kata/54ff3102c1bad923760001f3) | [Link](./src/main/java/com/smlnskgmail/jaman/codewarsjava/kyu7/VowelCount.java) |
149151

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.smlnskgmail.jaman.codewarsjava.kyu7;
2+
3+
import java.util.Arrays;
4+
5+
// https://www.codewars.com/kata/59887207635904314100007b
6+
public class ClosestToZero {
7+
8+
private final int[] input;
9+
10+
public ClosestToZero(int[] input) {
11+
this.input = input;
12+
}
13+
14+
public Integer solution() {
15+
int minimum = Integer.MAX_VALUE;
16+
for (int number : input) {
17+
if (number == 0) {
18+
return number;
19+
}
20+
if (Integer.compare(Math.abs(number), Math.abs(minimum)) == -1) {
21+
minimum = number;
22+
}
23+
}
24+
int finalMinimum = minimum;
25+
return Arrays.stream(input).filter(i -> i == -finalMinimum).count() > 0
26+
? null
27+
: minimum;
28+
}
29+
30+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.smlnskgmail.jaman.codewarsjava.kyu7;
2+
3+
import java.util.stream.IntStream;
4+
5+
// https://www.codewars.com/kata/559590633066759614000063
6+
public class TheHighestProfitWins {
7+
8+
private final int[] input;
9+
10+
public TheHighestProfitWins(int[] input) {
11+
this.input = input;
12+
}
13+
14+
public int[] solution() {
15+
//noinspection OptionalGetWithoutIsPresent
16+
return new int[]{
17+
IntStream.of(input).min().getAsInt(),
18+
IntStream.of(input).max().getAsInt()
19+
};
20+
}
21+
22+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.smlnskgmail.jaman.codewarsjava.kyu7;
2+
3+
import org.junit.Test;
4+
5+
import static org.junit.Assert.assertEquals;
6+
import static org.junit.Assert.assertNull;
7+
8+
public class ClosestToZeroTest {
9+
10+
@Test
11+
public void find() {
12+
assertEquals(
13+
Integer.valueOf(1),
14+
new ClosestToZero(
15+
new int[]{10, 3, 9, 1}
16+
).solution()
17+
);
18+
assertEquals(
19+
Integer.valueOf(-1),
20+
new ClosestToZero(
21+
new int[]{2, 4, -1, -3}
22+
).solution()
23+
);
24+
assertEquals(
25+
Integer.valueOf(0),
26+
new ClosestToZero(
27+
new int[]{13, 0, -6}
28+
).solution()
29+
);
30+
}
31+
32+
@Test
33+
public void shouldReturnNone() {
34+
assertNull(
35+
new ClosestToZero(
36+
new int[]{5, 1, -1, 2, -10}
37+
).solution()
38+
);
39+
assertNull(
40+
new ClosestToZero(
41+
new int[]{5, 11, 11, 2, -1, 1}
42+
).solution()
43+
);
44+
}
45+
46+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package com.smlnskgmail.jaman.codewarsjava.kyu7;
2+
3+
import org.junit.Before;
4+
import org.junit.Test;
5+
6+
import java.util.Random;
7+
8+
import static org.junit.Assert.assertArrayEquals;
9+
10+
public class TheHighestProfitWinsTest {
11+
12+
private Random rand;
13+
14+
@Before
15+
public void initTest() {
16+
rand = new Random();
17+
}
18+
19+
@Test
20+
public void testExampleCases() {
21+
assertArrayEquals(
22+
new int[]{1, 5},
23+
new TheHighestProfitWins(
24+
new int[]{1, 2, 3, 4, 5}
25+
).solution()
26+
);
27+
assertArrayEquals(
28+
new int[]{5, 2334454},
29+
new TheHighestProfitWins(
30+
new int[]{2334454, 5}
31+
).solution()
32+
);
33+
assertArrayEquals(
34+
new int[]{1, 1},
35+
new TheHighestProfitWins(
36+
new int[]{1}
37+
).solution()
38+
);
39+
}
40+
41+
@Test
42+
public void minMaxRandomTest() {
43+
for (int i = 0; i < 20; i++) {
44+
int r = rand.nextInt();
45+
assertArrayEquals(
46+
new int[]{r, r},
47+
new TheHighestProfitWins(
48+
new int[]{r}
49+
).solution()
50+
);
51+
}
52+
}
53+
54+
}

0 commit comments

Comments
 (0)
0