Move History

Fork Selected
  • Code
    import java.util.stream.Collectors;
    import java.util.stream.IntStream;
    import java.util.stream.Stream;
    
    class Solution {
        public static String numberOfNumbers(int value) {
            String delimiter = getDelimiterFor(value);
            return IntStream.rangeClosed(1, Math.abs(value))
                    .mapToObj(Solution::repeatByItself)
                    .collect(Collectors.joining(delimiter));
        }
        
        private static String getDelimiterFor(int value){
            return value > 0 ? "-" : "+";
        }
        
        private static String repeatByItself(int i){
            return String.valueOf(i).repeat(i);
        }
    }
    Test Cases
    import org.junit.Test;
    import static org.junit.Assert.assertEquals;
    import org.junit.runners.JUnit4;
    
    public class SolutionTest {
        @Test
        public void testWhenValueIsZero() {
            assertEquals("", Solution.numberOfNumbers(0));
    
        }
    
        @Test
        public void testPositiveValues() {
            assertEquals("1", Solution.numberOfNumbers(1));
            assertEquals("1-22", Solution.numberOfNumbers(2));
            assertEquals("1-22-333", Solution.numberOfNumbers(3));
            assertEquals("1-22-333-4444", Solution.numberOfNumbers(4));
            assertEquals("1-22-333-4444-55555", Solution.numberOfNumbers(5));
        }
        
        @Test
        public void testNegativeValues() {
            assertEquals("1", Solution.numberOfNumbers(-1));
            assertEquals("1+22", Solution.numberOfNumbers(-2));
            assertEquals("1+22+333", Solution.numberOfNumbers(-3));
            assertEquals("1+22+333+4444", Solution.numberOfNumbers(-4));
            assertEquals("1+22+333+4444+55555", Solution.numberOfNumbers(-5));
        }
    
        @Test
        public void testWithDoubleDigitValue() {
            assertEquals("1-22-333-4444-55555-666666-7777777-88888888-999999999-10101010101010101010", Solution.numberOfNumbers(10));
        }
    }
  • Code
    • import java.util.stream.Collectors;
    • import java.util.stream.IntStream;
    • import java.util.stream.Stream;
    • class Solution {
    • public static String numberOfNumbers(int value) {
    • String delimiter = getDelimiterFor(value);
    • return IntStream.rangeClosed(0, Math.abs(value))
    • return IntStream.rangeClosed(1, Math.abs(value))
    • .mapToObj(Solution::repeatByItself)
    • .filter(Solution::notBlank)
    • .collect(Collectors.joining(delimiter));
    • }
    • private static String getDelimiterFor(int value){
    • return value > 0 ? "-" : "+";
    • }
    • private static String repeatByItself(int i){
    • return String.valueOf(i).repeat(i);
    • }
    • private static boolean notBlank(String s){
    • return !s.isBlank();
    • }
    • }