Kata Challenge – Mumbling – Community Dev

هر از گاهی سعی می کنم خودم را با برخی از تمرینات کاتا به چالش بکشم. من آنها را در بهبود مهارت های توسعه ، کارایی رمزگذاری و مهمترین تفکر الگوریتمی بسیار مفید دانستم.
آنها بهترین شیوه ها و تفکر سریع را تقویت می کنند. IMHO به طور منظم تمرین نوعی الگوهای حافظه و تکنیک ها را ایجاد می کند و برنامه نویسی را سریعتر و بصری تر می کند.
تمام چالش های من که در صفحه Codewars.com پیدا می کنم – این صفحه را به شدت توصیه می کنم.
این چالش در واقع به بسیاری از معرفی ها احتیاج ندارد ، اجازه دهید مثالها منظورم را نشان دهد:
-
for this “RqaEzty”, we should get this one: “R-Qq-Aaa-Eeee-Zzzzz-Tttttt-Yyyyyyy”.
-
for “RqaEzty”, we should get this one: “R-Qq-Aaa-Eeee-Zzzzz-Tttttt-Yyyyyyy”
-
برای “CWAT” ، ما باید این مورد را بدست آوریم: “C-WW-AAA-TTTT”
-
و غیره …
بنابراین همانطور که عنوان می گوید … مبهم.
FYI پارامتر روش تست رشته ای است که فقط حروف A..Z و A..Z را شامل می شود.
این راه حل من است:
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class Accumul {
public static String accum(final String text) {
if (text == null) {
throw new IllegalArgumentException();
}
return IntStream.range(0, text.length())
.mapToObj(i -> singleCharToWord(text.charAt(i), i))
.collect(Collectors.joining("-"));
}
private static String singleCharToWord(final Character charAt, final int index) {
return charAt.toString().toUpperCase() + IntStream.range(1, index + 1)
.mapToObj(i -> String.valueOf(charAt).toLowerCase())
.collect(Collectors.joining());
}
}
و در اینجا چند آزمایش ساده برای آن وجود دارد
public class AccumulTest {
@Test
public void testWhenGivenNullAsInput() {
assertThrows(IllegalArgumentException.class, () -> {
Accumul.accum(null);
});
}
@Test
public void test() {
assertEquals("", Accumul.accum(""));
assertEquals("A", Accumul.accum("a"));
assertEquals("A-Bb", Accumul.accum("ab"));
assertEquals("Z-Pp-Ggg-Llll-Nnnnn-Rrrrrr-Xxxxxxx-Qqqqqqqq-Eeeeeeeee-Nnnnnnnnnn-Uuuuuuuuuuu", Accumul.accum("ZpglnRxqenU"));
assertEquals("N-Yy-Fff-Ffff-Sssss-Gggggg-Eeeeeee-Yyyyyyyy-Yyyyyyyyy-Llllllllll-Bbbbbbbbbbb", Accumul.accum("NyffsGeyylB"));
assertEquals("M-Jj-Ttt-Kkkk-Uuuuu-Bbbbbb-Ooooooo-Vvvvvvvv-Qqqqqqqqq-Rrrrrrrrrr-Uuuuuuuuuuu", Accumul.accum("MjtkuBovqrU"));
assertEquals("E-Vv-Iii-Dddd-Jjjjj-Uuuuuu-Nnnnnnn-Oooooooo-Kkkkkkkkk-Mmmmmmmmmm-Mmmmmmmmmmm", Accumul.accum("EvidjUnokmM"));
assertEquals("H-Bb-Iii-Dddd-Eeeee-Vvvvvv-Bbbbbbb-Xxxxxxxx-Nnnnnnnnn-Cccccccccc-Ccccccccccc", Accumul.accum("HbideVbxncC"));
}
}
این همه خواهد بود ، متشکرم از وقت شما ، و تا دفعه بعد 🙂