10000 2020-11-28 Update: Added "A Needle in the haystack" and "Get the Midd… · fartem/codewars-java@f1b6446 · GitHub
[go: up one dir, main page]

Skip to content

Commit f1b6446

Browse files
committed
2020-11-28 Update: Added "A Needle in the haystack" and "Get the Middle Character"
1 parent 1e5bc2b commit f1b6446

File tree

5 files changed

+178
-0
lines changed

5 files changed

+178
-0
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ Profile on Codewars: [fartem](https://www.codewars.com/users/fartem).
1616
| --- | --- | --- |
1717
| Abbreviate a Two Word Name | [Link](https://www.codewars.com/kata/57eadb7ecd143f4c9c0000a3) | [Link](https://github.com/fartem/codewars-java/blob/master/src/main/java/com/smlnskgmail/jaman/codewarsjava/kyu8/AbbreviateATwoWordName.java) |
1818
| altERnaTIng cAsE <=> ALTerNAtiNG CaSe | [Link](https://www.codewars.com/kata/56efc695740d30f963000557) | [Link](https://github.com/fartem/codewars-java/blob/master/src/main/java/com/smlnskgmail/jaman/codewarsjava/kyu8/AltERnaTIngcAsEALTerNAtiNGCaSe.java) |
19+
| A Needle in the Haystack | [Link](https://www.codewars.com/kata/56676e8fabd2d1ff3000000c) | [Link](https://github.com/fartem/codewars-java/blob/master/src/main/java/com/smlnskgmail/jaman/codewarsjava/kyu8/ANeedleInTheHaystack.java) |
1920
| Array plus array | [Link](https://www.codewars.com/kata/5a2be17aee1aaefe2a000151) | [Link](https://github.com/fartem/codewars-java/blob/master/src/main/java/com/smlnskgmail/jaman/codewarsjava/kyu8/ArrayPlusArray.java) |
2021
| Basic variable assignment | [Link](https://www.codewars.com/kata/50ee6b0bdeab583673000025) | [Link](https://github.com/fartem/codewars-java/blob/master/src/main/java/com/smlnskgmail/jaman/codewarsjava/kyu8/BasicVariableAssignment.java) |
2122
| Calculate average | [Link](https://www.codewars.com/kata/57a2013acf1fa5bfc4000921) | [Link](https://github.com/fartem/codewars-java/blob/master/src/main/java/com/smlnskgmail/jaman/codewarsjava/kyu8/CalculateAverage.java) |
@@ -96,6 +97,7 @@ Profile on Codewars: [fartem](https://www.codewars.com/users/fartem).
9697
| Form The Minimum | [Link](https://www.codewars.com/kata/5ac6932b2f317b96980000ca) | [Link](https://github.com/fartem/codewars-java/blob/master/src/main/java/com/smlnskgmail/jaman/codewarsjava/kyu7/FormTheMinimum.java) |
9798
| Fun with lists: indexOf | [Link](https://www.codewars.com/kata/581c6b075cfa83852700021f) | [Link](https://github.com/fartem/codewars-java/blob/master/src/main/java/com/smlnskgmail/jaman/codewarsjava/kyu7/FunWithListsIndexOf.java) |
9899
| Fun with lists: length | [Link](https://www.codewars.com/kata/581e476d5f59408553000a4b) | [Link](https://github.com/fartem/codewars-java/blob/master/src/main/java/com/smlnskgmail/jaman/codewarsjava/kyu7/FunWithListsLength.java) |
100+
| Get the Middle Character | [Link](https://www.codewars.com/kata/56747fd5cb988479af000028) | [Link](https://github.com/fartem/codewars-java/blob/master/src/main/java/com/smlnskgmail/jaman/codewarsjava/kyu7/GetTheMiddleCharacter.java) |
99101
| Greatest common divisor | [Link](https://www.codewars.com/kata/5500d54c2ebe0a8e8a0003fd) | [Link](https://github.com/fartem/codewars-java/blob/master/src/main/java/com/smlnskgmail/jaman/codewarsjava/kyu7/GreatestCommonDivisor.java) |
100102
| Highest and Lowest | [Link](https://www.codewars.com/kata/554b4ac871d6813a03000035) | [Link](https://github.com/fartem/codewars-java/blob/master/src/main/java/com/smlnskgmail/jaman/codewarsjava/kyu7/HighestAndLowest.java) |
101103
| How many arguments | [Link](https://www.codewars.com/kata/5c44b0b200ce187106452139) | [Link](https://github.com/fartem/codewars-java/blob/master/src/main/java/com/smlnskgmail/jaman/codewarsjava/kyu7/HowManyArguments.java) |
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.smlnskgmail.jaman.codewarsjava.kyu7;
2+
3+
// https://www.codewars.com/kata/56747fd5cb988479af000028
4+
public class GetTheMiddleCharacter {
5+
6+
private final String input;
7+
8+
public GetTheMiddleCharacter(String input) {
9+
this.input = input;
10+
}
11+
12+
public String solution() {
13+
int inputLength = input.length();
14+
return inputLength % 2 == 0
15+
? input.substring(inputLength / 2 - 1, inputLength / 2 + 1)
16+
: String.valueOf(input.charAt(inputLength / 2));
17+
}
18+
19+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.smlnskgmail.jaman.codewarsjava.kyu8;
2+
3+
import java.util.stream.IntStream;
4+
5+
// https://www.codewars.com/kata/56676e8fabd2d1ff3000000c
6+
public class ANeedleInTheHaystack {
7+
8+
private final Object[] input;
9+
10+
public ANeedleInTheHaystack(Object[] input) {
11+
this.input = input;
12+
}
13+
14+
public String solution() {
15+
int index = IntStream
16+
.range(0, input.length)
17+
.filter(value -> {
18+
Object data = input[value];
19+
return data instanceof String && data.equals("needle");
20+
})
21+
.findFirst()
22+
.orElse(-1);
23+
return String.format(
24+
"found the needle at position %d",
25+
index
26+
);
27+
}
28+
29+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.smlnskgmail.jaman.codewarsjava.kyu7;
2+
3+
import org.junit.Test;
4+
5+
import static org.junit.Assert.assertEquals;
6+
7+
public class GetTheMiddleCharacterTest {
8+
9+
@Test
10+
p B41A ublic void evenTests() {
11+
assertEquals(
12+
"es",
13+
new GetTheMiddleCharacter("test").solution()
14+
);
15+
assertEquals(
16+
"dd",
17+
new GetTheMiddleCharacter("middle").solution()
18+
);
19+
}
20+
21+
@Test
22+
public void oddTests() {
23+
assertEquals(
24+
"t",
25+
new GetTheMiddleCharacter("testing").solution()
26+
);
27+
assertEquals(
28+
"A",
29+
new GetTheMiddleCharacter("A").solution()
30+
);
31+
}
32+
33+
}
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
package com.smlnskgmail.jaman.codewarsjava.kyu8;
2+
3+
import org.junit.Test;
4+
5+
import static org.junit.Assert.assertEquals;
6+
7+
public class ANeedleInTheHaystackTest {
8+
9+
@Test
10+
public void tests() {
11+
assertEquals(
12+
"found the needle at position 3",
13+
new ANeedleInTheHaystack(
14+
new Object[]{
15+
"3",
16+
"123124234",
17+
null,
18+
"needle",
19+
"world",
20+
"hay",
21+
2,
22+
"3",
23+
true,
24+
false
25+
}
26+
).solution()
27+
);
28+
assertEquals(
29+
"found the needle at position 5",
30+
new ANeedleInTheHaystack(
31+
new Object[]{
32+
"283497238987234",
33+
"a dog",
34+
"a cat",
35+
"some random junk",
36+
"a piece of hay",
37+
"needle",
38+
"something somebody lost a while ago"
39+
}
40+
).solution()
41+
);
42+
assertEquals(
43+
"found the needle at position 30",
44+
new ANeedleInTheHaystack(
45+
new Object[]{
46+
1,
47+
2,
48+
3,
49+
4,
50+
5,
51+
6,
52+
7,
53+
8,
54+
8,
55+
7,
56+
5,
57+
4,
58+
3,
59+
4,
60+
5,
61+
6,
62+
67,
63+
5,
64+
5,
65+
3,
66+
3,
67+
4,
68+
2,
69+
34,
70+
234,
71+
23,
72+
4,
73+
234,
74+
324,
75+
324,
76+
"needle",
77+
1,
78+
2,
79+
3,
80+
4,
81+
5,
82+
5,
83+
6,
84+
5,
85+
4,
86+
32,
87+
3,
88+
45,
89+
54
90+
}
91+
).solution()
92+
);
93+
}
94+
95+
}

0 commit comments

Comments
 (0)
0