برنامه نویسی

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"));
    }

}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این همه خواهد بود ، متشکرم از وقت شما ، و تا دفعه بعد 🙂

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا